Desarrolla e implementa apps alojadas en contenedores con una canalización de CI/CD

Last reviewed 2022-11-18 UTC

En esta guía de implementación, se describe cómo configurar y usar un sistema de desarrollo, integración continua (CI) y entrega continua (CD) con un conjunto integrado de herramientas de Google Cloud. Puedes usar este sistema para desarrollar y también implementar aplicaciones en Google Kubernetes Engine (GKE).

En esta guía, se muestra cómo crear la arquitectura que se describe en Canalización de implementación para desarrollar y entregar apps alojadas en contenedores.

Esta guía de implementación está destinada a desarrolladores y operadores de software, y tendrás los siguientes roles a medida que la completes:

  • Primero, actuarás como operador para configurar la canalización de CI/CD. Los componentes principales de esta canalización son Cloud Build, Artifact Registry y Cloud Deploy.
  • Luego, actuarás como desarrollador para cambiar una aplicación con Cloud Code. Cuando actúas como desarrollador, ves la experiencia integrada que proporciona esta canalización.
  • Por último, actúas como operador y sigues los pasos para implementar una aplicación en producción.

En esta guía de implementación, se supone que estás familiarizado con la ejecución de comandos de gcloud en Google Cloud y con la implementación de contenedores de aplicaciones en GKE.

Arquitectura

En el siguiente diagrama, se muestran los recursos usados en esta guía de implementación:

Desarrolla e implementa un sistema con Cloud Code, Cloud Build, Artifact Registry, Cloud Deploy y GKE

Para obtener detalles sobre los componentes que se usan en esta arquitectura, consulta Canalización de implementación para desarrollar y entregar apps alojadas en contenedores.

Objetivos

Si actúas como operador, haz lo siguiente:

  • Configura la canalización de CI y CD En esta configuración, se incluye lo siguiente:
    • Configura los permisos necesarios.
    • Crea los clústeres de GKE para los entornos de etapa de pruebas y producción.
    • Crea un repositorio en Cloud Source Repositories para el código fuente.
    • Crea un repositorio en Artifact Registry para el contenedor de la aplicación.
    • Crea un activador de Cloud Build en el repositorio principal de GitHub.
    • Crea canalizaciones y destinos de entrega de Cloud Deploy. Los destinos son los entornos de etapa de pruebas y producción.
  • Comienza el proceso de CI/CD para implementar en la etapa de pruebas y, luego, puedes ascender a la producción.

Como desarrollador, realizas un cambio en la aplicación. Para hacerlo, sigue estos pasos:

  • Clona el repositorio para trabajar con un entorno de desarrollo preconfigurado.
  • Realiza un cambio en la aplicación dentro del lugar de trabajo para desarrolladores.
  • Compila y prueba el cambio. Las pruebas incluyen una prueba de validación para la administración.
  • Visualiza y valida el cambio en un clúster de desarrollo. Este clúster se ejecuta en minikube.
  • Confirma el cambio en el repositorio principal.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  1. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  3. Habilita las API de Artifact Registry, Cloud Build, Cloud Deploy, Cloud Source Repositories, Google Kubernetes Engine, Resource Manager, and Service Networking.

    Habilita las API

  4. En la consola de Google Cloud, activa Cloud Shell.

    Activar Cloud Shell

    En la parte inferior de la consola de Google Cloud, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

Prepara el entorno

En esta sección, actuarás como el operador de la aplicación y realizarás las siguientes acciones:

  • Configura los permisos necesarios.
  • Crea los clústeres de GKE para los entornos de etapa de pruebas y producción.
  • Clona el repositorio de código fuente.
  • Crea un repositorio en Cloud Source Repositories para el código fuente.
  • Crea un repositorio en Artifact Registry para la aplicación de contenedor.

Configura los permisos

