Cómo definir y usar un tipo de destino personalizado
En esta guía de inicio rápido, se muestra cómo usar Cloud Deploy para crear un tipo de destino personalizado y, luego, implementarlo 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 las imágenes de contenedor y a los comandos de shell que se ejecutarán en esas imágenes, que son las acciones para las operaciones de implementación y renderización.
Define un tipo de segmentación personalizada 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 destino. En esa etapa, harás referencia al destino que configuraste.
Crea una versión que cree automáticamente un lanzamiento, lo que genera las operaciones de implementación y renderización personalizadas.
Como parte de esta versión y este lanzamiento, se ejecutan las operaciones de renderización y de implementación definidas en tu configuración de Skaffold.
Visualiza los resultados de las operaciones personalizadas. Esto incluye un archivo de configuración renderizado que se subió a Cloud Storage y una string escrita en ese archivo, así como un archivo de resultados que incluye el estado de la operación.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.
- Instala Google Cloud CLI.
-
Para inicializar la CLI de gcloud, ejecuta el siguiente comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.
- Instala Google Cloud CLI.
-
Para inicializar la CLI de gcloud, ejecuta el siguiente comando:
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 funciones 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 la función
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 instalado Google Cloud CLI, asegúrate de estar ejecutando la versión más reciente:
gcloud components update
Prepara la 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 implementación y renderizació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. 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 la 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 gsutil cp manifest.txt $CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt echo {\"resultStatus\": \"SUCCEEDED\", \"manifestFile\": \"$CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt\"} > results.json gsutil 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 gsutil cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
En este archivo, se 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 ejecutará y a 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, tipo de destino personalizado y destino
Puedes definir tu canalización de entrega, tipo de destino personalizado y 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
, que incluya 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 destino que usa el tipo de destino personalizado; esta canalización no implementa una aplicación en un entorno de ejecución.
Confirma la canalización y los destinos:
En la consola de Google Cloud, navega a la página Canalizaciones de entrega de Cloud Deploy para ver la lista de 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 enumerado en la columna Destinos.
Crea una versión
Una versión es el recurso central de Cloud Deploy que representa los cambios que se implementan. La canalización de entrega define el ciclo de vida de esa versión. Consulta Arquitectura de 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 recurso de lanzamiento. 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
La implementación habrá finalizado luego de unos minutos. En este caso, debido a que las dos acciones personalizadas son comandos para repetir strings 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 ese archivo:
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 la canalización de entrega (
custom-targets-pipeline
).La visualización de la canalización muestra el estado de implementación de la app. Como solo hay una etapa en la canalización, la visualización muestra solo 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 mostrará el archivo de manifiesto procesado. 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 "Contenido renderizado del manifiesto de muestra".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, que muestra 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. La otra 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 es el nombre del 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 haz clic 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 string que configuraste como resultado 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 se usaron 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.