À propos des cibles personnalisées

Ce document décrit le fonctionnement des cibles personnalisées dans Cloud Deploy.

Cloud Deploy est compatible avec divers environnements d'exécution en tant que cibles. Mais la liste des types de cibles pris en charge est finie. Les cibles personnalisées vous permettent de déployer en plus des environnements d'exécution compatibles.

Une cible personnalisée est une cible qui représente un environnement de sortie arbitraire autre qu'un environnement d'exécution compatible avec Cloud Deploy.

La page Créer une cible personnalisée décrit le processus de définition d'un type de cible personnalisée et de son implémentation en tant que cible dans un pipeline de livraison.

Que doit contenir une cible personnalisée ?

Chaque cible personnalisée se compose des éléments suivants:

  • Actions personnalisées défini dans skaffold.yaml

    Ils sont semblables à la définition des hooks de déploiement. Dans skaffold.yaml, vous définissez customActions, où chaque action personnalisée identifie une image de conteneur à utiliser et les commandes à exécuter sur ce conteneur.

    Ainsi, la cible personnalisée est simplement une action personnalisée ou un ensemble actions.

    Pour tout type de cible personnalisée, vous devez configurer une action d'affichage personnalisée et un tag l'action de déploiement. Ces actions consomment des valeurs fournies par Cloud Deploy doit générer un ensemble de résultats requis.

    L'action d'affichage personnalisé est facultative, mais vous devez en créer une, sauf si votre la cible personnalisée fonctionnera correctement si elle est affichée par skaffold render, soit par défaut pour Cloud Deploy.

  • Définition d'un type de cible personnalisée

    Le CustomTargetType est une ressource Cloud Deploy qui identifie les actions personnalisées (définies séparément dans votre fichier skaffold.yaml) qui ciblent de ce type sont utilisés pour les activités de rendu et de déploiement.

  • Une définition de cible

    La définition d'une cible personnalisée est la même que pour tout type de cible, sauf qu'elle inclut la propriété customTarget, dont la valeur est le nom de CustomTargetType.

Une fois ces composants en place, vous pouvez utiliser la cible comme n'importe quelle cible, en les référençant depuis la progression de votre pipeline de livraison et en exploitant pleinement les fonctionnalités Cloud Deploy, Promotion et approbations Rollbacks

Exemple

Guide de démarrage rapide Définir et utiliser un type de cible personnalisé crée un type de cible personnalisée qui inclut des commandes simples à exécuter sur un une image de conteneur : une commande pour le rendu et une pour le déploiement. Les commandes dans ce cas, ajoutez simplement du texte aux fichiers de sortie requis pour le rendu déployer.

Pour obtenir plus d'exemples, consultez la section Exemples de cibles personnalisées.

Entrées et sorties requises

Tout type de cible personnalisé défini pour Cloud Deploy doit répondre aux critères suivants : en entrée et en sortie, pour le rendu et le déploiement. Cette section répertorie les entrées et sorties requises, et comment elles sont fournies.

Cloud Deploy fournit les entrées requises pour le rendu et déployer en tant que variables d'environnement. Les sections suivantes répertorient ces entrées, ainsi que les sorties que vos actions d'affichage et de déploiement personnalisées doivent renvoyer.

Déployer des paramètres en tant que variables d'environnement

Outre les variables d'environnement répertoriées dans cette section, Cloud Deploy peut transmettre à vos conteneurs personnalisés paramètres de déploiement que vous avez définis.

Les paramètres de déploiement destinés à être utilisés comme entrées pour les cibles personnalisées doivent commencer par customTarget/, par exemple customTarget/vertexAIModel. Lorsque vous faites référence à deploy en tant que variable d'environnement, utilisez la syntaxe suivante:

CLOUD_DEPLOY_customTarget_[VAR_NAME]

VAR_NAME est le nom situé après la barre oblique dans nom du paramètre "deploy". Par exemple, si vous définissez paramètre de déploiement nommé customTarget/vertexAIModel, référencez-le comme CLOUD_DEPLOY_customTarget_vertexAIModel

Entrées pour l'affichage des actions

