Définir et utiliser un type de cible personnalisé

Ce guide de démarrage rapide explique comment utiliser Cloud Deploy pour créer un type de cible personnalisé, puis comment déployer une cible personnalisée de ce type.

Dans ce guide de démarrage rapide, vous allez effectuer les opérations suivantes:

  1. Créez une configuration Skaffold.

    C'est dans le fichier de configuration Skaffold que vous configurez le comportement de la cible. Cette configuration fait référence aux images de conteneurs, ainsi qu'aux commandes shell à exécuter sur ces images, qui correspondent aux actions associées aux opérations de rendu et de déploiement.

  2. Définissez un type de cible personnalisé et une cible qui fait référence à ce type.

  3. Définir votre pipeline de livraison Cloud Deploy

    Ce pipeline ne comporte qu'une seule étape et n'utilise qu'une seule cible. Au cours de cette étape, vous référencerez la cible que vous avez configurée.

  4. Créez une version qui crée automatiquement un déploiement, ce qui entraîne l'exécution des opérations de rendu et de déploiement personnalisées.

    Dans cette version et ce déploiement, les opérations de rendu et de déploiement définies dans votre configuration Skaffold sont toutes deux exécutées.

  5. Affichez les résultats des opérations personnalisées. Cela inclut un fichier de configuration rendu importé dans Cloud Storage, une chaîne écrite dans ce fichier, ainsi qu'un fichier de résultats qui inclut l'état de l'opération.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activer les API Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.

    Activer les API

  5. Installez Google Cloud CLI.
  6. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  7. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  8. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  9. Activer les API Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.

    Activer les API

  10. Installez Google Cloud CLI.
  11. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  12. Si la Google Cloud CLI est déjà installée, assurez-vous d'utiliser la dernière version:

    gcloud components update
    
  13. Assurez-vous que le compte de service Compute Engine par défaut dispose des autorisations suffisantes.

    Le compte de service dispose peut-être déjà des autorisations nécessaires. Ces étapes sont incluses pour les projets qui désactivent les attributions automatiques de rôles pour les comptes de service par défaut.

    1. Commencez par ajouter le rôle clouddeploy.jobRunner:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/clouddeploy.jobRunner"
      
    2. Ajoutez le rôle de développeur pour votre environnement d'exécution spécifique.
    3. Ajoutez le rôle iam.serviceAccountUser, qui inclut l'autorisation actAs permettant de déployer dans l'environnement d'exécution:
      gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser" \
          --project=PROJECT_ID
      

Préparer la configuration Skaffold et le fichier manifeste de l'application

Cloud Deploy utilise Skaffold pour fournir les détails des éléments à déployer et comment les déployer sur votre cible.

Dans ce guide de démarrage rapide, vous allez créer un fichier skaffold.yaml, qui définit les actions personnalisées représentant les opérations de rendu et de déploiement pour le type de cible personnalisé.

