En este instructivo, se describe cómo configurar y usar un sistema de desarrollo, integración continua (CI) y entrega continua (CD) mediante un conjunto integrado de herramientas de Google Cloud. Puedes usar este sistema para desarrollar y también implementar aplicaciones en Google Kubernetes Engine (GKE).
Este instructivo está dirigido a desarrolladores y operadores de software, y tendrás que cumplir ambos roles a medida que lo 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 Google 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 este instructivo, 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.
Las siguientes son las características clave de este sistema integrado:
Desarrolla y, además, implementa más rápido.
El bucle de desarrollo es eficiente porque puedes validar los cambios en el lugar de trabajo del desarrollador. La implementación es rápida porque el sistema automatizado de CI/CD y la mayor paridad en los entornos te permiten detectar más problemas cuando implementas cambios en la producción.
Aprovecha el aumento de la paridad en el desarrollo, la etapa de pruebas y la producción.
Los componentes de este sistema usan un conjunto común de herramientas de Google Cloud.
Reutiliza las opciones de configuración en los diferentes entornos.
Esta reutilización se realiza con Skaffold, que permite un formato de configuración común para los diferentes entornos. También permite a los desarrolladores y operadores actualizar y usar la misma configuración.
Aplica la administración al principio del flujo de trabajo.
Este sistema aplica pruebas de validación para la administración en la producción, en el sistema de CI y en el entorno de desarrollo. La aplicación de la administración en el entorno de desarrollo permite encontrar y solucionar antes los problemas.
Permite que las herramientas bien definidas administren la entrega de software.
La entrega continua está completamente administrada, lo que separa las etapas de la canalización de CD de los detalles de la renderización y la implementación.
Descripción general de la arquitectura
En el siguiente diagrama, se muestran los recursos usados en este instructivo:
Los tres componentes principales de esta canalización son los siguientes:
Cloud Code como un lugar de trabajo de desarrollo
Como parte de este lugar de trabajo, puedes ver los cambios en el clúster de desarrollo, que se ejecuta en minikube. Ejecuta Cloud Code y el clúster de minikube en Cloud Shell. Cloud Shell es un entorno de desarrollo en línea al que puedes acceder desde el navegador. Tiene recursos de procesamiento, memoria, un entorno de desarrollo integrado (IDE) y también tiene instalado Cloud Code.
Cloud Build para compilar y probar la aplicación, la parte de la “CI” de la canalización
Esta parte de la canalización incluye las siguientes acciones:
- Cloud Build supervisa los cambios en el repositorio de código fuente mediante un activador de Cloud Build.
- Cuando se confirma un cambio en la rama principal, el activador de Cloud Build realiza las siguientes acciones:
- Vuelve a compilar el contenedor de la aplicación.
- Coloca artefactos de compilación en un bucket de Cloud Storage.
- Coloca el contenedor de la aplicación en Artifact Registry.
- Ejecuta pruebas en el contenedor.
- Llama a Google Cloud Deploy para implementar el contenedor en el entorno de etapa de pruebas. En este instructivo, el entorno de etapa de pruebas es un clúster de Google Kubernetes Engine.
- Si la compilación y las pruebas se realizan de forma correcta, puedes usar Google Cloud Deploy para promover el contenedor de la etapa de pruebas a la de producción.
Google Cloud Deploy para administrar la implementación, la parte de “CD” de la canalización
En esta parte de la canalización, Google Cloud Deploy hace lo siguiente:
- Registra una canalización de entrega y destinos. Los destinos representan los clústeres de etapa de pruebas y de producción.
- Crea un bucket de Cloud Storage y almacena la fuente de procesamiento de Skaffold y los manifiestos renderizados en ese bucket.
- Genera una versión nueva para cada cambio de código fuente. En este instructivo, hay un cambio, por lo que hay un lanzamiento nuevo.
- Implementa la aplicación en el entorno de producción. Para esta implementación en producción, un operador (o cualquier otra persona designada) aprueba la implementación de forma manual. En este instructivo, el entorno de producción es un clúster de Google Kubernetes Engine.
Skaffold, una herramienta de línea de comandos que facilita el desarrollo continuo para aplicaciones nativas de Kubernetes, subyacente a estos componentes, lo que permite que la configuración se comparta entre los entornos de desarrollo, etapa de pruebas y producción.
Google Cloud almacena el código fuente de la aplicación en GitHub y, como parte de este instructivo, clona ese repositorio en Cloud Source Repositories para conectarlo a la canalización de CI/CD.
En este instructivo, se usan productos de Google Cloud para la mayoría de los componentes del sistema, con Skaffold que habilita la integración del sistema. Debido a que Skaffold es de código abierto, puedes usar estos principios para crear un sistema similar mediante una combinación de componentes de Google Cloud, internos y de terceros. La modularidad de esta solución significa que puedes adoptarla de forma incremental como parte de la canalización de implementación y desarrollo.
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 Google 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:
- Cloud Build
- Google Cloud Deploy
- Artifact Registry
- Google Kubernetes Engine
- Cloud Source Repositories
- Cloud Storage
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
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
-
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 Artifact Registry, Cloud Build, Google Cloud Deploy, Cloud Source Repositories, Google Kubernetes Engine, Resource Manager, and Service Networking APIs.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
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.
Si trabajas en una instancia nueva del Editor de Cloud Shell, especifica el proyecto para usar en este instructivo:
gcloud config set project PROJECT_ID
Reemplaza PROJECT_ID por el ID del proyecto que seleccionaste o creaste para este instructivo.
Si se muestra un diálogo, haz clic en Authorize.
Otorga los permisos necesarios a las cuentas de servicio:
Asegúrate de que la cuenta de servicio predeterminada de Compute Engine tenga permisos suficientes para ejecutar trabajos en Google Cloud Deploy y extraer contenedores de Artifact Registry. Cloud Build y Google 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"
Otorga el privilegio a la cuenta de servicio de Cloud Build para invocar implementaciones con Google 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"
Consulta la función clouddeploy.operator para obtener más detalles sobre este rol de IAM.
Otorga el privilegio de cuenta de servicio de Cloud Build y Google 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"
Consulta el rol container.admin para obtener más detalles sobre esta función de IAM.
Otorga a la cuenta de servicio de Cloud Build los permisos necesarios para invocar las operaciones de Google 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 Google Cloud Deploy, usa una cuenta de servicio de Compute Engine para crear una versión, por lo que se necesita este permiso.
Consulta el rol iam.serviceAccountUser para obtener más detalles sobre este rol de IAM.
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).
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.
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
Recupera las credenciales de los archivos
kubeconfig
de los clústeres de etapa de pruebas y de producción.Usa estas credenciales para interactuar con los clústeres de GKE, por ejemplo, a fin de verificar si una aplicación se ejecuta de forma correcta.
gcloud container clusters get-credentials staging --region us-central1
gcloud container clusters get-credentials prod --region us-central1
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:
Haz clic en Confirm.
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.
Especifica el proyecto que se usará para este instructivo:
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 Google 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.
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
Asegúrate de que las opciones de configuración de Google 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
Envía tu código fuente al repositorio:
git push --all google
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 Google Cloud Deploy para la CD. Los pasos de la canalización se definen en el activador de Cloud Build.
Crea un bucket de Cloud Storage para Cloud Build a fin de 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.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 pasos para la canalización de CI/CD se definen en este archivo:
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 Google Cloud:deploy/pipeline.yaml
, que es la canalización de entregadeploy/staging.yaml
ydeploy/prod.yaml
, que son los archivos de destinoCuando los archivos se registran, Google 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.
Google 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.
Google Cloud Deploy implementa la versión en el entorno de etapa de pruebas.
Google 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.
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.Ve a Cloud Build y observa 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, abre el navegador en el editor de Cloud Shell y dirígete a ide.cloud.google.com.
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.
En el panel que se encuentra en la parte inferior del Editor de Cloud Shell, selecciona Cloud Code.
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.En la terminal de Cloud Code, mantén el puntero sobre la primera URL en el resultado (
http://localhost:8080
).En la información sobre 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.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.
En el Editor de Cloud Shell, abre el archivo
index.html
.Busca la string
Sample App Info
y cámbiala asample 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.
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 este instructivo, pero si deseas obtener más detalles, consulta Depura una aplicación de Kubernetes.
Confirma el código
Ahora que realizaste un cambio en la aplicación, confirma el código:
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 por la dirección de correo electrónico conectada a tu cuenta de GitHub
- NAME por el nombre conectado a tu cuenta de GitHub
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 este instructivo, 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 sobre 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 mediante 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.
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
.Regresa al panel de Cloud Build y observa que se cree una compilación.
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
yskaffold test
del archivocloudbuild.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 de forma correcta con el siguiente mensaje:
Created Google Cloud Deploy rollout ROLLOUT_NAME in target staging
Abre la página de canalizaciones de entrega de Google 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.
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.
Accede a la aplicación desde Cloud Shell:
En el Editor de Cloud Shell, abre una pestaña nueva de la terminal.
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.
Cierra la segunda pestaña.
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 a fin de 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 Google 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:
Abre la descripción general de las canalizaciones de entrega de Google Cloud Deploy y selecciona la canalización cicd-sample.
Promueve la implementación de la etapa de pruebas a la de producción Para ello, deberás hacer lo siguiente:
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.
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.
Aprueba la implementación de forma manual:
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.
En la ventana que se abrirá, haz clic en el botón Review.
En la ventana siguiente, haz clic en Aprobar.
Regresa a la Descripción general de las canalizaciones de entrega de Google Cloud Deploy y selecciona la canalización cicd-sample.
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 mediante 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
Accede a la aplicación desde Cloud Shell:
En el Editor de Cloud Shell, abre una pestaña nueva de la terminal.
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.
Cierra esta segunda pestaña de la terminal.
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 este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Opción 1: Borra el proyecto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Opción 2: Borra los recursos individuales
Borra la canalización de Google Cloud Deploy:
gcloud deploy delivery-pipelines delete cicd-sample --region=us-central1 --force
Borra el activador de Cloud Build:
gcloud beta builds triggers delete cicd-sample-main
Borra los clústeres de etapa de pruebas y de producción:
gcloud container clusters delete staging
gcloud container clusters delete prod
Borra el repositorio en Cloud Source Repositories:
gcloud source repos delete cicd-sample
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/
Borra el repositorio en Artifact Registry:
gcloud artifacts repositories delete cicd-sample-repo \ --location us-central1
¿Qué sigue?
- Para aprender a implementar en una instancia de GKE privada, consulta Implementa en un clúster privado en una red de nube privada virtual.
- Para obtener prácticas recomendadas sobre la automatización de las implementaciones, consulta los siguientes vínculos:
- Consulta Tecnología de DevOps: Automatización de implementaciones para aprender a implementar, mejorar y medir la automatización de implementaciones.
- Automatiza tus implementaciones desde el framework de arquitectura.
- Para obtener más información sobre las estrategias de implementación, consulta los siguientes vínculos:
- Inicia las implementaciones de forma gradual desde el framework de arquitectura
- Estrategias de implementación y de prueba de aplicaciones
- Para obtener más información sobre las arquitecturas de referencia, los diagramas y las prácticas recomendadas, explora Cloud Architecture Center.