Définir et utiliser un type de cible personnalisé

Ce guide de démarrage rapide vous montre comment utiliser Cloud Deploy pour créer un type de cible personnalisé, puis effectuer un déploiement sur une cible personnalisée de ce type.

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

  1. Définissez un type de cible personnalisé, dans lequel vous configurerez le comportement de la cible. Cette configuration fait référence aux images de conteneurs et aux commandes shell à exécuter sur ces images, qui sont les actions pour les opérations de rendu et de déploiement.

  2. Définissez une cible qui fait référence au type de cible personnalisé.

  3. Définissez votre pipeline de livraison Cloud Deploy.

    Ce pipeline ne comporte qu'une seule étape et n'utilise qu'une seule cible. À cette étape, vous ferez référence à la cible que vous avez configurée.

  4. Créez une configuration Skaffold, qui est requise par la version.

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

    Dans le cadre de cette version et de ce déploiement, les opérations de rendu et de déploiement définies dans la configuration de votre type de cible personnalisée sont toutes deux exécutées.

  6. 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 sans frais pour exécuter, tester et déployer des charges de travail.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Activez les API Cloud Deploy, Cloud Build, GKE, Cloud Run et Cloud Storage.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    Activer les API

  5. Installez la Google Cloud CLI.

  6. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  7. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Activez les API Cloud Deploy, Cloud Build, GKE, Cloud Run et Cloud Storage.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    Activer les API

  11. Installez la Google Cloud CLI.

  12. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  13. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  14. Si vous avez déjà installé Google Cloud CLI, assurez-vous d'exécuter la dernière version :

    gcloud components update
    
  15. 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 concernent 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 pour le déploiement 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
      

Créer votre pipeline de livraison, votre type de cible personnalisé et votre cible

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

  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. 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
    tasks:
      render:
        type: 'container'
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:484e8266c1cfc84b283bc6d4eec1f6b61223115178cce76fb59f77b223f26e8e
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo "Sample manifest rendered content" > manifest.txt
            gcloud storage cp manifest.txt $CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt
            echo {\"resultStatus\": \"SUCCEEDED\", \"manifestFile\": \"$CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt\"} > results.json
            gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
      deploy:
        type: 'container'
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:484e8266c1cfc84b283bc6d4eec1f6b61223115178cce76fb59f77b223f26e8e
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo {\"resultStatus\": \"SUCCEEDED\"} > results.json
            gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
    

    La définition du type de cible personnalisée inclut la section tasks, qui définit une tâche de rendu et une tâche de déploiement. Chacune de ces tâches fait référence à une image de conteneur à exécuter et à des commandes à exécuter sur ce conteneur.

  4. Enregistrez votre pipeline et vos cibles auprès du service Cloud Deploy :

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

    Vous disposez désormais 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.

  5. 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 de vos pipelines de livraison disponibles.

    Ouvrir la page Pipelines de diffusion

    Le pipeline de livraison que vous venez de créer s'affiche, avec une cible listée dans la colonne Cibles.

    Page du pipeline de diffusion dans la console Google Cloud , affichant votre pipeline

Créer votre fichier de configuration Skaffold

La version de ce guide de démarrage rapide nécessite un fichier de configuration Skaffold, mais ce fichier ne nécessite pas de configuration significative.

  1. Créez un fichier nommé skaffold.yaml avec le contenu suivant :

    apiVersion: skaffold/v4beta7
    kind: Config
    

Créer une version

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

Exécutez la commande suivante depuis le répertoire custom-target-quickstart pour créer une ressource release représentant 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 celles qui incluent --disable-initial-rollout), Cloud Deploy crée automatiquement une ressource déploiement progressif. 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

Au bout de quelques minutes, le déploiement est terminé. Dans ce cas, comme les deux actions personnalisées sont des commandes permettant d'insérer des chaînes dans un fichier et d'importer le fichier 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 indique l'état de déploiement de l'application. Comme il n'y a qu'une seule étape dans le pipeline, la visualisation n'affiche qu'un seul nœud.

    Visualisation du pipeline de livraison indiquant 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 version s'affiche.

  4. Cliquez sur l'onglet Artifacts.

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

    Le fichier manifeste rendu s'affiche. Dans ce cas, le fichier est la sortie de l'action de rendu personnalisé que vous avez définie dans la configuration de votre type de cible personnalisé. Il contient la chaîne "Sample manifest rendered content" (Exemple de contenu de fichier manifeste rendu).

    Sortie de l'action de rendu 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 indique que deux buckets ont été 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 que notre action personnalisée est configurée pour créer.

  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 correspond à celui de votre déploiement, qui devrait être test-release-001-to-sample-env-0001.

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

  11. Cliquez sur results.json, puis sur l'URL hypertexte dans le champ URL authentifiée.

    Ce fichier contient la chaîne que vous avez configurée comme sortie de l'action custom-deploy dans la définition de votre type de cible personnalisé :

    Sortie de l'action personnalisée de déploiement

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cette démonstration 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