En esta sección, debes otorgar los permisos necesarios para configurar la canalización de CI/CD.

  1. Si trabajas en una instancia nueva del editor de Cloud Shell, especifica el proyecto para usar en esta guía de implementación:

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID del proyecto que seleccionaste o creaste para esta guía de implementación.

    Si se muestra un diálogo, haz clic en Authorize.

  2. Asegúrate de que la cuenta de servicio predeterminada de Compute Engine tenga permisos suficientes para ejecutar trabajos en Cloud Deploy y extraer contenedores de Artifact Registry. Cloud Build y Cloud Deploy usan esta cuenta de servicio predeterminada.

    Es posible que esta cuenta de servicio ya tenga los permisos necesarios. Este paso garantiza que se otorguen los permisos necesarios para los proyectos que inhabilitan las asignaciones de funciones automáticas para las cuentas de servicio predeterminadas.

    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"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
        --role="roles/artifactregistry.reader"
    
  3. Otorga el privilegio a la cuenta de servicio de Cloud Build para invocar implementaciones con Cloud Deploy y actualizar la canalización de entrega y las definiciones de destino:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")@cloudbuild.gserviceaccount.com \
        --role="roles/clouddeploy.operator"
    

    Para obtener más información de este rol de IAM, consulta el rol clouddeploy.operator.

  4. Otorga el privilegio de cuenta de servicio de Cloud Build y Cloud Deploy para implementar en GKE:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
        --role="roles/container.admin"
    

    Para obtener más detalles sobre este rol de IAM, consulta el rol container.admin.

  5. Otorga a la cuenta de servicio de Cloud Build los permisos necesarios para invocar las operaciones de Cloud Deploy:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")@cloudbuild.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
    

    Cuando Cloud Build invoca a Cloud Deploy, usa una cuenta de servicio de Compute Engine para crear una versión, por lo que se necesita este permiso.

    Para obtener más detalles sobre este rol de IAM, consulta el rol iam.serviceAccountUser.

Ya otorgaste los permisos necesarios para la canalización de CI/CD.

Crea los clústeres de GKE

En esta sección, crearás los entornos de etapa de pruebas y de producción, que son clústeres de GKE. (No necesitas configurar el clúster de desarrollo aquí, porque usa Minikube).

  1. Crea los clústeres de GKE de etapa de pruebas y producción:

    gcloud container clusters create-auto staging \
        --region us-central1 \
        --project=$(gcloud config get-value project) \
        --async
    
    gcloud container clusters create-auto prod \
        --region us-central1 \
        --project=$(gcloud config get-value project) \
        --async
    

    En el clúster de etapa de pruebas probarás los cambios en el código. Después de verificar que la implementación en la etapa de pruebas no afectó de forma negativa a la aplicación, se implementará en producción.

  2. Ejecuta el siguiente comando y asegúrate de que el resultado tenga STATUS: RUNNING para los clústeres de etapa de pruebas y de producción:

    gcloud container clusters list
    
  3. Recupera las credenciales de los archivos kubeconfig de los clústeres de etapa de pruebas y de producción.

    gcloud container clusters get-credentials staging --region us-central1
    
    gcloud container clusters get-credentials prod --region us-central1
    

    Usa estas credenciales para interactuar con los clústeres de GKE, por ejemplo, para verificar si una aplicación se ejecuta de forma correcta.

Ya creaste los clústeres de GKE para el entorno de etapa de pruebas y de producción.

Abre el IDE y clona el repositorio

Para clonar el repositorio y ver la aplicación en el entorno de desarrollo, sigue estos pasos:

  1. Clona el repositorio de GitHub en Cloud Shell.

    Abrir en Cloud Shell

  2. Haz clic en Confirmar.

    El Editor de Cloud Shell abre y clona el repositorio de muestra.

    Ahora puedes ver el código de la aplicación en el Editor de Cloud Shell.

  3. Especifica el proyecto que se usará para esta guía de implementación:

    gcloud config set project PROJECT_ID
    

    Si se muestra un diálogo, haz clic en Authorize.

Ahora tienes el código fuente para la aplicación en tu entorno de desarrollo.

Este repositorio de código fuente incluye los archivos de Cloud Build y Cloud Deploy necesarios para la canalización de CI/CD.

Crea repositorios para el código fuente y para los contenedores