Notez que les actions personnalisées fournies dans ce guide de démarrage rapide ne déploient aucune application dans un environnement d'exécution. Les actions de rendu et de déploiement importent toutes deux un fichier de résultats dans Cloud Storage pour remplir le contrat de cible personnalisée entre Cloud Deploy et le rendu et le déploiement définis par l'utilisateur.

  1. Ouvrez une fenêtre de terminal.

  2. Créez un répertoire et accédez-y.

    mkdir custom-target-quickstart
    cd custom-target-quickstart
    
  3. Créez un fichier nommé skaffold.yaml avec le contenu suivant :

    apiVersion: skaffold/v4beta7
    kind: Config
    customActions:
    - name: custom-render
      containers:
      - name: render
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:66e2681aa3099b4e517e4cdcdefff8f2aa45d305007124ccdc09686f6712d018
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo "Sample manifest rendered content" > manifest.txt
            gsutil cp manifest.txt $CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt
            echo {\"resultStatus\": \"SUCCEEDED\", \"manifestFile\": \"$CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt\"} > results.json
            gsutil cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
    - name: custom-deploy
      containers:
      - name: deploy
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:66e2681aa3099b4e517e4cdcdefff8f2aa45d305007124ccdc09686f6712d018
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo {\"resultStatus\": \"SUCCEEDED\"} > results.json
            gsutil cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
    

    Ce fichier inclut le bloc customActions:, qui définit une action de rendu personnalisée et une action de déploiement personnalisée. Chacune de ces actions personnalisées fait référence à une image de conteneur à exécuter et à des commandes à exécuter sur ce conteneur.

    Pour en savoir plus sur ce fichier de configuration, consultez la documentation de référence sur skaffold.yaml.

Créer le pipeline de livraison, le type de cible personnalisé et la cible

Vous pouvez définir votre pipeline de livraison, votre type de cible personnalisée et votre cible dans un ou plusieurs fichiers distincts. Dans ce guide de démarrage rapide, vous allez créer un seul fichier contenant ces trois éléments.

  1. Dans le répertoire "custom-target-quickstart", créez un fichier clouddeploy.yaml avec le contenu suivant:

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
      name: custom-targets-pipeline
    serialPipeline:
      stages:
      - targetId: sample-env
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
      name: sample-env
    customTarget:
      customTargetType: basic-custom-target
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: CustomTargetType
    metadata:
      name: basic-custom-target
    customActions:
      renderAction: custom-render
      deployAction: custom-deploy
    
  2. Enregistrez votre pipeline et vos cibles avec le service Cloud Deploy:

    gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
    

    Vous disposez maintenant d'un pipeline de livraison, avec une cible. Il s'agit de votre cible utilisant le type de cible personnalisée. Ce pipeline ne déploie pas d'application dans un environnement d'exécution.

  3. Confirmez votre pipeline et vos cibles:

    Dans la console Google Cloud, accédez à la page Pipelines de livraison de Cloud Deploy pour afficher la liste des pipelines de livraison disponibles.

    Ouvrir la page Pipelines de diffusion

    Le pipeline de livraison que vous venez de créer s'affiche, et une cible est répertoriée dans la colonne Cibles.

    La page "Pipeline de livraison" de la console Google Cloud, qui montre votre pipeline

Créer une version

Une version est la ressource Cloud Deploy centrale qui représente les modifications en cours de déploiement. Le pipeline de livraison définit le cycle de vie de cette version. Pour en savoir plus sur ce cycle de vie, consultez la section Architecture du service Cloud Deploy.

Exécutez la commande suivante à partir du répertoire custom-target-quickstart pour créer une ressource release qui représente l'action personnalisée à déployer:

gcloud deploy releases create test-release-001 \
  --project=PROJECT_ID \
  --region=us-central1 \
  --delivery-pipeline=custom-targets-pipeline

Comme pour toutes les versions (sauf si elles incluent --disable-initial-rollout), Cloud Deploy crée également automatiquement une ressource de déploiement. Toutes les phases de ce déploiement sont exécutées, y compris le rendu et le déploiement.

Afficher les résultats dans la console Google Cloud

Après quelques minutes, le déploiement est terminé. Dans ce cas, étant donné que les deux actions personnalisées sont des commandes permettant d'échouer les chaînes dans un fichier et de l'importer dans Cloud Storage, rien n'est déployé dans un environnement d'exécution cible.

Toutefois, vous pouvez afficher le fichier et les chaînes qu'il contient:

  1. Dans la console Google Cloud, accédez à la page Pipelines de livraison de Cloud Deploy pour afficher votre pipeline de livraison (custom-targets-pipeline).

    Ouvrir la page Pipelines de diffusion

  2. Cliquez sur le nom de votre pipeline de livraison (custom-targets-pipeline).

    La visualisation du pipeline montre l'état du déploiement de l'application. Étant donné qu'il n'y a qu'une seule étape dans le pipeline, la visualisation ne montre qu'un seul nœud.

    Visualisation du pipeline de livraison montrant la réussite

    Votre version est répertoriée dans l'onglet Versions sous Détails du pipeline de diffusion.

  3. Cliquez sur le nom de la version.

    La page Détails de la release s'affiche.

  4. Cliquez sur l'onglet Artefacts.

  5. Sous Artefacts cibles, cliquez sur le lien AFFICHER LES ARTIFACTS.

    Le fichier manifeste rendu s'affiche. Dans ce cas, le fichier est le résultat de l'action de rendu personnalisée que vous avez définie dans le fichier de configuration skaffold.yaml, qui contient la chaîne "Sample manifest made content" (Exemple de contenu affiché dans un fichier manifeste).

    Résultat de l'action d'affichage personnalisé

  6. Recherchez les buckets Cloud Storage créés par cette version.

    uvrez la page du navigateur Cloud Storage

    La page Buckets s'affiche. Elle contient deux buckets créés pour cette version. Un bucket contient le fichier de configuration du pipeline de livraison et le fichier skaffold.yaml rendu. L'autre inclut le fichier de sortie pour que notre action personnalisée est configurée.

  7. Cliquez sur le bucket dont le nom commence par us-central1.deploy-artifacts...

    Liste des buckets Cloud Storage

  8. Cliquez sur le dossier dont le nom commence par custom-targets-pipeline-, puis sur le dossier test-release-001.

  9. Cliquez sur le dossier dont le nom est le nom de votre déploiement, qui doit être test-release-001-to-sample-env-0001.

  10. Cliquez sur le dossier affiché, qui est un UUID, puis cliquez sur le dossier custom-output.

  11. Cliquez sur results.json, puis sur l'URL affichée sous forme de lien hypertexte dans le champ URL authentifiée.

    Ce fichier contient la chaîne que vous avez configurée comme résultat de l'action custom-deploy, dans votre fichier skaffold.yaml:

    Résultat de l'action personnalisée de déploiement

Effectuer un nettoyage

Pour éviter que les ressources utilisées sur cette page soient facturées sur votre compte Google Cloud, procédez comme suit :

  1. Supprimez le pipeline de livraison, la cible, la version et le déploiement:

    gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
    
  2. Supprimez les deux buckets Cloud Storage créés par Cloud Deploy.

    uvrez la page du navigateur Cloud Storage

Voilà ! Vous avez terminé le guide de démarrage rapide.

Étapes suivantes