Definir y usar un tipo de destino personalizado
En esta guía de inicio rápido se explica cómo usar Cloud Deploy para crear un tipo de destino personalizado y, a continuación, desplegarlo 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 se configura el comportamiento del destino. Esta configuración hace referencia a imágenes de contenedor y a comandos de shell que se ejecutan en esas imágenes, que son las acciones de las operaciones de renderización e implementación.
Defina un tipo de segmentación personalizada y un destino que haga referencia a ese tipo.
Define tu flujo de procesamiento de entrega de Cloud Deploy.
Esta canalización solo incluye una fase y usa un solo destino. En esa fase, harás referencia al objetivo que has configurado.
Crea una versión, lo que genera automáticamente un lanzamiento, lo que provoca que se realicen las operaciones de renderización e implementación personalizadas.
Como parte de esta versión y lanzamiento, se ejecutan las operaciones de renderización e implementación definidas en la configuración de Skaffold.
Consulta los resultados de las operaciones personalizadas. Esto incluye un archivo de configuración renderizado subido a Cloud Storage, una cadena escrita en ese archivo y un archivo de resultados que incluye el estado de la operación.
Antes de empezar
- 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.
-
Verify 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.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify 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.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
- Comprueba que la cuenta de servicio predeterminada de Compute Engine tenga los permisos suficientes.
Es posible que la cuenta de servicio ya tenga los permisos necesarios. Estos pasos se incluyen para los proyectos que inhabilitan las concesiones automáticas de roles para las cuentas de servicio predeterminadas.
- Primero, añade 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"
- Añade el rol de desarrollador para tu tiempo de ejecución específico.
-
Añade el rol
iam.serviceAccountUser
, que incluye el permisoactAs
para implementar en el tiempo 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
Abre una ventana de terminal.
Crea un directorio y accede a é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: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 - name: custom-deploy containers: - name: deploy 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
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 que se va a ejecutar y a los comandos que se van a ejecutar en ese contenedor.Consulta la referencia de
skaffold.yaml
para obtener más información sobre este archivo de configuración.En el directorio custom-target-quickstart, crea un archivo llamado
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 canal y tus destinos en el servicio Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
Ahora tienes un flujo de procesamiento de entrega con un destino. Este es tu destino con el tipo de destino personalizado y esta canalización no implementa una aplicación en un tiempo de ejecución.
Confirma tu flujo de procesamiento y tus objetivos:
En la Google Cloud consola, ve a la página Pipelines de entrega de Cloud Deploy para ver una lista de los pipelines de entrega disponibles.
Abre la página Pipelines de entrega.
Se muestra la canalización de entrega que acaba de crear, con un destino en la columna Destinos.
En la Google Cloud consola, ve a la página Pipelines de entrega de Cloud Deploy para ver tu pipeline de entrega (
custom-targets-pipeline
).Haga clic en el nombre de su flujo de trabajo de entrega (
custom-targets-pipeline
).La visualización de la canalización muestra el estado de la implementación de la aplicación. Como solo hay una fase en la canalización, la visualización muestra un solo nodo.
Tu lanzamiento aparecerá en la pestaña Lanzamientos, 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, haga clic en el enlace 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 has definido en el archivo de configuración
skaffold.yaml
, que contiene la cadena "Sample manifest rendered content".Busca los segmentos de Cloud Storage creados por esta versión.
Abrir la página del navegador de Cloud Storage
Se muestra la página Contenedores, donde se ven dos contenedores creados para esta versión. Un segmento contiene el archivo de configuración del flujo de procesamiento de entrega y el
skaffold.yaml
renderizado. El otro incluye el archivo de salida que nuestra acción personalizada está configurada para crear.Haga clic en el segmento cuyo nombre empiece por
us-central1.deploy-artifacts
...Haz clic en la carpeta cuyo nombre empiece por
custom-targets-pipeline-
y, a continuación, 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, a continuación, en la carpeta
custom-output
.Haz clic en
results.json
y, a continuación, en la URL enlazada del campo URL autenticada.Este archivo contiene la cadena que has configurado como salida de la acción
custom-deploy
en tuskaffold.yaml
:Elimina el flujo de procesamiento, el destino, la versión y el lanzamiento:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
Elimina los dos segmentos de Cloud Storage que ha creado Cloud Deploy.
Si ya tienes instalada la CLI de Google Cloud, asegúrate de que estás ejecutando la versión más reciente:
gcloud components update
Preparar la configuración de Skaffold
Cloud Deploy usa Skaffold para proporcionar los detalles de qué desplegar y cómo desplegarlo 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 e implementación del 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 tiempo de ejecución. Tanto la acción de renderización como la de despliegue suben un archivo de resultados a Cloud Storage para cumplir el contrato de destino personalizado entre Cloud Deploy y la renderización y el despliegue definidos por el usuario.
Crea tu flujo de procesamiento de entrega, el tipo de destino personalizado y el destino
Puedes definir tu canal de distribución, el tipo de destino personalizado y el destino en un archivo o en archivos independientes. En esta guía de inicio rápido, crearás un único archivo con los tres.
Crear una versión
Una versión es el recurso central de Cloud Deploy que representa los cambios que se van a implementar. El flujo de procesamiento de entrega define el ciclo de vida de esa versión. Consulta la arquitectura de servicio de Cloud Deploy para obtener más información 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 va a 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 despliegue. Se ejecutan todas las fases de ese lanzamiento, incluidas la renderización y la implementación.
Ver los resultados en la Google Cloud consola
Al cabo de unos minutos, el despliegue se habrá completado. En este caso, como las dos acciones personalizadas son comandos para mostrar cadenas en un archivo y subir el archivo a Cloud Storage, no se implementa nada en ningún tiempo de ejecución de destino.
Sin embargo, puedes ver el archivo y las cadenas que contiene:
Limpieza
Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en esta página, sigue estos pasos.
¡Ya has completado esta guía de inicio rápido!