En esta sección, configurarás un repositorio en Cloud Source Repositories para el código fuente, y un repositorio en Artifact Registry para almacenar los contenedores compilados por la canalización de CI/CD.

  1. Crea un repositorio en Cloud Source Repositories para almacenar el código fuente y vincularlo con el proceso de CI/CD:

    gcloud source repos create cicd-sample
    
  2. Asegúrate de que las opciones de configuración de Cloud Deploy se orienten al proyecto correcto:

    sed -i s/project-id-placeholder/$(gcloud config get-value project)/g deploy/*
    git config --global credential.https://source.developers.google.com.helper gcloud.sh
    git remote add google https://source.developers.google.com/p/$(gcloud config get-value project)/r/cicd-sample
    
  3. Envía tu código fuente al repositorio:

    git push --all google
    
  4. Crea un repositorio de imágenes en Artifact Registry:

    gcloud artifacts repositories create cicd-sample-repo \
        --repository-format=Docker \
        --location us-central1
    

Ahora tienes un repositorio para el código fuente en Cloud Source Repositories y uno para el contenedor de la aplicación en Artifact Registry. El repositorio de Cloud Source Repositories te permite clonar el código fuente y conectarlo a la canalización de CI/EC.

Configura la canalización de CI/CD

En esta sección, actuarás como el operador de la aplicación y configurarás la canalización de CI/CD. La canalización usa Cloud Build para la CI y Cloud Deploy para la CD. Los pasos de la canalización se definen en el activador de Cloud Build.

  1. Crea un bucket de Cloud Storage para Cloud Build para almacenar el archivo artifacts.json (que realiza un seguimiento de los artefactos que genera Skaffold para cada compilación):

    gsutil mb gs://$(gcloud config get-value project)-gceme-artifacts/
    

    Se recomienda almacenar el archivo artifacts.json de cada compilación en un lugar central, ya que proporciona trazabilidad, lo que facilita la solución de problemas.

  2. Revisa el archivo cloudbuild.yaml, que define el activador de Cloud Build, que ya está configurado en el repositorio de código fuente que clonaste.

    Este archivo define el activador que se invoca cada vez que hay un nuevo envío a la rama principal del repositorio de código fuente.

    Los siguientes pasos para la canalización de CI/CD se definen en el archivo cloudbuild.yaml:

    • Cloud Build usa Skaffold para compilar el contenedor de la aplicación.

    • Cloud Build coloca el archivo artifacts.json de la compilación en el bucket de Cloud Storage.

    • Cloud Build coloca el contenedor de la aplicación en Artifact Registry.

    • Cloud Build ejecuta pruebas en el contenedor de la aplicación.

    • El comando gcloud deploy apply registra los siguientes archivos con el servicio de implementación de Cloud Deploy:

      • deploy/pipeline.yaml, que es la canalización de entrega
      • deploy/staging.yaml y deploy/prod.yaml, que son los archivos de destino

      Cuando los archivos se registran, Cloud Deploy crea la canalización y los destinos si aún no existen, o los vuelve a crear si la configuración cambió. Los destinos son los entornos de etapa de pruebas y producción.

    • Cloud Deploy crea una nueva versión para la canalización de entrega.

      Esta versión hace referencia al contenedor de la aplicación que se compiló y probó en el proceso de CI.

    • Cloud Deploy implementa la versión en el entorno de etapa de pruebas.

    Cloud Deploy administra la canalización de entrega y los destinos, y se separan del código fuente. Esta separación significa que no necesitas actualizar la canalización de entrega y los archivos de destino cuando se realiza un cambio en el código fuente de la aplicación.

  3. Cree el activador de Cloud Build:

    gcloud beta builds triggers create cloud-source-repositories \
        --name="cicd-sample-main" \
        --repo="cicd-sample" \
        --branch-pattern="main" \
        --build-config="cloudbuild.yaml"
    

    Este activador le indica a Cloud Build que observe el repositorio de origen y que use el archivo cloudbuild.yaml para reaccionar a cualquier cambio en el repositorio. Este activador se invoca cada vez que hay un nuevo envío a la rama principal.

  4. Ve a la página de Cloud Build en la consola de Google Cloud.

    Ir a Cloud Build

    Ten en cuenta que no hay compilaciones para tu aplicación.

Ahora configuraste las canalizaciones de CI y CD, y creaste un activador en la rama principal del repositorio.

Haz un cambio en la aplicación en el lugar de trabajo para desarrolladores

En esta sección, actuarás como el desarrollador de la aplicación.

A medida que desarrollas la aplicación, realizas y verificas los cambios iterativos en la aplicación con Cloud Code como el lugar de trabajo de desarrollo:

  • Realiza un cambio en la aplicación.
  • Compila y prueba el código nuevo.
  • Implementa la aplicación en el clúster de minikube y verifica los cambios orientados al usuario.
  • Envía el cambio al repositorio principal.

Cuando se confirma este cambio en el repositorio principal, el activador de Cloud Build inicia la canalización de CI/CD.

Compila, prueba y ejecuta la aplicación

En esta sección, compilarás, probarás, implementarás y accederás a tu aplicación.

Usa la misma instancia del Editor de Cloud Shell que usaste en la sección anterior. Si cerraste el editor, dirígete a ide.cloud.google.com y abre el editor de Cloud Shell en tu navegador.

  1. En la terminal, inicia minikube:

    minikube start
    

    Minikube configura un clúster local de Kubernetes en Cloud Shell. Esta configuración tarda unos minutos en ejecutarse. Una vez finalizada, el proceso de Minikube se ejecuta en segundo plano en la instancia de Cloud Shell.

  2. En el panel que se encuentra en la parte inferior del Editor de Cloud Shell, selecciona Cloud Code.

  3. En el panel delgado que aparece entre la terminal y el editor, selecciona Run on Kubernetes.

    Si ves un mensaje que dice Use current context (minikube) to run the app?, haz clic en Yes.

    Este comando compila el código fuente y ejecuta pruebas. Este proceso puede tardar unos minutos. Las pruebas incluyen pruebas de unidades y un paso de validación preconfigurado que verifica las reglas establecidas para el entorno de implementación. Esto garantiza que se te advierta sobre los problemas de implementación, incluso mientras sigues trabajando en el entorno de desarrollo.

    La pestaña Resultado muestra el progreso de Skaffold a medida que compila e implementa la aplicación.

    Mantén esta pestaña abierta durante esta sección.

    Cuando la compilación y las pruebas finalizan, la pestaña Resultado dice Update succeeded y muestra dos URLs.

    A medida que compilas y pruebas tu app, Cloud Code transmite los registros y las URL en la pestaña Resultado. A medida que realizas cambios y ejecutas pruebas en el entorno de desarrollo, puedes ver la versión de la app de tu entorno de desarrollo y verificar que funcione de forma correcta.

    El resultado también dice Watching for changes..., lo que significa que el modo de observación está habilitado. Mientras Cloud Code está en modo de observación, el servicio detecta cualquier cambio guardado en tu repositorio y vuelve a compilar y a implementar la aplicación de forma automática con los últimos cambios.

  4. En la terminal de Cloud Code, mantén el puntero sobre la primera URL en el resultado (http://localhost:8080).

  5. En la información de la herramienta que aparece, selecciona Abrir en la vista previa web.

    Cloud Code redirecciona automáticamente el tráfico de redirección de puertos al servicio cicd-sample que se ejecuta en Minikube en segundo plano.

  6. En tu navegador, actualiza la página.

    El número junto a Contador aumenta, lo que muestra que la aplicación responde a tu actualización.

    En tu navegador, mantén esta página abierta para que puedas ver la aplicación mientras realizas cualquier cambio en el entorno local.

Ya compilaste y probaste tu aplicación en el entorno de desarrollo. Implementaste la aplicación en el clúster de desarrollo que se ejecuta en Minikube y viste el comportamiento de la aplicación orientado al usuario.

Haga un cambio

En esta sección, realizarás un cambio en la aplicación y lo verás medida que la aplicación se ejecute en el clúster de desarrollo.

  1. En el Editor de Cloud Shell, abre el archivo index.html.

  2. Busca la string Sample App Info y cámbiala a sample app info, de manera que el título ahora use letras minúsculas.

    El archivo se guarda de forma automática, lo que activa una recompilación del contenedor de la aplicación.

    Cloud Code detecta el cambio y lo vuelve a implementar automáticamente. En la pestaña Resultado, se muestra Update initiated. Esta reimplementación tarda unos minutos en ejecutarse.

    Esta función automática de reimplementación está disponible para cualquier aplicación que se ejecute en un clúster de Kubernetes.

  3. Cuando finalice la compilación, ve al navegador en el que tienes abierta la app y actualiza la página.

    Cuando actualices, verás que el texto ahora usa letras minúsculas.

Esta configuración te permite volver a cargar de forma automática cualquier arquitectura, con cualquier componente. Cuando usas Cloud Code y Minikube, todo lo que se ejecuta en Kubernetes tiene esta función de carga nueva de código activo.

Puedes depurar aplicaciones que se implementan en un clúster de Kubernetes en Cloud Code. Estos pasos no se analizan en esta guía de implementación, pero, para obtener detalles, consulta Depura una aplicación de Kubernetes.

Confirma el código

Ahora que realizaste un cambio en la aplicación, puedes confirmar el código.

  1. Configura tu identidad de Git:

    git config --global user.email "YOU@EXAMPLE.COM"
    git config --global user.name "NAME"
    

    Reemplaza lo siguiente:

    • YOU@EXAMPLE.COM: La dirección de correo electrónico que está conectada a tu cuenta de GitHub.
    • NAME: Es el nombre que está conectado a tu cuenta de GitHub.
  2. Desde la terminal, confirma el código:

    git add .
    git commit -m "use lowercase for: sample app info"
    

    No es necesario ejecutar el comando git push aquí. Eso viene después.

Ahora realizaste un cambio en la aplicación, compilaste y probaste el cambio, y verificaste el comportamiento de estos cambios orientado al usuario en el entorno de desarrollo. En las pruebas en el entorno de desarrollo, se incluyen verificaciones de administración, que te permiten corregir errores que causan problemas en el entorno de producción.

En esta guía de implementación, no pasas por una revisión de código cuando confirmas el código en el repositorio principal. Sin embargo, la revisión de código o la aprobación de cambios es un proceso recomendado para el desarrollo de software.

Para obtener más información de las prácticas recomendadas de aprobación de cambios, consulta Optimiza la aprobación de cambios.

Implementa un cambio en la producción

En esta sección, actuarás como el operador de la aplicación y realizarás las siguientes acciones:

  • Activa la canalización de CI/EC, que implementa la versión en el entorno de etapa de pruebas.
  • Promueve y aprueba el lanzamiento a producción.

Iniciar la canalización de CI/CD e implementarla en la etapa de pruebas

En esta sección, debes iniciar la canalización de CI/CD con la invocación del activador de Cloud Build. Este activador se invoca cada vez que se confirma un cambio en el repositorio principal. También puedes iniciar el sistema de CI con un activador manual.

  1. En el Editor de Cloud Shell, ejecuta el siguiente comando para activar una compilación:

    git push google
    

    Esta compilación incluye el cambio que realizaste en cicd-sample.

  2. Regresa al panel de Cloud Build y observa que se cree una compilación.

  3. Haz clic en Ejecuta: cicd-sample - cicd-sample-main en el registro de compilación a la derecha y busca el texto azul que denota el inicio y el final de cada paso.

    En el Paso 0, se muestra el resultado de las instrucciones de skaffold build y skaffold test del archivo cloudbuild.yaml. Las tareas de compilación y prueba del Paso 0 (la parte de CI de la canalización) pasaron, por lo que las tareas de implementación del Paso 1 (la parte de CD de la canalización) se ejecutan ahora.

    Este paso finaliza con el siguiente mensaje:

    Created Cloud Deploy rollout ROLLOUT_NAME in target staging

  4. Abre la página de canalizaciones de entrega de Cloud Deploy y haz clic en la canalización cicd-sample delivery.

    La aplicación se implementa en la etapa de pruebas, pero no en la de producción.

  5. Verifica que la aplicación funcione de forma correcta en la etapa de pruebas:

    kubectl proxy --port 8001 --context gke_$(gcloud config get-value project)_us-central1_staging
    

    Este comando configura un proxy de kubectl para acceder a la aplicación.

  6. Accede a la aplicación desde Cloud Shell:

    1. En el Editor de Cloud Shell, abre una pestaña nueva de la terminal.

    2. Envía una solicitud a localhost para aumentar un contador:

      curl -s http://localhost:8001/api/v1/namespaces/default/services/cicd-sample:8080/proxy/ | grep -A 1 Counter
      

      Puedes ejecutar este comando varias veces y ver el aumento del valor del contador en todo momento.

      Mientras ves la aplicación, observa que el texto que cambiaste está en la versión de la aplicación que implementaste en la etapa de pruebas.

    3. Cierra la segunda pestaña.

    4. Presiona Control+C para detener el proxy en la primera pestaña.

Ahora invocaste el activador de Cloud Build para iniciar el proceso de CI, que incluye compilar la aplicación, implementarla en el entorno de etapa de pruebas y ejecutar las pruebas para verificar que la aplicación funcione en la etapa de pruebas.

El proceso de CI se realiza de forma correcta cuando las compilaciones de código y las pruebas pasan en el entorno de etapa de pruebas. El éxito del proceso de CI inicia el sistema de CD en Cloud Deploy.

Promueve la versión a la producción

En esta sección, promoverás el lanzamiento de la etapa de pruebas a producción. El objetivo de producción viene preconfigurado para requerir aprobación, por lo que lo aprobarás de forma manual.

Para tu propia canalización de CI/CD, te recomendamos usar una estrategia de implementación que inicie la implementación de forma gradual antes de realizar una implementación completa en producción. Si inicias la implementación de manera gradual puede facilitar la detección de problemas y, si es necesario, el restablecimiento de una versión anterior.

Para promover el lanzamiento a producción, haz lo siguiente:

  1. Abre la descripción general de las canalizaciones de entrega de Cloud Deploy y selecciona la canalización cicd-sample.

  2. Promueve la implementación de la etapa de pruebas a la de producción Para ello, haz lo siguiente:

    1. En el diagrama de la canalización que se encuentra en la parte superior de la página, haz clic en el botón azul Promover en el cuadro de etapa de pruebas.

    2. En la ventana que se abrirá, haz clic en el botón Promover en la parte inferior.

    La implementación aún no se está ejecutando en producción. Espera la aprobación manual requerida.

  3. Aprueba la implementación de forma manual:

    1. En la visualización de la canalización, haz clic en el botón Revisar entre los cuadros de la etapa de pruebas y de producción.

    2. En la ventana que se abrirá, haz clic en el botón Review.

    3. En la ventana siguiente, haz clic en Aprobar.

    4. Regresa a la Descripción general de las canalizaciones de entrega de Cloud Deploy y selecciona la canalización cicd-sample.

  4. Después de que la visualización de la canalización muestre el cuadro de producción en verde (lo que significa un lanzamiento correcto), verifica que la aplicación funcione en producción con la configuración de un proxy de kubectl que usarás para acceder a la aplicación:

    kubectl proxy --port 8002 --context gke_$(gcloud config get-value project)_us-central1_prod
    
  5. Accede a la aplicación desde Cloud Shell:

    1. En el Editor de Cloud Shell, abre una pestaña nueva de la terminal.

    2. Incrementa el contador:

      curl -s http://localhost:8002/api/v1/namespaces/default/services/cicd-sample:8080/proxy/ | grep -A 1 Counter
      

      Puedes ejecutar este comando varias veces y ver el aumento del valor del contador en todo momento.

    3. Cierra esta segunda pestaña de la terminal.

    4. Presiona Control+C para detener el proxy en la primera pestaña.

Ya promoviste y aprobaste la implementación de producción. La aplicación con el cambio reciente ahora se ejecuta en producción.

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en esta guía de implementación, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Opción 1: Borra el proyecto

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Opción 2: Borra los recursos individuales

  1. Borra la canalización de Cloud Deploy:

    gcloud deploy delivery-pipelines delete cicd-sample --region=us-central1 --force
    
  2. Borra el activador de Cloud Build:

    gcloud beta builds triggers delete cicd-sample-main
    
  3. Borra los clústeres de etapa de pruebas y de producción:

    gcloud container clusters delete staging
    
    gcloud container clusters delete prod
    
  4. Borra el repositorio en Cloud Source Repositories:

    gcloud source repos delete cicd-sample
    
  5. Borra los buckets de Cloud Storage

    `gsutil rm -r gs://$(gcloud config get-value project)-gceme-artifacts/
    
     gsutil rm -r gs://$(gcloud config get-value project)_clouddeploy/
     ```
    
  6. Borra el repositorio en Artifact Registry:

    gcloud artifacts repositories delete cicd-sample-repo \
        --location us-central1
    

¿Qué sigue?