Déploiement OKE bleu/vert

Créez un pipeline de déploiement à l'aide de la stratégie de publication bleu/vert pour Kubernetes Engine (OKE).

Prérequis

Les prérequis sont les suivants :

  • Ayez un pipeline de déploiement, un environnement de cluster Kubernetes vers lequel effectuer le déploiement et des artefacts. Les artefacts peuvent être définis de façon incorporée ou se trouver dans Artifact Registry.
  • Comme le cluster OKE n'a pas de contrôleur d'entrée par défaut, un contrôleur d'entrée NGINX doit être configuré pour la stratégie de déploiement bleu/vert. Le nom entrant NGINX doit être défini dans le manifeste Kubernetes. Un contrôleur d'entrée est une application Kubernetes qui achemine le trafic en fonction d'une spécification entrante. Le contrôleur d'entrée NGINX surveille les ressources entrantes pour l'équilibrage de charge. Le trafic passe de l'environnement de préparation à l'environnement de production en mettant à jour la ressource entrante. Pour plus d'informations, reportez-vous à Configuration d'un contrôleur d'entrée sur un cluster.
  • Pour définir les environnements de déploiement bleu et vert, vous devez créer deux espaces de noms sur le cluster Kubernetes. Vous ne devez pas indiquer d'espaces de noms dans les manifestes Kubernetes car ils sont fournis dans la console. Pour plus d'informations sur les espaces de noms, reportez-vous à la documentation Kubernetes.
Remarque

Pour réduire l'espace de noms inactif ou de secours après le déploiement, vous devez conserver au moins une réplique pour éviter tout problème.

Afin de créer des groupes dynamiques et des stratégies pour les pipelines de déploiement, reportez-vous à Stratégies de pipeline de déploiement. Pour plus de détails, reportez-vous à Stratégies IAM DevOps.

