Define y usa un tipo de objetivo personalizado
En esta guía de inicio rápido, se muestra cómo usar Cloud Deploy para crear un tipo de segmentación personalizado y, luego, realizar la implementación en un destino personalizado de ese tipo.
En esta guía de inicio rápido, harás lo siguiente:
Crea una configuración de Skaffold.
En el archivo de configuración de Skaffold, configuras el comportamiento del objetivo. Esta configuración hace referencia a imágenes de contenedores y a comandos de shell para ejecutar en esas imágenes, que son las acciones de las operaciones de renderización y de implementación.
Define un tipo de objetivo personalizado y un objetivo que haga referencia a ese tipo.
Define tu canalización de entrega de Cloud Deploy.
Esta canalización incluye solo una etapa y usa solo un objetivo. En esa etapa, harás referencia al objetivo que configuraste.
Crea una versión, que crea automáticamente un lanzamiento, lo que genera que se realicen las operaciones de renderización y de implementación personalizadas.
Como parte de este lanzamiento, se ejecutan las operaciones de renderización y de implementación definidas en la configuración de Skaffold.
Consulta los resultados de las operaciones personalizadas. Esto incluye un archivo de configuración renderizado que se subió a Cloud Storage, una cadena escrita en ese archivo y un archivo de resultados que incluye el estado de la operación.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Asegúrate de que la cuenta de servicio predeterminada de Compute Engine tenga los permisos necesarios.
Es posible que la cuenta de servicio ya tenga los permisos necesarios. Estos pasos se incluyen en los proyectos que inhabilitan la asignación automática de roles para las cuentas de servicio predeterminadas.
- Primero, agrega el rol
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"
- Agrega el rol de desarrollador para tu entorno de ejecución específico.
-
Agrega el rol
iam.serviceAccountUser
, que incluye el permisoactAs
para implementar en el entorno de ejecución: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
Si ya tienes instalada Google Cloud CLI, asegúrate de que estás ejecutando la versión más reciente:
gcloud components update
Prepara tu configuración de Skaffold
Cloud Deploy usa Skaffold para proporcionar los detalles sobre qué implementar y cómo hacerlo en tu destino.
En esta guía de inicio rápido, crearás un archivo skaffold.yaml
, que define acciones personalizadas que representan las operaciones de renderización y de implementación para el tipo de destino personalizado.
Ten en cuenta que las acciones personalizadas que se proporcionan en esta guía de inicio rápido no implementan ninguna aplicación en un entorno de ejecución. Tanto las acciones de renderización como las de implementación suben un archivo de resultados a Cloud Storage para cumplir con el contrato de destino personalizado entre Cloud Deploy y la renderización y la implementación definidas por el usuario.
Abre una ventana de terminal.
Crea un directorio nuevo y navega hasta él.
mkdir custom-target-quickstart cd custom-target-quickstart
Crea un archivo llamado
skaffold.yaml
con el siguiente contenido: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 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 - 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 gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
Este archivo incluye la estrofa
customActions:
, que define una acción de renderización personalizada y una acción de implementación personalizada. Cada una de estas acciones personalizadas hace referencia a una imagen de contenedor para ejecutar y a los comandos que se ejecutarán en ese contenedor.Consulta la referencia de
skaffold.yaml
para obtener más información sobre este archivo de configuración.
Crea tu canalización de entrega, tu tipo de segmentación personalizada y tu segmentación
Puedes definir tu canalización de entrega, el tipo de destino personalizado y el destino en un archivo o en archivos separados. En esta guía de inicio rápido, crearás un solo archivo con los tres.
En el directorio custom-target-quickstart, crea un archivo nuevo,
clouddeploy.yaml
, con el siguiente contenido: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
Registra tu canalización y tus destinos con el servicio de Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
Ahora tienes una canalización de entrega con un destino. Este es tu objetivo con el tipo de objetivo personalizado, y esta canalización no implementa una aplicación en un entorno de ejecución.
Confirma tu canalización y tus objetivos:
En la consola de Google Cloud, navega a la página Canalizaciones de entrega de Cloud Deploy para ver una lista de las canalizaciones de entrega disponibles.
Abrir la página Canalizaciones de entrega
Se muestra la canalización de entrega que acabas de crear, con un destino en la columna Destinos.
Crea una versión
Una versión es el recurso central de Cloud Deploy que representa los cambios que se implementarán. La canalización de entrega define el ciclo de vida de esa versión. Consulta la arquitectura del servicio de Cloud Deploy para obtener detalles sobre ese ciclo de vida.
Ejecuta el siguiente comando desde el directorio custom-target-quickstart
para crear un recurso release
que represente la acción personalizada que se implementará:
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=custom-targets-pipeline
Al igual que con todas las versiones (a menos que incluyan --disable-initial-rollout
), Cloud Deploy también crea automáticamente un recurso de lanzamiento. Y se ejecutan todas las fases de ese
lanzamiento, incluidas la renderización y la implementación.
Visualiza los resultados en la consola de Google Cloud
Después de unos minutos, se completará la implementación. En este caso, como las dos acciones personalizadas son comandos para mostrar cadenas en un archivo y subirlo a Cloud Storage, no se implementa nada en ningún entorno de ejecución de destino.
Sin embargo, puedes ver el archivo y las cadenas en él:
En la consola de Google Cloud, navega a la página Canalizaciones de entrega de Cloud Deploy para ver tu canalización de entrega (
custom-targets-pipeline
).Haz clic en el nombre de tu canalización de entrega (
custom-targets-pipeline
).La visualización de la canalización muestra el estado de implementación de la app. Debido a que solo hay una etapa en la canalización, la visualización solo muestra un nodo.
Y la versión aparece en la pestaña Versiones, en Detalles de la canalización de entrega.
Haz clic en el nombre de la versión.
Se muestra la página Detalles de la versión.
Haz clic en la pestaña Artefactos.
En Artefactos de destino, haz clic en el vínculo VER ARTEFACTOS.
Se muestra el archivo de manifiesto renderizado. En este caso, el archivo es el resultado de la acción de renderización personalizada que definiste en el archivo de configuración
skaffold.yaml
, que contiene la cadena "Sample manifest rendered content".Busca los buckets de Cloud Storage que creó esta versión.
Abrir la página del navegador de Cloud Storage
Aparecerá la página Buckets, que muestra los dos buckets creados para esta versión. Un bucket contiene el archivo de configuración de la canalización de entrega y el
skaffold.yaml
renderizado. El otro incluye el archivo de salida que nuestra acción personalizada está configurada para crear.Haz clic en el bucket cuyo nombre comienza con
us-central1.deploy-artifacts
…Haz clic en la carpeta cuyo nombre comienza con
custom-targets-pipeline-
y, luego, en la carpetatest-release-001
.Haz clic en la carpeta cuyo nombre sea el de tu lanzamiento, que debería ser
test-release-001-to-sample-env-0001
.Haz clic en la carpeta que se muestra, que es un UUID, y, luego, en la carpeta
custom-output
.Haz clic en
results.json
y, luego, en la URL con hipervínculo del campo URL autenticada.Este archivo contiene la cadena que configuraste como salida de la acción
custom-deploy
en tuskaffold.yaml
:
Limpia
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.
Borra la canalización de entrega, el destino, la versión y el lanzamiento:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
Borra los dos buckets de Cloud Storage que creó Cloud Deploy.
Eso es todo, finalizaste la guía de inicio rápido.