Ce document explique comment créer un type de cible Cloud Deploy personnalisé et utiliser ce type de cible personnalisée comme cible. lors d'un déploiement Cloud Deploy pipeline de livraison.
Voici le processus général de création d'un type de cible personnalisée et l'utiliser dans votre pipeline de livraison:
créer une application conteneurisée ; les applications qui incluent la fonctionnalité de déploiement sur votre cible personnalisée, qui répondent aux exigences exigences pour types de cibles personnalisées.
Définissez une action personnalisée dans
skaffold.yaml
qui référence ce conteneur et spécifie la ou les commandes à exécuter sur celui-ci.Créer une définition
CustomTargetType
en faisant référence à l'action personnalisée de l'étape précédente, puis enregistrez-la en tant que ressource Cloud Deploy.Définissez une nouvelle cible avec une propriété
customTarget
qui : identifie votre nouveau type de cible personnalisée.Référencer cette cible à partir de votre pipeline de livraison progression.
Chacune de ces étapes est décrite en détail dans la suite de ce document.
Créer vos applications conteneurisées
La fonctionnalité à déployer sur votre cible personnalisée est définie dans des
que vous fournissez à Cloud Deploy
les référencer dans votre fichier skaffold.yaml
. Quand ?
votre pipeline de livraison inclut une cible
qui utilise un type de cible personnalisé,
Cloud Deploy appelle les conteneurs d'action personnalisée définis pour
personnalisé, dans Skaffold, pour exécuter les actions de rendu et de déploiement que vous avez
définis.
Le comportement de vos applications vous revient entièrement. Toutefois, il doit utiliser variables d'environnement d'entrée fournies par Cloud Deploy. Celui-ci doit renvoient les résultats requis.
Dans la plupart des cas, vous allez créer un conteneur pour votre action de rendu et un autre pour
votre action de déploiement pour chaque type de cible personnalisée que vous créez. L'action d'affichage est
mais si vous n'en fournissez pas, Cloud Deploy utilise
skaffold render
par défaut.
Définir vos actions personnalisées dans Skaffold
Une fois votre ou vos images de conteneur d'action personnalisée en place, vous les référencez
de votre
fichier de configuration skaffold.yaml
.
Vous configurez chaque action personnalisée pour une cible personnalisée dans un customActions
.
strophe. Pour tout type de cible personnalisée, vous créez une action personnalisée, dans Skaffold, pour
un rendu et un pour le déploiement. CustomTargetType
La définition de l'URL détermine quelle action personnalisée est utilisée pour l'affichage et laquelle est utilisée
pour le déploiement.
Voici la configuration des actions d'affichage et de déploiement personnalisées dans
skaffold.yaml
:
apiVersion: skaffold/v4beta7
kind: Config
customActions:
# custom render action
- name:
containers:
- name:
image:
command:
args:
# custom deploy action
- name:
containers:
- name:
image:
command:
args:
Dans cette configuration Skaffold:
customActions.name
Nom arbitraire pour l'action de rendu ou de déploiement personnalisée. La La définition
CustomTargetType
fait référence à ce nom, dans lerenderAction
. oudeployAction
.Le stanza
containers
inclut votre référence, ainsi que les commandes permettant de l'exécuter conteneur.Le strophe
containers
autorise plusieurs conteneurs, mais Google recommande vous n'en utilisez qu'un seul.customActions.containers.name
est un nom arbitraire pour le conteneur spécifique que vous utilisez pour cette action ; Une bonne pratique consiste à toujours utiliser la qualification SHA pour ce nom de conteneur.
image
Chemin d'accès à l'image de conteneur
command
est la ou les commandes à exécuter sur le conteneur ;
args
Il s'agit d'une collection d'arguments pour
command
.
Consultez la documentation de référence sur Skaffold YAML.
pour obtenir une documentation détaillée sur les propriétés de configuration utilisées dans
customActions
Définir votre type de cible personnalisée
Pour définir une cible personnalisée, commencez par créer un type de cible personnalisée à l'aide de la variable
Configuration de CustomTargetType
.
Vous pouvez créer le CustomTargetType
dans le même fichier que votre pipeline de livraison
ou avec des définitions de cible, ou dans un fichier séparé.
La définition de CustomTargetType
est la suivante:
# Custom target type config (preview)
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
name: [CUSTOM_TARGET_TYPE_NAME]
annotations:
labels:
description:
customActions:
renderAction: [RENDER_ACTION_NAME]
deployAction: [DEPLOY_ACTION_NAME]
includeSkaffoldModules:
Où
CUSTOM_TARGET_TYPE_NAME
Nom arbitraire que vous attribuez à cette définition de type de cible personnalisée. Ce nom est référencée dans le définition de la cible cible qui utilise le type de cible personnalisée que vous définissez.
RENDER_ACTION_NAME
Nom de l'action de rendu personnalisé. Cette valeur est la
customAction.name
défini dansskaffold.yaml
pour render.DEPLOY_ACTION_NAME
Nom de l'action de déploiement personnalisée. Cette valeur est la
customAction.name
défini dansskaffold.yaml
pour deploy.includeSkaffoldModules
Est un bloc facultatif à utiliser si vous utilisez des configurations Skaffold distantes. La les propriétés de ce segment sont affichées dans la section Utiliser des configurations Skaffold distantes
Utiliser des configurations Skaffold distantes
Vous pouvez stocker les configurations Skaffold dans un dépôt Git public, un bucket Cloud Storage ou un dépôt Cloud Build 2e génération, référencer ces configurations à partir de votre définition de type de cible personnalisée.
L'utilisation de configurations Skaffold distantes signifie que le skaffold.yaml
que vous fournissez à l'adresse
il n'est pas nécessaire de définir
les actions personnalisées pour l'heure de publication. Cela permet
partager des actions personnalisées dans votre organisation.
Pour utiliser des configurations Skaffold distantes:
Créez une configuration Skaffold avec vos actions personnalisées.
Stockez la configuration dans un dépôt Git ou dans un bucket Cloud Storage.
Dans votre définition de type de cible personnalisée, ajoutez un
customActions.includeSkaffoldModules
stanza.Sous
includeSkaffoldModules
, spécifiez les éléments suivants:Éventuellement, un ou plusieurs éléments
configs
:- configs: ["name1", "name2"]
La valeur de
configs
est une liste de chaînes correspondant auxmetadata.name
sur chaque configuration Skaffold à inclure. Si cet élément est omis, Cloud Deploy utilise toutes les configurations du chemin d'accès spécifié.Un strophe
googleCloudStorage
,git
ougoogleCloudBuildRepo
.Pour Cloud Storage:
googleCloudStorage: source: PATH_TO_GCS_BUCKET path: FILENAME
Pour Git:
git: repo: REPO_URL path: PATH_TO_FILE ref: BRANCH_NAME
Pour les dépôts Cloud Build (2e génération):
googleCloudBuildRepo: repository: PATH_TO_GCB_REPO path: PATH_TO_FILE ref: BRANCH_NAME
Où :
PATH_TO_GCS_BUCKET
est le chemin d'accès à un répertoire Cloud Storage, se terminant par/*
, où sont stockées les configurations Skaffold. Téléchargements de Skaffold tous les fichiers de ce répertoire, puis trouve le fichier Skaffold approprié avec les configurations, en fonction du chemin d'accès relatif configuré.PATH_TO_GCB_REPO
est le chemin d'accès au dépôt Cloud Build 2nd gen où sont stockées les configurations Skaffold. Le chemin d'accès se présente sous la forme suivante:projects/{project}/locations/{location}/connections/{connection}/repositories/{repository}
Skaffold télécharge tous les fichiers de ce répertoire, puis trouve le Skaffold en fonction du chemin d'accès relatif configuré.FILENAME
est le nom du fichier qui inclut les configurations Skaffold. Ce La propriétépath:
est facultative. si vous ne la spécifiez pas, Cloud Deploy suppose que la version estskaffold.yaml
. S'il n'y a passkaffold.yaml
, ou si le nom de fichier spécifié n'est pas présent, la création de la version échoue.REPO_URL
est l'URL du dépôt Git.PATH_TO_FILE
est le chemin d'accès de ce dépôt au fichier contenant le Configurations Skaffold.BRANCH_NAME
est le nom de la branche (par exemple,main
) à partir de laquelle utilisez les configurations Skaffold.
Exemple
Le fichier YAML de type cible personnalisé suivant est un bloc customActions
avec une
includeSkaffoldModules
, pointant vers les configurations Skaffold stockées dans un
Bucket Cloud Storage:
customActions:
renderAction: my-custom-action
deployAction: my-custom-action
includeSkaffoldModules:
- configs: ["myConfig"]
googleCloudStorage:
source: "gs://my-custom-target-bucket/my-custom/*"
path: "skaffold.yaml
Le fichier YAML suivant est une configuration Skaffold, dont l'action personnalisée affichée est en référence:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: myConfig
customActions:
- name: my-custom-action
containers:
- name: my-custom-container
image: us-east1-docker.pkg.dev/abcdefg/foldername/myimage@sha256:c56fcf6e0a7637ddf0df3d56a0dd23bfce03ceca06a6fc527b0e0e7430e6e9f9
Enregistrer votre type de cible personnalisée
Après avoir configuré CustomTargetType
, exécutez la
Commande gcloud deploy apply
pour enregistrer
la ressource CustomTargetType
dans un projet Google Cloud:
gcloud deploy apply --file=[FILE] --project=[PROJECT] --region=[REGION]
Où :
FILE
est le nom du fichier dans lequel vous avez défini ce type de cible personnalisée.
PROJECT
est le projet Google Cloud dans lequel créer cette ressource.
CustomTargetType
doit se trouver dans le même projet que la ressource Target
qui y fait référence. Il n'est pas nécessaire de spécifier le projet si vous l'avez défini
votre projet par défaut pour la Google Cloud CLI.
REGION
est la région (par exemple, us-centra1
) dans laquelle créer cet
ressource. CustomTargetType
doit se trouver dans la même région que Target
ressource qui y fait référence. Il n'est pas nécessaire de spécifier la région si vous avez
définissez-la comme région par défaut pour la gcloud CLI.
Maintenant que CustomTargetType
est créé en tant que ressource Cloud Deploy,
vous pouvez maintenant l'utiliser dans une définition Target
pour créer votre cible personnalisée.
Pour en savoir plus sur la définition de CustomTargetType
, consultez la
Documentation de référence sur le schéma de configuration Cloud Deploy
Définir votre cible
La seule différence entre une définition de cible pour un type de cible compatible et
une définition de cible personnalisée est que celle-ci inclut
customTarget
stanza. La syntaxe d'un élément customTarget
est la suivante:
customTarget:
customTargetType: [CUSTOM_TARGET_TYPE_NAME]
Où CUSTOM_TARGET_TYPE_NAME
est la valeur de la propriété name
définie dans
votre configuration de type de cible personnalisée.
Ajouter votre cible au pipeline de livraison
Vous pouvez utiliser une cible personnalisée dans un pipeline de livraison exactement comme vous utiliseriez type de cible pris en charge. Autrement dit, il n'y a pas de différence dans le pipeline de livraison la progression entre les cibles d'un type de cible compatible et les cibles personnalisées.
Toutes les cibles d'un pipeline de livraison doivent utiliser le même type de cible. Par exemple : vous ne pouvez pas avoir un pipeline de livraison avec des cibles en cours de déploiement Google Kubernetes Engine et des cibles personnalisées.
Comme pour les types de cibles compatibles, vous pouvez inclure paramètres de déploiement à l'étape du pipeline.
Créer une version
Une fois votre type de cible personnalisée entièrement défini et une cible créée pour l'utiliser, vous pouvez maintenant créer une version, comme vous le faites habituellement:
gcloud deploy releases create [RELEASE_NAME] \
--project=[PROJECT_NAME] \
--region=[REGION] \
--delivery-pipeline=[PIPELINE_NAME]
Une fois la version créée, votre action de rendu personnalisé est exécutée pour chaque cible dans dans votre pipeline de livraison, y compris le traitement paramètres de déploiement configurés sur la version, les cibles ou le pipeline de livraison. Cloud Deploy fournit de paramètres de déploiement en tant qu'entrée au conteneur de rendu personnalisé.
Afficher le résultat de vos cibles personnalisées
Si votre action personnalisée répond aux critères exigences pour les cibles personnalisées, vous pouvez utiliser la console Google Cloud pour afficher les artefacts.
Suivez ces étapes pour afficher le résultat de votre action d'affichage personnalisé.
Dans la console Google Cloud, accédez à Cloud Deploy Pipelines de livraison pour afficher votre pipeline de livraison.
Cliquez sur le nom de votre pipeline de livraison.
La visualisation du pipeline affiche l'état du déploiement de l'application et vos release est répertoriée dans l'onglet Releases (Versions) sous Delivery Pipeline (Pipeline de livraison) détails.
Cliquez sur le nom de la version.
La page Détails de la version s'affiche.
Cliquez sur l'onglet Artefacts.
Sous Artefacts cibles, cliquez sur la flèche à côté de Afficher les artefacts.
Les artefacts rendus sont listés, y compris le
skaffold.yaml
affiché. et le fichier manifeste généré par le moteur de rendu personnalisé. Et vous pouvez cliquez sur le lien Emplacement de stockage à côté de chacun d'eux pour accéder bucket Cloud Storage pour afficher ces fichiers.Vous pouvez également cliquer sur le lien Afficher les artefacts pour afficher ces fichiers par par cible ou par phase à l'aide de l'API outil d'inspection des versions.
Étape suivante
Consultez le guide de démarrage rapide: Définir et utiliser un type de cible personnalisé.
Consultez les exemples de types de cibles personnalisées disponibles.
En savoir plus sur la configuration des cibles Cloud Deploy