Kubernetes Deployment YAML Generator & Manifest Builder

Kubernetes Deployment YAML Generator & Manifest Builder

Genere manifiestos de Kubernetes Deployment listos para producción con réplicas de pods, límites de recursos (requests/limits), sondas de salud y estrategias de rolling update.

Preajustes:
Entrada
Pods máximos por encima del número deseado de réplicas
Establecer en 0 para implementaciones 100% sin tiempo de inactividad
:
:
:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-api-gateway
  namespace: production
  labels:
    app: "web-api-gateway"
    tier: "backend"
    env: "production"
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "8080"
    prometheus.io/path: "/metrics"
spec:
  replicas: 3
  selector:
    matchLabels:
      app: "web-api-gateway"
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 0
  minReadySeconds: 5
  template:
    metadata:
      labels:
        app: "web-api-gateway"
        tier: "backend"
        env: "production"
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "8080"
        prometheus.io/path: "/metrics"
    spec:
      serviceAccountName: web-api-sa
      securityContext:
        runAsNonRoot: true
        runAsUser: 10001
        runAsGroup: 10001
      containers:
      - name: api-server
        image: ghcr.io/acme-corp/api-gateway:v2.4.1
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 8080
          protocol: TCP
        - name: metrics
          containerPort: 9090
          protocol: TCP
        securityContext:
          readOnlyRootFilesystem: true
          allowPrivilegeEscalation: false
          capabilities:
            drop:
            - ALL
        resources:
          requests:
            cpu: "250m"
            memory: "256Mi"
            ephemeral-storage: "50Mi"
          limits:
            cpu: "1000m"
            memory: "512Mi"
            ephemeral-storage: "200Mi"
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
          initialDelaySeconds: 15
          periodSeconds: 10
          timeoutSeconds: 3
          successThreshold: 1
          failureThreshold: 3
        readinessProbe:
          httpGet:
            path: /ready
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5
          timeoutSeconds: 2
          successThreshold: 1
          failureThreshold: 2
        env:
        - name: NODE_ENV
          value: "production"
        - name: PORT
          value: "8080"
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: db-credentials
              key: password
        - name: CONFIG_JSON
          valueFrom:
            configMapKeyRef:
              name: app-config
              key: settings.json
        volumeMounts:
        - name: tmp-cache
          mountPath: /tmp
      volumes:
      - name: tmp-cache
        emptyDir: {}
      nodeSelector:
        kubernetes.io/os: "linux"
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - "web-api-gateway"
              topologyKey: "kubernetes.io/hostname"
Replicas & Rollout StrategyRollingUpdate
3 Réplicas de Pod

Exceso: 25% | Máx. no disponible: 0

Resource Quotas & AllocationGarantizado
CPU: 250m / 1000m

Mem: 256Mi / 512Mi

SeguridadGrado A+
100 / 100 Preparación

Sondas: 2 /3 activas

Ejecución Local de Conocimiento Cero

Todo el procesamiento, análisis y generación de código se ejecutan estrictamente en la memoria del navegador. Cero subidas a servidores externos.

Motor Reactivo de Submilisegundos

All data payloads remain strictly local with zero external server communication.

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Referencia técnica y guía de arquitectura

Guía de Desarrollo de Generador de YAML y Manifiestos de Kubernetes Deployment — Guía de referencia

Genere manifiestos de Kubernetes Deployment listos para producción con réplicas de pods, límites de recursos (requests/limits), sondas de salud y estrategias de rolling update.

Parámetros clave y controles

spec.replicasinteger

Número deseado de instancias de pods que se ejecutarán simultáneamente en los nodos de trabajo.

Por defecto: 1
spec.template.spec.containers[*].imagestring

Repositorio y etiqueta de la imagen del contenedor OCI/Docker (p. ej., 'nginx:1.25-alpine').

Por defecto: Requerido
spec.template.spec.containers[*].resourcesobject

Solicitudes (requests: asignación mínima garantizada) y límites (limits: tope máximo antes de estrangulamiento o OOMKill) de CPU y memoria.

Por defecto: Opcional (Altamente recomendado)
spec.strategyobject

Estrategia de actualización del despliegue: 'RollingUpdate' sin tiempo de inactividad o 'Recreate' para reemplazo simultáneo.

Por defecto: RollingUpdate
spec.template.spec.containers[*].livenessProbeobject

Sonda de verificación que reinicia automáticamente el contenedor si este entra en un interbloqueo o falla.

Por defecto: Opcional

Consejos profesionales y mejores prácticas

Defina requests para garantizar la

Defina requests para garantizar la asignación por el scheduler y limits para evitar el colapso del nodo por fugas de memoria. Igualar request y limit de memoria otorga la clase QoS Guaranteed.

Configure maxUnavailable

Configure maxUnavailable: 0 y maxSurge: '25%' (o 1) en servicios de producción para garantizar cero interrupciones en conexiones HTTP durante despliegues progresivos.

Utilice readiness probes para

Utilice readiness probes para verificar dependencias y calentamiento inicial antes de recibir tráfico, y reserve liveness probes estrictamente para bloqueos reales para evitar reinicios en cascada.

Fije siempre etiquetas de versión

Fije siempre etiquetas de versión semántica inmutables o resúmenes criptográficos SHA-256 para permitir rollbacks fiables e implementaciones reproducibles.

Errores comunes y solución de problemas

CrashLoopBackOff o OOMKilled (Código de salida 137)

El contenedor falla continuamente al arrancar o excede el límite de memoria configurado (limits.memory), provocando su terminación por el kernel. Ejecute kubectl describe pod <name> y logs --previous; aumente resources.limits.memory.

Despliegue progresivo atascado en estado 'Pending'

Los nuevos pods no pueden programarse porque los resources.requests sobrepasan la capacidad disponible en los nodos del clúster. Verifique el estado de los nodos con kubectl describe nodes o habilite el Cluster Autoscaler.

Error de inmutabilidad del selector (Selector is immutable)

Kubernetes no permite modificar spec.selector en un Deployment existente. Elimine el deployment conservando los pods huérfanos (kubectl delete deploy <name> --cascade=orphan) y aplique el nuevo manifiesto.

Preguntas frecuentes (FAQ)

¿Cuál es la diferencia entre un Deployment, un StatefulSet y un DaemonSet?▼

Un Deployment gestiona aplicaciones sin estado (stateless) donde cualquier réplica es intercambiable. Un StatefulSet proporciona identidades de red y almacenamiento persistente ordenado para bases de datos. Un DaemonSet ejecuta exactamente una réplica en cada nodo del clúster.

¿Por qué usar la estrategia RollingUpdate en lugar de Recreate?▼

RollingUpdate levanta nuevas versiones de pods progresivamente mientras drena las versiones anteriores, asegurando cero tiempo de inactividad. Recreate destruye todos los pods activos antes de crear los nuevos, causando una interrupción total del servicio.

¿Cómo vincula Kubernetes los Pods a un Deployment?▼

Mediante selectores de etiquetas (spec.selector.matchLabels). El controlador de Deployment supervisa de forma continua los pods cuyas etiquetas (spec.template.metadata.labels) coinciden con el selector, reconciliando el número de réplicas en ejecución.

¿Cómo interactúa un Pod Disruption Budget (PDB) con un Deployment?▼

Mientras que las réplicas definen la cantidad deseada de pods, un PDB establece el número mínimo o porcentaje de pods que deben permanecer disponibles durante interrupciones planificadas, como el drenado de nodos para mantenimiento o actualizaciones.

Herramientas y utilidades relacionadas

Todas las herramientas →