6.3. Gestion des processus de déploiement


6.3.1. Gestion des objets de déploiementConfig

Important

Depuis Red Hat OpenShift Service sur AWS 4.14, les objets DeploymentConfig sont obsolètes. Les objets DeploymentConfig sont toujours pris en charge, mais ne sont pas recommandés pour les nouvelles installations. Il n’y aura que des problèmes critiques et liés à la sécurité.

Au lieu de cela, utilisez des objets de déploiement ou une autre alternative pour fournir des mises à jour déclaratives pour les pods.

Les objets DeploymentConfig peuvent être gérés à partir du service Red Hat OpenShift sur la page Charges de travail de la console web AWS ou en utilisant le CLI oc. Les procédures suivantes montrent l’utilisation de CLI sauf indication contraire.

6.3.1.1. Démarrage d’un déploiement

Démarrez un déploiement pour commencer le processus de déploiement de votre application.

Procédure

  1. Afin de démarrer un nouveau processus de déploiement à partir d’un objet DeploymentConfig existant, exécutez la commande suivante:

    $ oc rollout latest dc/<name>
    Copy to Clipboard Toggle word wrap
    Note

    Lorsqu’un processus de déploiement est déjà en cours, la commande affiche un message et un nouveau contrôleur de réplication ne sera pas déployé.

6.3.1.2. Affichage d’un déploiement

Il est possible d’afficher un déploiement pour obtenir des informations de base sur toutes les révisions disponibles de votre application.

Procédure

  1. Afin d’afficher des détails sur tous les contrôleurs de réplication récemment créés pour l’objet DeploymentConfig fourni, y compris tout processus de déploiement en cours d’exécution, exécutez la commande suivante:

    $ oc rollout history dc/<name>
    Copy to Clipboard Toggle word wrap
  2. Afin d’afficher les détails spécifiques à une révision, ajouter le drapeau --révision:

    $ oc rollout history dc/<name> --revision=1
    Copy to Clipboard Toggle word wrap
  3. Afin d’obtenir des informations plus détaillées sur un objet DeploymentConfig et sa dernière révision, utilisez la commande de description oc:

    $ oc describe dc <name>
    Copy to Clipboard Toggle word wrap

6.3.1.3. La réessayer d’un déploiement

Lorsque la révision actuelle de votre objet DeploymentConfig n’a pas été déployée, vous pouvez redémarrer le processus de déploiement.

Procédure

  1. De redémarrer un processus de déploiement défaillant:

    $ oc rollout retry dc/<name>
    Copy to Clipboard Toggle word wrap

    Lorsque la dernière révision de celle-ci a été déployée avec succès, la commande affiche un message et le processus de déploiement n’est pas récupéré.

    Note

    La réessayer d’un déploiement redémarre le processus de déploiement et ne crée pas de nouvelle révision du déploiement. Le contrôleur de réplication redémarré a la même configuration qu’il avait quand il a échoué.

6.3.1.4. Faire reculer un déploiement

Les redémarrages retournent une application à une révision précédente et peuvent être effectués à l’aide de l’API REST, du CLI ou de la console Web.

Procédure

  1. Afin de revenir à la dernière révision réussie de votre configuration:

    $ oc rollout undo dc/<name>
    Copy to Clipboard Toggle word wrap

    Le modèle de l’objet DeploymentConfig est retourné pour correspondre à la révision de déploiement spécifiée dans la commande d’annulation, et un nouveau contrôleur de réplication est lancé. Dans le cas où aucune révision n’est spécifiée avec --to-révision, la dernière révision déployée avec succès est utilisée.

  2. Les déclencheurs de changement d’image sur l’objet DeploymentConfig sont désactivés dans le cadre du rollback afin d’éviter le démarrage accidentel d’un nouveau processus de déploiement peu après la fin du retour.

    Afin de réactiver les déclencheurs de changement d’image:

    $ oc set triggers dc/<name> --auto
    Copy to Clipboard Toggle word wrap
Note

Les configurations de déploiement prennent également en charge le retour automatique à la dernière révision réussie de la configuration au cas où le dernier processus de déploiement échouerait. Dans ce cas, le dernier modèle qui n’a pas réussi à déployer reste intact par le système et c’est aux utilisateurs de fixer leurs configurations.

Il est possible d’ajouter une commande à un conteneur, ce qui modifie le comportement de démarrage du conteneur en annulant l’ENTRYPOINT de l’image. Ceci est différent d’un crochet de cycle de vie, qui peut être exécuté une fois par déploiement à un moment spécifié.

