DeploymentConfig

Resumen de una línea

Recurso de OpenShift que extiende el concepto de Deployment con triggers automáticos, lifecycle hooks pre/post deploy, y ciclo de vida avanzado.

Definición

DeploymentConfig es un recurso nativo de OpenShift que gestiona el ciclo de vida completo de despliegues con características adicionales no presentes en Kubernetes Deployment:

  • Triggers automáticos (imagen, configuración)
  • Hooks de ciclo de vida (pre-deploy, post-deploy)
  • Rolling updates configurables
  • Rollbacks con historial

Características Principales

Triggers Automáticos

triggers:
  - type: ImageChange
    imageChangeParams:
      automatic: true
      from:
        kind: ImageStreamTag
        name: myapp:latest
  - type: ConfigChange

Cuando cambia la imagen o configuración, automáticamente se redeploy

Lifecycle Hooks

strategy:
  type: Rolling
  rollingParams:
    pre:
      failurePolicy: Abort
      execNewPod:
        containerName: app
        command: ['/bin/sh', '-c', 'npm run migrate']
    post:
      failurePolicy: Ignore
      execNewPod:
        containerName: app
        command: ['/bin/sh', '-c', 'npm run seed']

Pre-deploy: Ejecuta antes de iniciar nuevos Pods (migraciones, validaciones) Post-deploy: Ejecuta después (seed data, notificaciones)

Rolling Updates

strategy:
  type: Rolling
  rollingParams:
    updatePeriodSeconds: 1
    intervalSeconds: 1
    timeoutSeconds: 600
    maxSurge: 1
    maxUnavailable: 1
  • maxSurge: Pods adicionales permitidos durante update
  • maxUnavailable: Pods no disponibles permitidos
  • Sin downtime → actualización progresiva

Comparación: Deployment vs DeploymentConfig

AspectoDeployment (K8s)DeploymentConfig (OpenShift)
TriggersNinguno (manual)ImageChange, ConfigChange, Manual
HooksNoPre/post deploy
RollingBásicoConfigurable (maxSurge, maxUnavailable)
HistorialReplicaSetsDeploymentConfigs numerados
ImageStreamNo integraciónIntegración automática
Reclamos de revisorNingunoSoportado

Ciclo de Vida

Trigger ocurre (ImageChange, ConfigChange, Manual)
    ↓
Crea nuevo Deployment (revision 2, 3, ...)
    ↓
Ejecuta pre-deploy hook (si existe)
    ↓
Rolling update inicia
    ├─ Crea Pod nuevo con v2
    ├─ Termina Pod viejo v1
    ├─ Crea Pod nuevo con v2
    ├─ Termina Pod viejo v1
    └─ Todos en v2 → ready
    ↓
Ejecuta post-deploy hook (si existe)
    ↓
Deployment completado
    ↓
Historial disponible para rollback

Gestión

Crear DeploymentConfig

oc create deploymentconfig myapp --image=myimage:latest

Ver DeploymentConfigs

oc get dc
oc describe dc myapp

Ver historial de deployments

oc rollout history dc/myapp
oc rollout history dc/myapp --revision=2

Hacer rollback

# A despliegue anterior
oc rollout undo dc/myapp
 
# A versión específica
oc rollout undo dc/myapp --to-revision=1

Redeploy manual

oc rollout latest dc/myapp

Ventajas

VentajaDescripción
Automatización completaTriggers, hooks, sin intervención manual
Migraciones integradasPre-deploy ejecuta scripts (migraciones BD)
Seed dataPost-deploy siembra datos iniciales
ImageStream integrationRedeploy automático cuando imagen cambia
Historial detalladoRollback rápido a cualquier revisión
Control finoRolling parameters (surge, unavailable, timing)

Desventajas

DesventajaDescripción
OpenShift-specificNo portable a Kubernetes puro
ComplejidadMás características = más configuración
Deprecación potencialRed Hat usa Deployment + Tekton en versiones nuevas

Relaciones

Conecta con

Nota Histórica

DeploymentConfig fue el método primario de OpenShift para despliegues antes de versiones recientes. Ahora:

  • OpenShift 4.x: Todavía soportado, pero Deployment es recomendado
  • Tendencia: Migrar a Deployment + Tekton para CI/CD

Para proyectos nuevos, considera Deployment nativo en lugar de DeploymentConfig, especialmente si portabilidad a K8s puro importa.

Fuentes