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 destino personalizado y un objetivo que haga referencia a ese tipo.
Define tu canalización de entrega de Cloud Deploy.
Esta canalización incluye una sola etapa y utiliza solo un destino. En esa etapa, harás referencia al objetivo que configuraste.
Crear una versión, que crea automáticamente una implementación, lo que genera que se realicen las operaciones de renderización y de implementación personalizadas
Como parte de este lanzamiento, las operaciones de renderización y de implementación definidas en tu 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 configuración
La cuenta de servicio de Compute Engine tiene 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 a 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 y el manifiesto de la aplicación
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 de la
el tipo de objetivo.
Ten en cuenta que las acciones personalizadas proporcionadas en esta guía de inicio rápido no se implementan cualquier aplicación a un entorno de ejecución. Las acciones de renderización y 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 renderización personalizada. y una de implementación personalizada. Cada una de estas acciones personalizadas hace referencia a un una imagen de contenedor para ejecutar y comandos para ejecutar en ese contenedor.Consulta la referencia de
skaffold.yaml
para obtener más información sobre este archivo de configuración.
Crea la canalización de entrega, el tipo de destino personalizado y el destino
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 único archivo con todas 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 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 destinos:
En la consola de Google Cloud, navega a Cloud Deploy La página Canalizaciones de entrega para ver la lista de tus entregas disponibles canalizaciones.
Abrir la página Canalizaciones de entrega
Se muestra la canalización de entrega que acabas de crear, con un destino detallado en 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 lanzamiento. 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 crea automáticamente un
rollout. 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, debido a que las dos acciones personalizadas son comandos para repetir cadenas en un archivo y subirlo a Cloud Storage, nada se implementa en ningún entorno de ejecución de destino.
Sin embargo, puedes ver el archivo y las cadenas que contiene:
En la consola de Google Cloud, navega a Cloud Deploy La página Canalizaciones de entrega para visualizar 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. Porque no existe en una sola etapa de 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 mostrará 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 se crearon en esta versión.
Abrir la página del navegador de Cloud Storage
Se mostrará la página Buckets con dos buckets creados para este lanzamiento. 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, haz clic en la carpetatest-release-001
.Haz clic en la carpeta cuyo nombre es el nombre 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 en el 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 ambos buckets de Cloud Storage que están en Cloud Deploy crear.
Eso es todo, finalizaste la guía de inicio rápido.