Procédure

  1. Ajoutez les paramètres de commande au champ spec de l’objet DeploymentConfig. Il est également possible d’ajouter un champ args, qui modifie la commande (ou l’ENTRYPOINT si la commande n’existe pas).

    kind: DeploymentConfig
    apiVersion: apps.openshift.io/v1
    metadata:
      name: example-dc
    # ...
    spec:
      template:
    # ...
        spec:
         containers:
         - name: <container_name>
           image: 'image'
           command:
             - '<command>'
           args:
             - '<argument_1>'
             - '<argument_2>'
             - '<argument_3>'
    Copy to Clipboard Toggle word wrap

    À titre d’exemple, pour exécuter la commande java avec les arguments -jar et /opt/app-root/springboots2idemo.jar:

    kind: DeploymentConfig
    apiVersion: apps.openshift.io/v1
    metadata:
      name: example-dc
    # ...
    spec:
      template:
    # ...
        spec:
          containers:
            - name: example-spring-boot
              image: 'image'
              command:
                - java
              args:
                - '-jar'
                - /opt/app-root/springboots2idemo.jar
    # ...
    Copy to Clipboard Toggle word wrap

6.3.1.6. Affichage des journaux de déploiement

Procédure

  1. Diffuser les journaux de la dernière révision pour un objet de déploiement donnéConfig:

    $ oc logs -f dc/<name>
    Copy to Clipboard Toggle word wrap

    En cas d’exécution ou d’échec de la dernière révision, la commande renvoie les journaux du processus responsable du déploiement de vos pods. En cas de succès, il renvoie les journaux d’un pod de votre application.

  2. En outre, vous pouvez afficher les journaux des anciens processus de déploiement défaillants, si et seulement si ces processus (anciens contrôleurs de réplication et leurs pods de déploiement) existent et n’ont pas été élavés ou supprimés manuellement:

    $ oc logs --version=1 dc/<name>
    Copy to Clipboard Toggle word wrap

6.3.1.7. Déclencheurs de déploiement

L’objet DeploymentConfig peut contenir des déclencheurs, ce qui entraîne la création de nouveaux processus de déploiement en réponse aux événements à l’intérieur du cluster.

Avertissement

Lorsqu’aucun déclencheur n’est défini sur un objet DeploymentConfig, un déclencheur de modification de configuration est ajouté par défaut. Lorsque les déclencheurs sont définis comme un champ vide, les déploiements doivent être démarrés manuellement.

Configurer les déclencheurs de déploiement de changement

Le déclencheur de modification de configuration se traduit par un nouveau contrôleur de réplication chaque fois que des modifications de configuration sont détectées dans le modèle de pod de l’objet DeploymentConfig.

Note

Lorsqu’un déclencheur de modification de configuration est défini sur un objet DeploymentConfig, le premier contrôleur de réplication est automatiquement créé peu de temps après la création de l’objet DeploymentConfig et il n’est pas mis en pause.

Déclencheur de déploiement de changement de configuration

kind: DeploymentConfig
apiVersion: apps.openshift.io/v1
metadata:
  name: example-dc
# ...
spec:
# ...
  triggers:
    - type: "ConfigChange"
Copy to Clipboard Toggle word wrap

Déclencheurs de déploiement de changement d’image

Le déclencheur de changement d’image entraîne un nouveau contrôleur de réplication chaque fois que le contenu d’une balise de flux d’image change (lorsqu’une nouvelle version de l’image est poussée).

Déclencheur de déploiement de changement d’image

kind: DeploymentConfig
apiVersion: apps.openshift.io/v1
metadata:
  name: example-dc
# ...
spec:
# ...
  triggers:
    - type: "ImageChange"
      imageChangeParams:
        automatic: true 
1

        from:
          kind: "ImageStreamTag"
          name: "origin-ruby-sample:latest"
          namespace: "myproject"
        containerNames:
          - "helloworld"
Copy to Clipboard Toggle word wrap

1
Lorsque le champ imageChangeParams.automatic est défini sur false, le déclencheur est désactivé.

Avec l’exemple ci-dessus, lorsque la dernière valeur de balise du flux d’image de l’échantillon d’origine change et que la nouvelle valeur de l’image diffère de l’image actuelle spécifiée dans le conteneur helloworld de l’objet DeploymentConfig, un nouveau contrôleur de réplication est créé à l’aide de la nouvelle image pour le conteneur helloworld.

Note

Lorsqu’un déclencheur de changement d’image est défini sur un objet DeploymentConfig (avec un déclencheur de modification de configuration et automatique=false, ou avec automatic=true) et que la balise de flux d’image pointée par le déclencheur de changement d’image n’existe pas encore, le processus de déploiement initial démarre automatiquement dès qu’une image est importée ou poussée par une construction vers la balise de flux d’image.

6.3.1.7.1. Définir les déclencheurs de déploiement

Procédure

  1. Il est possible de définir les déclencheurs de déploiement d’un objet DeploymentConfig à l’aide de la commande déclencheurs oc. À titre d’exemple, pour définir un déclencheur de changement d’image, utilisez la commande suivante:

    $ oc set triggers dc/<dc_name> \
        --from-image=<project>/<image>:<tag> -c <container_name>
    Copy to Clipboard Toggle word wrap