Pour les actions d'affichage personnalisé, Cloud Deploy fournit les éléments suivants : les entrées requises, en tant que variables d'environnement. Pour les déploiements en plusieurs phases (déploiements Canary), Cloud Deploy fournit ces variables pour chaque phase.

  • CLOUD_DEPLOY_PROJECT

    Projet Google Cloud dans lequel le type de cible personnalisée est créé.

  • CLOUD_DEPLOY_LOCATION

    Région Google Cloud du type de cible personnalisée.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    Nom du pipeline de livraison Cloud Deploy faisant référence au type de cible personnalisée.

  • CLOUD_DEPLOY_RELEASE

    Nom de la version pour laquelle l'opération de rendu est appelée.

  • CLOUD_DEPLOY_TARGET

    Nom de la cible Cloud Deploy qui utilise la cible personnalisée de mots clés.

  • CLOUD_DEPLOY_PHASE

    La phase de déploiement auquel correspond le rendu.

  • CLOUD_DEPLOY_REQUEST_TYPE

    Pour l'action d'affichage personnalisé, il s'agit toujours de RENDER.

  • CLOUD_DEPLOY_FEATURES

    Liste des fonctionnalités Cloud Deploy séparées par une virgule que le client que le conteneur doit prendre en charge. Cette variable est renseignée en fonction des caractéristiques configurés dans votre pipeline de livraison.

    Si votre implémentation n'est pas compatible avec les fonctionnalités de cette liste, nous vous recommandons qu'elle échoue lors de l'affichage.

    Pour les déploiements standards, ce champ est vide. Pour les déploiements Canary, la valeur est CANARY. Si la valeur fournie par Cloud Deploy est CANARY, votre action de rendu est appelé pour chaque phase de la version Canary. Le pourcentage Canary pour chaque phase est fournies dans la variable d'environnement CLOUD_DEPLOY_PERCENTAGE_DEPLOY.

  • CLOUD_DEPLOY_PERCENTAGE_DEPLOY

    Pourcentage de déploiement associé à cette opération de rendu. Si le la variable d'environnement CLOUD_DEPLOY_FEATURES est définie sur CANARY, votre variable d'environnement personnalisée l'action d'affichage est appelée pour chaque phase, et cette variable est définie sur le pourcentage Canary pour chaque phase. Pour déploiements standards Pour les déploiements Canary ayant atteint la phase stable, il s'agit 100

  • CLOUD_DEPLOY_STORAGE_TYPE

    Fournisseur de stockage. Toujours GCS.

  • CLOUD_DEPLOY_INPUT_GCS_PATH

    Chemin d'accès Cloud Storage à l'archive du fichier de rendu écrite lors de la version a été créée.

  • CLOUD_DEPLOY_OUTPUT_GCS_PATH

    Chemin d'accès Cloud Storage où se trouve le conteneur de rendu personnalisé doit importer les artefacts à utiliser pour le déploiement. Notez que le rendu doit importer un fichier nommé results.json contenant les résultats de cette l'opération de rendu. Pour en savoir plus, consultez Résultats de l'action de rendu.

Résultats de l'action d'affichage

Votre action d'affichage personnalisé doit fournir les informations décrites dans ce . Ces informations doivent figurer dans le fichier de résultats, nommé results.json, situé dans le bucket Cloud Storage fourni par Cloud Deploy.

  • Fichier ou fichier de configuration affiché

  • Un fichier results.json contenant les informations suivantes:

    • Indication de l'état de réussite ou d'échec de l'action personnalisée.

      Les valeurs valides sont SUCCEEDED et FAILED.

    • (Facultatif) Tous les messages d'erreur générés par l'action personnalisée.

    • le chemin d'accès Cloud Storage du fichier de configuration affiché ou .

      Le chemin d'accès à tous les fichiers de configuration affichés correspond à l'URI complet. Toi et la remplir partiellement à l'aide de la valeur de CLOUD_DEPLOY_OUTPUT_GCS_PATH fournies par Cloud Deploy.

      Vous devez fournir le fichier de configuration affiché, même s'il est vide. La le contenu du fichier peut être n'importe quoi, dans n'importe quel format, par votre action de déploiement personnalisée. Nous vous recommandons d'utiliser ce fichier lisibles, afin que vous et les autres utilisateurs de votre organisation puissiez consulter dans l'inspecteur de versions.

    • (Facultatif) Une carte de toutes les métadonnées que vous souhaitez inclure

      Votre cible personnalisée crée ces métadonnées. Ces métadonnées sont stockées dans le champ custom_metadata.