Pour accéder à DevOps à l'aide de la console Oracle Cloud, de l'API REST et de l'interface de ligne de commande, reportez-vous à Accès à DevOps.

    1. Ouvrez le menu de navigation et cliquez sur Services de développeur. Sous DevOps, cliquez sur Projets.
    2. Sélectionnez un projet et un pipeline de déploiement.
    3. Pour ajouter une phase au pipeline, cliquez sur l'icône + et sélectionnez Ajouter une phase.
    4. Pour le type de phase, sélectionnez Stratégie bleu/vert, puis cliquez sur Suivant.
    5. Sélectionnez OKE pour le type de déploiement.
    6. Entrez le nom et la description de la phase. L'ajout d'une description est facultatif.
    7. Pour Environnement, sélectionnez un environnement de cluster existant.
    8. Entrez des espaces de noms existants pour Espace de noms A et Espace de noms B qui sont associés à l'environnement OKE sélectionné. Par exemple, blue-env, green-env.

      Les espaces de noms sont utilisés pour définir les environnements de déploiement bleu et vert dans le cluster OKE.

    9. Cliquez sur Sélectionner un artefact et sélectionnez des ressources d'artefact dans votre projet DevOps.

      Le service DevOps effectue une application côté serveur Kubernetes des artefacts de manifeste Kubernetes selon l'ordre dans lequel ils apparaissent dans la console. Vous pouvez également enlever des artefacts pour en sélectionner d'autres ou réorganiser la liste des artefacts. La suppression d'un artefact dans la phase de pipeline ne supprime pas la ressource d'artefact du projet. Pour plus d'informations sur l'application côté serveur Kubernetes, reportez-vous à Application côté serveur.

    10. Entrez le nom entrant NGINX. Par exemple, ingress-nginx.

      Il s'agit du nom de la ressource entrante de votre application. Le service DevOps modifie l'annotation sur cette ressource entrante pour réaliser la stratégie de déploiement. Le nom entrant NGINX doit être défini dans le manifeste Kubernetes.

    11. Cliquez sur Suivant.
    12. Validez l'exécution du déploiement. Pour effectuer la validation, une fonction personnalisée est ajoutée au pipeline. Sélectionnez Run a custom logic through a function et entrez les valeurs suivantes :
      1. Entrez le nom et la description de la phase. L'ajout d'une description est facultatif.
      2. Pour Environnement, sélectionnez une fonction existante à appeler.

        Le champ en lecture seule Nom de fonction affiche la fonction appelée dans le pipeline.

      3. (Facultatif) Pour sélectionner des artefacts et les ajouter à la phase, cliquez sur Sélectionner un artefact.

        Sélectionnez une ressource d'artefact existante dans le projet DevOps. L'objet doit être de type fichier générique (universel). Les paramètres dans l'artefact doivent être au format JSON et peuvent contenir des espaces réservés. Lors de la configuration de la ressource d'artefact DevOps, sélectionnez Autoriser la paramétrisation. La sélection de cette case à cocher garantit que les espaces réservés sont remplacés par la valeur d'argument pendant le déploiement. Pour plus d'informations, reportez-vous à Configuration des paramètres.

        Voici un exemple de contenu d'artefact générique pour transmettre deux paramètres définis par l'utilisateur et leurs valeurs :
        • Paramètres : test_name, app_version
        • Valeurs : {"test_name":"verify_production", "app_version":"${app_version}"}
      4. Pour Mode d'exécution de phase, sélectionnez une exécution asynchrone ou synchrone.

        Si vous sélectionnez Exécuter de manière asynchrone, le service appelle la fonction mais n'attend pas qu'elle se termine. Lorsque vous sélectionnez Exécuter de manière synchrone, le service appelle la fonction et attend qu'elle se termine.

      5. Choisissez de désactiver ou d'activer la validation.

        Si la validation est activée, le service vérifie la valeur renvoyée par la fonction. La valeur renvoyée est un littéral de chaîne au format UTF-8, true ou false. Si la valeur renvoyée est true, la phase est réussi. Sinon, elle est en échec.

        Si la validation est désactivée, le service ne vérifie pas la valeur renvoyée.

        La validation n'a lieu que si vous avez sélectionné l'option Exécuter de manière synchronique pour le mode d'exécution de phase.

      6. (Facultatif) Pour ajouter des balises au pipeline, cliquez sur Afficher les options de balisage. Le balisage est un système de métadonnées permettant d'organiser et de suivre les ressources dans la location.

        Vous pouvez sélectionner un espace de noms de balise, ou une balise à format libre est ajoutée. Entrez la clé et la valeur de balise correspondantes. Vous pouvez ajouter plusieurs balises.

      Remarque

      Si vous ne voulez pas valider l'exécution de déploiement, sélectionnez Aucun.
    13. Vous pouvez activer ou désactiver une approbation manuelle pour le déploiement. Pour activer une approbation, saisissez les valeurs suivantes :
      1. Entrez le nom et la description de la phase. L'ajout d'une description est facultatif.
      2. Entrez le nombre d'approbateurs.
      3. (Facultatif) Pour ajouter des balises au pipeline, cliquez sur Afficher les options de balisage. Le balisage est un système de métadonnées permettant d'organiser et de suivre les ressources dans la location.

        Vous pouvez sélectionner un espace de noms de balise, ou une balise à format libre est ajoutée. Entrez la clé et la valeur de balise correspondantes. Vous pouvez ajouter plusieurs balises.

    14. Pour ajouter la phase au pipeline, cliquez sur Ajouter.

      Une fenêtre modale s'ouvre et affiche le statut des différentes configurations de phase qui font partie de la stratégie de déploiement OKE bleu/vert. Les phases de déploiement OKE bleu/vert, de fonction d'appel, d'approbation et de changement de trafic peuvent être incluses. Si la validation échoue, vous pouvez vérifier le message d'erreur propre à chaque phase en échec et prendre des mesures correctives.

      Si la validation réussit, vous pouvez exécuter le pipeline de déploiement ou ajouter d'autres phases de manière séquentielle ou parallèle au pipeline, si nécessaire.

  • Pour créer une phase bleu/vert OKE, exécutez la commande create-deploy-oke-blue-green-stage :

    oci devops deploy-stage create-deploy-oke-blue-green-stage

    Paramètres requis :

    • --blue-green-strategy
    • --kubernetes-manifest-artifact-ids
    • --oke-cluster-environment-id
    • --pipeline-id
    • --stage-predecessor-collection

    Pour obtenir l'aide relative à cette commande :

    oci devops deploy-stage create-oke-blue-green-stage -h

    Pour créer une phase d'appel de fonction, exécutez la commande create-invoke-function-stage :

    oci devops deploy-stage create-invoke-function-stage

    Paramètres requis :

    • --function-environment-id
    • --is-async
    • --is-validation-enabled
    • --pipeline-id
    • --stage-predecessor-collection

    Pour obtenir l'aide relative à cette commande :

    oci devops deploy-stage create-invoke-function-stage -h

    Pour créer une phase de changement de trafic d'équilibreur de charge, exécutez la commande create-load-balancer-traffic-shift-stage :

    oci devops deploy-stage create-load-balancer-traffic-shift-stage

    Paramètres requis :

    • --blue-backend-ips
    • --green-backend-ips
    • --load-balancer-config
    • --traffic-shift-target
    • --rollout-policy
    • --pipeline-id
    • --stage-predecessor-collection

    Pour obtenir l'aide relative à cette commande :

    oci devops deploy-stage create-load-balancer-traffic-shift-stage -h

    Pour créer une phase d'approbation manuelle, exécutez la commande create-manual-approval-stage :

    oci devops deploy-stage create-manual-approval-stage

    Paramètres requis :

    • --approval-policy
    • --pipeline-id
    • --stage-predecessor-collection

    Pour obtenir l'aide relative à cette commande :

    oci devops deploy-stage create-manual-approval-stage -h

    Procédure d'obtention de toutes les commandes pour deploy-stage :

    oci devops deploy-stage -h
  • Pour créer une phase, utilisez l'opération CreateDeployStage. En fonction des phases à ajouter au pipeline, sélectionnez les valeurs suivantes pour le type de phase :

    • Phase de déploiement bleu/vert de Kubernetes Engine (OKE) : OKE_BLUE_GREEN_DEPLOYMENT
    • Phase de changement de trafic bleu/vert OKE : OKE_BLUE_GREEN_TRAFFIC_SHIFT
    • Phase d'appel de fonction : INVOKE_FUNCTION
    • Phase d'approbation manuelle : MANUAL_APPROVAL