:_mod-docs-content-type: ASSEMBLY [id="what-deployments-are"] = Understanding deployments include::_attributes/common-attributes.adoc[] :context: what-deployments-are toc::[] The `Deployment` and `DeploymentConfig` API objects in {product-title} provide two similar but different methods for fine-grained management over common user applications. They are composed of the following separate API objects: * A `Deployment` or `DeploymentConfig` object, either of which describes the desired state of a particular component of the application as a pod template. * `Deployment` objects involve one or more _replica sets_, which contain a point-in-time record of the state of a deployment as a pod template. Similarly, `DeploymentConfig` objects involve one or more _replication controllers_, which preceded replica sets. * One or more pods, which represent an instance of a particular version of an application. Use `Deployment` objects unless you need a specific feature or behavior provided by `DeploymentConfig` objects. include::snippets/deployment-config-deprecated.adoc[] //// Update when converted: [role="_additional-resources"] .Additional resources xref:../../applications/deployments/advanced_deployment_strategies.adoc#graceful-termination[graceful shutdown] xref:../../applications/basic_deployment_operations.adoc#triggers[Triggers] xref:../../applications/deployment_strategies.adoc#strategies[strategies] xref:../../applications/deployment_strategies.adoc#lifecycle-hooks[hooks] xref:../../applications/basic_deployment_operations.adoc#rolling-back-a-deployment[rollbacks] xref:../../applications/basic_deployment_operations.adoc#scaling[scaling] xref:../../dev_guide/pod_autoscaling.adoc#dev-guide-pod-autoscaling[autoscaling] //// [id="what-deployments-are-build-blocks"] == Building blocks of a deployment Deployments and deployment configs are enabled by the use of native Kubernetes API objects `ReplicaSet` and `ReplicationController`, respectively, as their building blocks. Users do not have to manipulate replica sets, replication controllers, or pods owned by `Deployment` or `DeploymentConfig` objects. The deployment systems ensure changes are propagated appropriately. [TIP] ==== If the existing deployment strategies are not suited for your use case and you must run manual steps during the lifecycle of your deployment, then you should consider creating a custom deployment strategy. ==== The following sections provide further details on these objects. include::modules/deployments-replicasets.adoc[leveloffset=+2] include::modules/deployments-replicationcontrollers.adoc[leveloffset=+2] include::modules/deployments-kube-deployments.adoc[leveloffset=+1] include::modules/deployments-deploymentconfigs.adoc[leveloffset=+1] include::modules/deployments-comparing-deploymentconfigs.adoc[leveloffset=+1] //// Update when converted: [role="_additional-resources"] .Additional resources - xref:../../dev_guide/managing_images.adoc#dev-guide-managing-images[Imagestreams] - xref:../../dev_guide/deployments/deployment_strategies.adoc#lifecycle-hooks[Lifecycle hooks] - xref:../../dev_guide/deployments/deployment_strategies.adoc#custom-strategy[Custom deployment strategies] ////