What is the different between openshift deploymentconfig and kubernetes deployment
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Introduction
OpenShift DeploymentConfig and Kubernetes Deployment both roll out pods, but they are not the same resource or controller model. Deployment is the standard Kubernetes mechanism, while DeploymentConfig is an OpenShift-specific resource with trigger and hook behavior that exists only in OpenShift.
Start With the Kubernetes Deployment
A Kubernetes Deployment is the portable default. It manages ReplicaSets, supports rolling updates, and is understood by the broader Kubernetes ecosystem.
If your goal is maximum portability across clusters, CI pipelines, operators, and documentation, Deployment is usually the better starting point.
What DeploymentConfig Adds in OpenShift
DeploymentConfig is an OpenShift resource from apps.openshift.io/v1. It can react to OpenShift-specific triggers, especially image stream updates and config changes.
That image-change trigger is one of the main reasons DeploymentConfig exists. When an image stream tag changes, OpenShift can trigger a rollout automatically without external automation.
Compare the Controller Model
The difference is not only YAML syntax. The rollout logic is different too.
Deployment:
- is part of upstream Kubernetes
- manages ReplicaSets
- is the standard object most tooling expects
DeploymentConfig:
- is specific to OpenShift
- supports OpenShift deployment triggers
- supports deployment hooks and OpenShift-specific rollout behavior
So the choice is really about operational behavior and platform dependence, not about two equivalent spellings of the same thing.
How to Choose Between Them
Use Deployment when:
- you want Kubernetes-standard behavior
- you want manifests that stay portable
- you do not need OpenShift image stream triggers
Use DeploymentConfig when:
- you rely on OpenShift image stream integration
- you want OpenShift config-change or image-change triggers
- you need behavior tied specifically to the OpenShift platform
In other words, DeploymentConfig is for OpenShift-specific workflow needs. Deployment is for standard Kubernetes-style application rollout.
Migration Considerations
Teams moving from older OpenShift manifests sometimes migrate from DeploymentConfig to Deployment to reduce platform lock-in. That can be a good simplification, but it is not only a search-and-replace exercise.
You also need to think about:
- how image updates will trigger rollouts afterward
- whether any hooks or deployment policies must be replaced
- whether external automation now needs to do work previously handled by OpenShift triggers
If you remove DeploymentConfig without replacing the behavior you depended on, the manifest may apply successfully while your operational workflow quietly changes.
Common Pitfalls
- Assuming
DeploymentConfigis just OpenShift's name for a normal KubernetesDeployment. - Choosing
DeploymentConfigby default even when no OpenShift-specific trigger behavior is needed. - Forgetting that image stream triggers are an OpenShift-specific feature, not part of a normal Kubernetes
Deployment. - Migrating to
Deploymentwithout replacing the rollout behavior previously driven by triggers or hooks. - Comparing only manifest syntax instead of comparing controller behavior and platform ownership.
Summary
- Kubernetes
Deploymentis the standard, portable rollout resource. - OpenShift
DeploymentConfigis an OpenShift-specific resource with trigger and hook behavior. - Use
Deploymentfor portability and ecosystem alignment. - Use
DeploymentConfigonly when you need OpenShift-specific rollout features. - Treat migration between them as an operational change, not just a YAML rename.
Related reading
- What is the equivalent for depends_on in kubernetes
- What is the konnectivity service for Kubernetes?
- What is the meaning of CPU and core in Kubernetes?
- What is the meaning of ImagePullBackOff status on a Kubernetes pod?
- What is the Docker Subnet used for?
- What is the exact difference between Docker EE Enterprise Edition, Docker CE Community Edition and Docker Custom Support
- What is the meaning of the vhost in RabbitMQ?
- What is the pod_cpu_utilization_over_pod_limit compare to pod_cpu_utilization

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.