Si vous devez examiner le fichier results.json, par exemple à des fins de débogage, procédez comme suit : pouvez trouver son URI Cloud Storage dans les journaux Cloud Build.

Exemple de fichier de résultats de rendu

Voici un exemple de sortie de fichier results.json pour un rendu personnalisé action:

{
  "resultStatus": "SUCCEEDED",
  "manifestFile": "gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/manifest.yaml",
  "failureMessage": "",
  "metadata": {
    "key1": "val",
    "key2": "val"
  }
}

Entrées pour les actions de déploiement

Pour les actions de déploiement personnalisées, Cloud Deploy fournit les éléments suivants : requises en tant que variables d'environnement:

  • CLOUD_DEPLOY_PROJECT

    Projet Google Cloud dans lequel la cible personnalisée est créée.

  • CLOUD_DEPLOY_LOCATION

    Région Google Cloud du type de cible personnalisée.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    Nom du pipeline de livraison Cloud Deploy faisant référence au cible qui utilise le type de cible personnalisée.

  • CLOUD_DEPLOY_RELEASE

    Nom de la version pour laquelle l'opération de déploiement est appelée.

  • CLOUD_DEPLOY_ROLLOUT

    Nom du déploiement Cloud Deploy auquel ce déploiement est destiné.

  • CLOUD_DEPLOY_TARGET

    Nom de la cible Cloud Deploy qui utilise la cible personnalisée de mots clés.

  • CLOUD_DEPLOY_PHASE

    La phase de déploiement auquel correspond le déploiement.

  • CLOUD_DEPLOY_REQUEST_TYPE

    Pour l'action de déploiement personnalisée, il s'agit toujours de DEPLOY.

  • CLOUD_DEPLOY_FEATURES

    Liste des fonctionnalités Cloud Deploy séparées par une virgule que le client que le conteneur doit prendre en charge. Cette variable est renseignée en fonction des caractéristiques configurés dans votre pipeline de livraison.

    Si votre implémentation n'est pas compatible avec les fonctionnalités de cette liste, nous vous recommandons qu'elle échoue lors de l'affichage.

    Pour les déploiements standards, ce champ est vide. Pour les déploiements Canary, la valeur est CANARY. Si la valeur fournie par Cloud Deploy est CANARY, votre action de rendu est appelé pour chaque phase de la version Canary. Le pourcentage Canary pour chaque phase est fournies dans la variable d'environnement CLOUD_DEPLOY_PERCENTAGE_DEPLOY.

  • CLOUD_DEPLOY_PERCENTAGE_DEPLOY

    Pourcentage de déploiement associé à cette opération de déploiement. Si le la variable d'environnement CLOUD_DEPLOY_FEATURES est définie sur CANARY, votre variable d'environnement personnalisée l'action de déploiement est appelée pour chaque phase, et cette variable est définie sur le pourcentage Canary pour chaque phase. Votre action de déploiement doit être exécutée pour chaque phase.

  • CLOUD_DEPLOY_STORAGE_TYPE

    Fournisseur de stockage. Toujours GCS.

  • CLOUD_DEPLOY_INPUT_GCS_PATH

    Chemin d'accès Cloud Storage où le moteur de rendu personnalisé a écrit le rendu de configuration.

  • CLOUD_DEPLOY_SKAFFOLD_GCS_PATH

    Chemin d'accès Cloud Storage à la configuration Skaffold affichée.

  • CLOUD_DEPLOY_MANIFEST_GCS_PATH

    Chemin d'accès Cloud Storage au fichier manifeste affiché.

  • CLOUD_DEPLOY_OUTPUT_GCS_PATH

    Chemin d'accès au répertoire Cloud Storage dans lequel le déploiement personnalisé doit importer des artefacts de déploiement. Pour en savoir plus, consultez Résultats de l'action de déploiement

Résultats de l'action de déploiement

Votre action de déploiement personnalisée doit écrire un fichier de sortie results.json. Ce fichier doit se trouver dans le bucket Cloud Storage fourni par Cloud Deploy (CLOUD_DEPLOY_OUTPUT_GCS_PATH)