6.3.1.8. Définition des ressources de déploiement

Le déploiement est complété par un pod qui consomme des ressources (mémoire, CPU et stockage éphémère) sur un nœud. Les pods consomment par défaut des ressources de nœuds non liés. Cependant, si un projet spécifie les limites de conteneurs par défaut, les pods consomment des ressources jusqu’à ces limites.

Note

La limite de mémoire minimale pour un déploiement est de 12 Mo. En cas de démarrage d’un conteneur en raison d’un événement de Pod de mémoire impossible, la limite de mémoire est trop faible. Augmentez ou supprimez la limite de mémoire. La suppression de la limite permet aux gousses de consommer des ressources de nœuds non limitées.

Il est également possible de limiter l’utilisation des ressources en spécifiant les limites de ressources dans le cadre de la stratégie de déploiement. Les ressources de déploiement peuvent être utilisées avec les stratégies de déploiement, de recréation, de roulement ou de déploiement personnalisées.

Procédure

  1. Dans l’exemple suivant, chacune des ressources, cpu, mémoire et stockage éphémère est facultative:

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: hello-openshift
    # ...
    spec:
    # ...
      type: "Recreate"
      resources:
        limits:
          cpu: "100m" 
    1
    
          memory: "256Mi" 
    2
    
          ephemeral-storage: "1Gi" 
    3
    Copy to Clipboard Toggle word wrap
    1
    CPU est en unités CPU: 100m représente 0,1 unité CPU (100 * 1e-3).
    2
    la mémoire est en octets: 256Mi représente 268435456 octets (256 * 2 ^ 20).
    3
    le stockage éphémère est en octets: 1Gi représente 1073741824 octets (2 ^ 30).

    Cependant, si un quota a été défini pour votre projet, l’un des deux éléments suivants est requis:

    • D’une section de ressources assortie d’une demande explicite:

      kind: Deployment
      apiVersion: apps/v1
      metadata:
        name: hello-openshift
      # ...
      spec:
      # ...
        type: "Recreate"
        resources:
          requests: 
      1
      
            cpu: "100m"
            memory: "256Mi"
            ephemeral-storage: "1Gi"
      Copy to Clipboard Toggle word wrap
      1
      L’objet demande contient la liste des ressources qui correspondent à la liste des ressources dans le quota.
    • Limite définie dans votre projet, où les valeurs par défaut de l’objet LimitRange s’appliquent aux pods créés au cours du processus de déploiement.

    Afin de définir les ressources de déploiement, choisissez l’une des options ci-dessus. Autrement, déployer la création de pod échoue, invoquant un défaut de satisfaire les quotas.

6.3.1.9. Evolution manuelle

En plus des retours en arrière, vous pouvez exercer un contrôle à grains fins sur le nombre de répliques en les évoluant manuellement.

Note

Les pods peuvent également être mis à l’échelle automatique à l’aide de la commande oc autoscale.

Procédure

  1. Afin de mettre à l’échelle manuellement un objet DeploymentConfig, utilisez la commande oc scale. À titre d’exemple, la commande suivante définit les répliques de l’objet frontend DeploymentConfig à 3.

    $ oc scale dc frontend --replicas=3
    Copy to Clipboard Toggle word wrap

    Le nombre de répliques finit par se propager à l’état souhaité et actuel du déploiement configuré par le frontend objet DeploymentConfig.

Ajoutez un secret à votre objet DeploymentConfig afin qu’il puisse accéder aux images d’un référentiel privé. Cette procédure montre la méthode Red Hat OpenShift Service sur la console web AWS.

Procédure

  1. Créez un nouveau projet.
  2. Accédez aux charges de travail Secrets.
  3. Créez un secret qui contient des informations d’identification pour accéder à un référentiel privé d’images.
  4. Accédez à Workloads DeploymentConfigs.
  5. Créer un objet DeploymentConfig.
  6. Dans la page de l’éditeur d’objet DeploymentConfig, définissez le secret Pull et enregistrez vos modifications.

Il est possible d’exécuter un pod avec un compte de service autre que le compte par défaut.

Procédure

  1. Éditer l’objet DeploymentConfig:

    $ oc edit dc/<deployment_config>
    Copy to Clipboard Toggle word wrap
  2. Ajoutez les paramètres serviceAccount et serviceAccountName au champ spec, et spécifiez le compte de service que vous souhaitez utiliser:

    apiVersion: apps.openshift.io/v1
    kind: DeploymentConfig
    metadata:
      name: example-dc
    # ...
    spec:
    # ...
      securityContext: {}
      serviceAccount: <service_account>
      serviceAccountName: <service_account>
    Copy to Clipboard Toggle word wrap
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat