Déploiement OKE canari

Créez un pipeline de déploiement à l'aide de la stratégie de publication de type canari 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.
  • Etant donné que 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 canari. 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.

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 canari, 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 vers lequel le trafic canari est déplacé.
    8. Entrez l'espace de noms canari. Par exemple, canary-env.

      L'espace de noms permet de définir l'environnement de déploiement canari dans le cluster OKE.

    9. Cliquez sur Sélectionner un artefact, puis 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.

    11. Cliquez sur Suivant.
    12. Vous pouvez choisir de valider l'exécution du déploiement ou de ne pas la valider en sélectionnant Aucun.

      Pour valider l'application, une fonction personnalisée est ajoutée au pipeline. Sélectionnez Exécuter une logique personnalisée via une fonction. 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'artefact 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. Vous devez cocher la case Allow parameterization lors de la configuration de la ressource d'artefact DevOps afin de remplacer les espaces réservés par la valeur d'argument lors du 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.

    13. Cliquez sur Suivant.
    14. Entrez le nom et, éventuellement, la description de la phase de changement du trafic afin de déplacer une partie du trafic vers l'environnement canari.
    15. Saisissez une limite supérieure en pourcentage pour indiquer le trafic maximal à déplacer. La valeur doit être comprise entre 1 et 25.

      Par exemple, si la limite supérieure est de 20, 20 % du trafic est déplacé vers l'environnement canari.

    16. Cliquez sur Suivant.
    17. Entrez le nom et la description de la phase d'approbation manuelle. L'ajout d'une description est facultatif.
    18. Saisissez le nombre d'approbateurs et cliquez sur Suivant.
    19. Entrez le nom et la description de la phase de canari de production. L'ajout d'une description est facultatif.
    20. Pour Environnement de production, sélectionnez un environnement de cluster existant utilisé pour déployer l'application validée dans l'environnement canari.
    21. Entrez l'espace de noms de production.
    22. Pour annuler (rollback) automatiquement le déploiement afin de revenir à la dernière version ayant réussi en cas d'échec de l'étape, cochez la case Annuler automatiquement.
    23. (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.

      Pour plus d'informations, reportez-vous à Balises de ressource.

    24. 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 canari. Il s'agit notamment des phases de déploiement canari, de changement de trafic, d'approbation et de déploiement de production. 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.

    Remarque

    Lors du premier déploiement OKE canari, un message d'erreur "service temporairement indisponible" apparaît lors de l'exécution du déploiement, une fois l'application déployée vers l'environnement canari. Il s'agit d'un comportement attendu car la ressource entrante dans l'environnement de production n'existe pas encore. Vous pouvez ignorer ce message et poursuivre le déploiement car l'erreur est résolue lors de la phase de production.
  • Pour créer une phase canari OKE, exécutez la commande create-deploy-oke-canary-stage :

    oci devops deploy-stage create-deploy-oke-canary-stage

    Paramètres requis :

    • --canary-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-canary-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 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

    Pour créer une phase d'approbation canari OKE, exécutez la commande create-oke-canary-approval-stage :

    oci devops deploy-stage create-oke-canary-approval-stage

    Paramètres requis :

    • --oke-canary-traffic-shift-stage-id
    • --approval-policy
    • --pipeline-id
    • --stage-predecessor-collection

    Pour obtenir l'aide relative à cette commande :

    oci devops deploy-stage create-oke-canary-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 de canari Kubernetes Engine (OKE) : OKE_CANARY_DEPLOYMENT
    • Phase d'appel de fonction : INVOKE_FUNCTION
    • Phase de changement de trafic canari OKE : OKE_CANARY_TRAFFIC_SHIFT
    • Phase d'approbation canari OKE : OKE_CANARY_APPROVAL