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. Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  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. Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  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