Le fichier doit inclure les éléments suivants:

  • Indication de l'état de réussite ou d'échec de l'action de déploiement personnalisée.

    Voici les états valides:

  • (Facultatif) Une liste des fichiers d'artefact de déploiement, sous la forme de Chemins d'accès Cloud Storage

    Le chemin d'accès est l'URI complet. Vous le remplissez partiellement à l'aide de la valeur du CLOUD_DEPLOY_OUTPUT_GCS_PATH fournie par Cloud Deploy.

    Les fichiers listés ici sont insérés dans ressources d'exécution de tâches sous forme d'artefacts de déploiement.

  • (Facultatif) Un message d'échec si l'action de déploiement personnalisée échoue (renvoie un état FAILED)

    Ce message permet d'insérer le failure_message dans le exécution du job pour cette action de déploiement.

  • (Facultatif) Un message "Ignorer" vous permet de fournir des informations supplémentaires si l'action renvoie un État SKIPPED.

  • (Facultatif) Une carte de toutes les métadonnées que vous souhaitez inclure

    Votre cible personnalisée crée ces métadonnées. Ces métadonnées sont stockées exécution du job et sur le déploiement, dans le champ custom_metadata.

Si vous devez examiner le fichier results.json, par exemple à des fins de débogage, procédez comme suit : vous pouvez trouver l'URI Cloud Storage correspondant dans et publier des journaux de rendu.

Exemple de fichier de résultats de déploiement

Voici un exemple de sortie de fichier results.json d'un déploiement personnalisé action:

{
  "resultStatus": "SUCCEEDED",
  "artifactFiles": [
    "gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/file1.yaml",
    "gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/file2.yaml"
  ],
  "failureMessage": "",
  "skipMessage": "",
  "metadata": {
    "key1": "val",
    "key2": "val"
  }
}

Informations supplémentaires sur les actions personnalisées

Voici quelques éléments à prendre en compte lors de la configuration et de l'utilisation d'une cible personnalisée de données.

Exécuter les actions personnalisées

Vos actions de rendu et de déploiement personnalisées s'exécutent dans Cloud Deploy environnement d'exécution. Vous ne pouvez pas configurer vos actions personnalisées pour qu'elles s'exécutent sur un cluster Google Kubernetes Engine.

Utiliser des configurations Skaffold distantes et réutilisables

Comme décrit dans ce document, vous configurez votre action personnalisée dans le Fichier skaffold.yaml fourni lors de la création de la version. Mais vous pouvez également stocker les configurations Skaffold dans un dépôt Git ou un bucket Cloud Storage ; les référencer à partir de votre définition de type de cible personnalisée. Vous pouvez ainsi utiliser des actions personnalisées définies et stockées au lieu d'inclure les actions personnalisées avec le numéro de version skaffold.yaml.

Cibles personnalisées et stratégies de déploiement

Les cibles personnalisées sont entièrement compatibles avec standards.

Cloud Deploy est compatible avec déploiements Canary tant que et sont compatibles avec la fonctionnalité Canary.

Vous devez utiliser une configuration Canary personnalisée. Automatisation et automatisation personnalisée les versions Canary ne sont pas prises en charge.

Cibles personnalisées et paramètres de déploiement

Vous pouvez utiliser des paramètres de déploiement avec des cibles personnalisées. Vous pouvez les définir dans le pipeline de livraison stage, sur la cible qui utilise un type de cible personnalisée, ou sur version.

Les paramètres de déploiement sont transmis à vos conteneurs de rendu et de déploiement personnalisés, en tant que des variables d'environnement, en plus ceux déjà fournis.

Exemples de cibles personnalisées

Le dépôt cloud-deploy-samples contient un ensemble d'exemples d'implémentations de cibles personnalisées. Les exemples suivants sont disponibles:

  • GitOps

  • Vertex AI

  • Terraform

  • Infrastructure Manager

  • Helm

Chaque exemple inclut un guide de démarrage rapide.

Ces exemples ne sont pas des produits Google Cloud compatibles et ne sont pas couverts par un contrat d'assistance Google Cloud. Pour signaler des bugs ou demander d'un produit Google Cloud, contactez l'équipe de l'assistance.

Étape suivante