Kubernetes Deployment YAML Generator & Manifest Builder

Kubernetes Deployment YAML Generator & Manifest Builder

Générez des manifestes Kubernetes Deployment prêts pour la production avec réplicas de pods, limites de ressources (requests/limits), sondes de santé et stratégies de rolling update sans interruption.

Préréglages :
Entrée
Nombre maximal de pods au-dessus du nombre de réplicas souhaité
Définir sur 0 pour des déploiements 100% sans interruption
:
:
:
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épliques de Pod

Surge: 25% | Max indisponible: 0

Resource Quotas & AllocationGaranti
CPU: 250m / 1000m

Mém: 256Mi / 512Mi

SécuritéNiveau A+
100 / 100 Préparation

Sondes: 2 /3 actives

Exécution Locale Zero-Knowledge

Tous les traitements, analyses et générations s'exécutent strictement dans la mémoire de votre navigateur. Zéro transmission vers un serveur externe.

Moteur Réactif Submilliseconde

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

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Référence technique et guide d'architecture

Guide Développeur : Générateur de YAML et Manifestes Kubernetes Deployment — Guide de référence

Générez des manifestes Kubernetes Deployment prêts pour la production avec réplicas de pods, limites de ressources (requests/limits), sondes de santé et stratégies de rolling update sans interruption.

Paramètres clés et contrôles

spec.replicasinteger

Nombre d'instances de pods souhaitées exécutées simultanément sur les nœuds de calcul.

Par défaut : 1
spec.template.spec.containers[*].imagestring

Dépôt et tag de l'image de conteneur OCI/Docker (ex. 'nginx:1.25-alpine').

Par défaut : Requis
spec.template.spec.containers[*].resourcesobject

Demandes (requests: allocation minimale garantie) et limites (limits: plafond maximal avant bridage ou OOMKill) en processeur et mémoire.

Par défaut : Optionnel (Fortement recommandé)
spec.strategyobject

Stratégie de mise à jour du déploiement: 'RollingUpdate' sans interruption de service ou 'Recreate' pour un remplacement simultané.

Par défaut : RollingUpdate
spec.template.spec.containers[*].livenessProbeobject

Sonde de santé déclenchant le redémarrage automatique du conteneur en cas de blocage interne (deadlock).

Par défaut : Optionnel

Conseils de pro et bonnes practices

Spécifiez requests pour garantir le

Spécifiez requests pour garantir le placement par l'ordonnanceur et limits pour prémunir le nœud contre les fuites de mémoire. Aligner requêtes et limites de mémoire confère la classe de qualité de service Guaranteed.

Configurez maxUnavailable

Configurez maxUnavailable: 0 et maxSurge: '25%' (ou 1) pour les services web critiques afin de préserver l'intégralité de la capacité de traitement pendant les mises à jour progressives.

Utilisez les sondes de préparation

Utilisez les sondes de préparation (readiness) pour valider l'initialisation et la connectivité aux bases de données avant d'acheminer le trafic, et réservez les sondes de vitalité (liveness) aux blocages critiques afin d'éviter les tempêtes de redémarrage.

Figez systématiquement des tags de

Figez systématiquement des tags de version sémantiques ou des empreintes cryptographiques immuables SHA-256 pour garantir des déploiements prévisibles et des retours arrière immédiats.

Pièges courants et dépannage

CrashLoopBackOff ou OOMKilled (Code de sortie 137)

Le conteneur plante de façon répétée au lancement ou dépasse sa limite de mémoire autorisée (limits.memory), provoquant son arrêt immédiat par l'OOM Killer. Analysez avec kubectl describe pod <name> et logs --previous; augmentez resources.limits.memory.

Déploiement progressif bloqué en statut 'Pending'

Les nouveaux pods ne peuvent être ordonnancés car les requêtes de ressources (resources.requests) excèdent la capacité résiduelle des nœuds du cluster. Inspectez les nœuds via kubectl describe nodes ou activez le Cluster Autoscaler.

Erreur d'immutabilité du sélecteur de labels (Selector is immutable)

Kubernetes interdit la modification du champ spec.selector sur un Deployment existant. Supprimez le déploiement en conservant les pods en cours d'exécution (kubectl delete deploy <name> --cascade=orphan) puis appliquez le nouveau manifeste.

Foire aux questions (FAQ)

Quelle est la différence entre un Deployment, un StatefulSet et un DaemonSet ?▼

Un Deployment gère des charges de travail sans état (stateless) où chaque réplica de pod est interchangeable. Un StatefulSet fournit des identifiants réseau stables et des volumes persistants pour les bases de données. Un DaemonSet déploie exactement un pod sur chaque nœud éligible du cluster.

Pourquoi privilégier la stratégie RollingUpdate par rapport à Recreate ?▼

RollingUpdate déploie progressivement de nouvelles versions de pods et ne désactive les anciennes qu'après validation de leur bon fonctionnement, garantissant une disponibilité ininterrompue. Recreate supprime l'ensemble des pods actifs avant de recréer les nouveaux, entraînant une indisponibilité temporaire du service.

Comment Kubernetes associe-t-il les Pods à un Deployment ?▼

Par le biais de sélecteurs d'étiquettes (spec.selector.matchLabels). Le contrôleur de Deployment surveille en continu les pods dont les métadonnées (spec.template.metadata.labels) correspondent à ces critères afin d'ajuster le nombre de réplicas en temps réel.

Quel est le rôle d'un Pod Disruption Budget (PDB) avec un Deployment ?▼

Alors que le Deployment spécifie le nombre souhaité de réplicas, un PDB définit le nombre minimal ou le pourcentage de pods devant impérativement rester opérationnels lors d'opérations de maintenance volontaires (comme le drainage d'un nœud ou une mise à niveau du cluster).

Outils et utilitaires connexes

Tous les outils →