arrow_back

Canalizaciones de entrega continua con Spinnaker y Kubernetes Engine

Unirse Acceder

Canalizaciones de entrega continua con Spinnaker y Kubernetes Engine

1 hora 30 minutos 7 créditos

GSP114

Labs de autoaprendizaje de Google Cloud

Este lab práctico le enseñará a crear una canalización de entrega continua con Google Kubernetes Engine, Google Cloud Source Repositories, Google Cloud Container Builder y Spinnaker. Luego de crear una aplicación de prueba, debe configurar estos servicios para compilarla, probarla e implementarla automáticamente. Cuando modifique el código de la aplicación, este cambio activará la canalización de entrega continua para que vuelva a compilar, a probar y a implementar automáticamente la nueva versión.

Objetivos

  • Configurar su entorno mediante el inicio de Google Cloud Shell, la creación de un clúster de Kubernetes Engine y la configuración de su identidad y el esquema de administración de usuarios

  • Descargar una aplicación de prueba, crear un repositorio de Git y luego subirlo a Google Cloud Source Repository

  • Implementar Spinnaker en Kubernetes Engine con Helm

  • Crear una imagen de Docker

  • Generar activadores para crear imágenes de Docker cuando su aplicación cambie

  • Configurar una canalización de Spinnaker para implementar de forma confiable y continua su aplicación en Kubernetes Engine

  • Implementar un cambio de código que active la canalización y observar su lanzamiento en producción

Arquitectura de la canalización

Para poder entregarles continuamente actualizaciones de aplicaciones a sus usuarios, necesita un proceso automatizado que compile, pruebe y actualice su software de manera confiable. Los cambios de código deberían transmitirse automáticamente a través de una canalización que incluya la creación de artefactos, pruebas de unidades, pruebas funcionales y el lanzamiento en producción. En algunos casos querrá que una actualización de código se aplique solo a un subconjunto de sus usuarios, de modo que se emplee de forma realista antes de enviarla a la base de usuarios completa. Si uno de estos lanzamientos canary resulta insatisfactorio, su proceso automatizado debe ser capaz de revertir rápidamente los cambios del software.

8cda078d8123f982.png

Con Kubernetes Engine y Spinnaker puede crear una sólida transmisión de entrega constante que le permita asegurarse de que se entregue el software tan rápido como se lo desarrolle y valide. A pesar de que su objetivo final es la iteración rápida, primero debe asegurarse de que cada revisión de la aplicación pase por una serie de validaciones automatizadas antes de convertirse en candidata para el lanzamiento en producción. Cuando un cambio determinado haya sido examinado por la automatización, también podrá validar la aplicación manualmente y realizar más pruebas previas al lanzamiento.

Luego de que su equipo decida que la aplicación está lista para producción, un miembro del equipo puede aprobarla para la implementación de producción.

Canalización de entrega de aplicaciones

En este lab, compilará la canalización de entrega continua que se muestra en el siguiente diagrama.

7a1802b4383b4905.png

Configuración y requisitos

Configuración de Qwiklabs

Antes de hacer clic en el botón Comenzar lab

Lea estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando hace clic en Comenzar lab, indica por cuánto tiempo tendrá a su disposición los recursos de Google Cloud.

Este lab práctico de Qwiklabs le permitirá llevar a cabo las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, le proporciona credenciales temporales nuevas que utilizará para acceder a Google Cloud durante todo el lab.

Qué necesita

Para completar este lab, necesitará lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
  • Tiempo para completar el lab

Nota: Si ya tiene un proyecto o una cuenta personal de Google Cloud, no los use para este lab.

Nota: Si usa un dispositivo con Chrome OS, ejecute este lab en una ventana de incógnito.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

Active Google Cloud Shell

Google Cloud Shell es una máquina virtual que cuenta con herramientas de desarrollo. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Google Cloud Shell proporciona acceso de línea de comandos a sus recursos de GCP.

  1. En GCP Console, en la barra de herramientas superior derecha, haga clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell

  2. Haga clic en Continue (Continuar):

    cloudshell_continue

Toma unos minutos aprovisionar y conectarse con el entorno. Cuando está conectado, ya está autenticado y el proyecto está configurado en su PROJECT_ID . Por ejemplo:

Terminal de Cloud Shell

gcloud es la herramienta de línea de comandos para Google Cloud Platform. Viene preinstalada en Cloud Shell y es compatible con la función “tab-completion”.

Puede mostrar el nombre de la cuenta activa con este comando:

gcloud auth list

Resultado:

ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
    $ gcloud config set account `ACCOUNT`
	

Puede mostrar el ID del proyecto con este comando:

gcloud config list project
	

Resultado:

[core]
project = <project_ID>
	

Resultado de ejemplo:

[core]
project = qwiklabs-gcp-44776a13dea667a6
	

Configure su entorno

Configure la infraestructura y las identidades necesarias para este lab. Primero creará un clúster de Kubernetes Engine para implementar Spinnaker y la aplicación de prueba.

  1. Configure la zona de procesamiento predeterminada:

gcloud config set compute/zone us-central1-f
  1. Cree un clúster de Kubernetes Engine usando el instructivo de aplicaciones de prueba de Spinnaker:

gcloud container clusters create spinnaker-tutorial \
    --machine-type=n1-standard-2

La creación de un clúster tarda entre cinco y diez minutos en completarse. Espere a que se termine de aprovisionar el clúster antes de continuar.

Una vez terminado, verá un informe que mostrará el nombre, la ubicación, la versión, la dirección IP, el tipo de máquina, la versión de nodo, la cantidad de nodos y el estado del clúster, lo que indicará que se está ejecutando el clúster.

Configure la administración de identidades y accesos

Cree una cuenta de servicio en Cloud Identity & Access Management (Cloud IAM) para delegarle permisos a Spinnaker y, así, permitirle almacenar datos en Cloud Storage. Spinnaker almacena los datos de la canalización en Cloud Storage para garantizar su confiabilidad y resiliencia. Si su implementación de Spinnaker falla inesperadamente, puede crear una implementación idéntica en solo minutos con acceso a los mismos datos de canalización que la original.

Suba su secuencia de comandos de inicio a un bucket de Cloud Storage siguiendo estos pasos:

  1. Cree la cuenta de servicio:

gcloud iam service-accounts create spinnaker-account \
    --display-name spinnaker-account
  1. Almacene la dirección de correo electrónico de la cuenta de servicio y el ID de su proyecto actual en variables de entorno para utilizarlas en comandos posteriores:

export SA_EMAIL=$(gcloud iam service-accounts list \
    --filter="displayName:spinnaker-account" \
    --format='value(email)')
export PROJECT=$(gcloud info --format='value(config.project)')
  1. Vincule la función storage.admin a su cuenta de servicio:

gcloud projects add-iam-policy-binding $PROJECT \
    --role roles/storage.admin \
    --member serviceAccount:$SA_EMAIL
  1. Descargue la clave de la cuenta de servicio. Más adelante, instalará Spinnaker y subirá esta clave en Kubernetes Engine.

gcloud iam service-accounts keys create spinnaker-sa.json \
     --iam-account $SA_EMAIL

(Resultado)

created key [12f224e036437704b91a571792462ca6fc4cd438] of type [json] as [spinnaker-sa.json] for [spinnaker-account@qwiklabs-gcp-gcpd-f5e16da10e5d.iam.gserviceaccount.com]

Configure Cloud Pub/Sub para activar las canalizaciones de Spinnaker

  1. Cree el tema de Cloud Pub/Sub para las notificaciones de Container Registry.

gcloud pubsub topics create projects/$PROJECT/topics/gcr
  1. Cree una suscripción que pueda leer Spinnaker para recibir las notificaciones de las imágenes que se envíen.

gcloud pubsub subscriptions create gcr-triggers \
    --topic projects/${PROJECT}/topics/gcr
  1. Otorgue permisos a la cuenta de servicio de Spinnaker para que lea desde la suscripción gcr-triggers.

export SA_EMAIL=$(gcloud iam service-accounts list \
    --filter="displayName:spinnaker-account" \
    --format='value(email)')
gcloud beta pubsub subscriptions add-iam-policy-binding gcr-triggers \
    --role roles/pubsub.subscriber --member serviceAccount:$SA_EMAIL

Pruebe la tarea completada

Haga clic en Revisar mi progreso para verificar la tarea realizada. Si configuró correctamente el entorno, verá una puntuación de evaluación.

Configurar su entorno

Cómo implementar Spinnaker con Helm

En esta sección, utilizará Helm para implementar Spinnaker desde el repositorio de Gráficos. Helm es un administrador de paquetes que puede utilizar para configurar e implementar aplicaciones de Kubernetes.

Instale Helm

  1. Descargue el objeto binario helm y, luego, instálelo:

wget https://get.helm.sh/helm-v3.1.1-linux-amd64.tar.gz
  1. Descomprima el archivo en su sistema local:

tar zxfv helm-v3.1.1-linux-amd64.tar.gz
cp linux-amd64/helm .
  1. Otorgue a Helm la función de cluster-admin en su clúster:

kubectl create clusterrolebinding user-admin-binding \
    --clusterrole=cluster-admin --user=$(gcloud config get-value account)
  1. Otorgue a Spinnaker la función de cluster-admin para que pueda implementar recursos en todos los espacios de nombres:

kubectl create clusterrolebinding --clusterrole=cluster-admin \
    --serviceaccount=default:default spinnaker-admin
  1. Agregue las implementaciones de tablas estables a los repositorios utilizables de Helm (incluido Spinnaker):

./helm repo add stable https://charts.helm.sh/stable
./helm repo update

Configure Spinnaker

  1. En Cloud Shell, cree un bucket para Spinnaker a fin de almacenar la configuración de su canalización:

export PROJECT=$(gcloud info \
    --format='value(config.project)')
export BUCKET=$PROJECT-spinnaker-config
gsutil mb -c regional -l us-central1 gs://$BUCKET
  1. Ejecute el siguiente comando para crear un archivo spinnaker-config.yaml, que describe de qué manera Helm debe instalar Spinnaker:

export SA_JSON=$(cat spinnaker-sa.json)
export PROJECT=$(gcloud info --format='value(config.project)')
export BUCKET=$PROJECT-spinnaker-config
cat > spinnaker-config.yaml <<EOF
gcs:
  enabled: true
  bucket: $BUCKET
  project: $PROJECT
  jsonKey: '$SA_JSON'
dockerRegistries:
- name: gcr
  address: https://gcr.io
  username: _json_key
  password: '$SA_JSON'
  email: 1234@5678.com
# Disable minio as the default storage backend
minio:
  enabled: false
# Configure Spinnaker to enable GCP services
halyard:
  spinnakerVersion: 1.19.4
  image:
    repository: us-docker.pkg.dev/spinnaker-community/docker/halyard
    tag: 1.32.0
    pullSecrets: []
  additionalScripts:
    create: true
    data:
      enable_gcs_artifacts.sh: |-
        \$HAL_COMMAND config artifact gcs account add gcs-$PROJECT --json-path /opt/gcs/key.json
        \$HAL_COMMAND config artifact gcs enable
      enable_pubsub_triggers.sh: |-
        \$HAL_COMMAND config pubsub google enable
        \$HAL_COMMAND config pubsub google subscription add gcr-triggers \
          --subscription-name gcr-triggers \
          --json-path /opt/gcs/key.json \
          --project $PROJECT \
          --message-format GCR
EOF

Implemente el gráfico de Spinnaker

  1. Utilice la interfaz de línea de comandos de Helm para implementar el gráfico con su conjunto de configuración:

./helm install -n default cd stable/spinnaker -f spinnaker-config.yaml \
           --version 2.0.0-rc9 --timeout 10m0s --wait
La instalación suele demorar entre 5 y 8 minutos en completarse.
  1. Luego de que se complete el comando, ejecute el siguiente comando para configurar la redirección de puertos hacia Spinnaker desde Cloud Shell:

export DECK_POD=$(kubectl get pods --namespace default -l "cluster=spin-deck" \
    -o jsonpath="{.items[0].metadata.name}")
kubectl port-forward --namespace default $DECK_POD 8080:9000 >> /dev/null &
  1. Para abrir la interfaz de usuario de Spinnaker, haga clic en el ícono Vista previa en la Web, ubicado en la parte superior de la ventana de Cloud Shell, y seleccione Vista previa en el puerto 8080.

bde9fe42e27656fb.png

Se abrirá la pantalla de bienvenida seguida de la interfaz de usuario de Spinnaker:

8c03705c17bf3b7f.png

Deje esa pestaña abierta. Por aquí accederá a la IU de Spinnaker.

Pruebe la tarea completada

Haga clic en Revisar mi progreso para verificar la tarea realizada. Si implementó correctamente el gráfico de Spinnaker por medio de Kubernetes Helm, verá una puntuación de evaluación.

Implementar el gráfico de Spinnaker por medio de Kubernetes Helm

Compile la imagen de Docker

En esta sección, configurará Cloud Build para detectar cambios en el código fuente de su aplicación, compilar una imagen de Docker y enviarla a Container Registry.

Cree su repositorio de código fuente

  1. En la pestaña de Cloud Shell, descargue el código fuente de la aplicación de muestra:

gsutil -m cp -r gs://spls/gsp114/sample-app.tar .
  1. Descomprima el código fuente:

mkdir sample-app
tar xvf sample-app.tar -C ./sample-app
  1. Cambie al directorio del código fuente:

cd sample-app
  1. Configure el nombre de usuario y la dirección de correo electrónico para sus confirmaciones de Git en este repositorio. Reemplace [USERNAME] por un nombre de usuario que cree:

git config --global user.email "$(gcloud config get-value core/account)"
git config --global user.name "[USERNAME]"
  1. Realice la confirmación inicial de su repositorio de código fuente:

git init
git add .
git commit -m "Initial commit"
  1. Cree un repositorio para alojar su código:

gcloud source repos create sample-app

Ignore el mensaje "you may be billed for this repository".

git config credential.helper gcloud.sh
  1. Agregue el repositorio que acaba de crear como remoto:

export PROJECT=$(gcloud info --format='value(config.project)')
git remote add origin https://source.developers.google.com/p/$PROJECT/r/sample-app
  1. Envíe su código a la rama principal del repositorio nuevo:

git push origin master
  1. Verifique que pueda ver su código fuente en Console. Para ello, haga clic en Menú de navegación > Source Repositories.

nav-source-repo.png

  1. Haga clic en sample-app.

source-repo.png

Configure sus activadores de compilación

Configure Container Builder para compilar y enviar sus imágenes de Docker cada vez que envíe las etiquetas Git a su repositorio de código fuente. Container Builder comprueba automáticamente su código fuente, compila la imagen de Docker desde Dockerfile en su repositorio y envía esa imagen a Google Cloud Container Registry.

bcab2f07975c8776.png

  1. En Cloud Platform Console, haga clic en Menú de navegación > Cloud Build > Activadores.

  2. Haga clic en Crear activador.

CloudBuild_BuildTriggers.png

  1. Establezca la siguiente configuración de activación:

  • Nombre: sample-app-tags

  • Evento: Envío de etiqueta nueva

  • Seleccione el repositorio sample-app recién creado.

  • Etiqueta: v1.*

  • Configuración de compilación: Archivo de configuración de Cloud Build (YAML o JSON)

  • Ubicación del archivo de configuración de Cloud Build: /cloudbuild.yaml

  1. Haga clic en CREAR.

trigger_confg.png

En lo sucesivo, cada vez que envíe una etiqueta de Git con el prefijo "v" hacia su repositorio de código fuente, Container Builder compilará y enviará automáticamente su aplicación como una imagen de Docker a Container Registry.

Prepare sus manifiestos de Kubernetes para utilizar en Spinnaker

Spinnaker necesita tener acceso a sus manifiestos de Kubernetes para poder implementarlos en sus clústeres. En esta sección, se creará un bucket de Cloud Storage al que se propagarán los manifiestos durante el proceso de CI en Cloud Build. Una vez que sus manifiestos estén en Cloud Storage, Spinnaker podrá descargarlos y aplicarlos durante la ejecución de su canalización.

  1. Cree el bucket:

export PROJECT=$(gcloud info --format='value(config.project)')
gsutil mb -l us-central1 gs://$PROJECT-kubernetes-manifests
  1. Habilite el control de versiones en el bucket para tener un historial de sus manifiestos:

gsutil versioning set on gs://$PROJECT-kubernetes-manifests
  1. Configure el ID del proyecto correcto en sus manifiestos de implementación de Kubernetes:

sed -i s/PROJECT/$PROJECT/g k8s/deployments/*
  1. Confirme los cambios en el repositorio:

git commit -a -m "Set project ID"

Compile su imagen

Siga estos pasos para enviar su primera imagen:

  1. En Cloud Shell, en el directorio sample-app, cree una etiqueta Git:

git tag v1.0.0
  1. Envíe la etiqueta:

git push --tags

(resultado)

To https://source.developers.google.com/p/qwiklabs-gcp-ddf2925f84de0b16/r/sample-app
* [new tag]      v1.0.0 -> v1.0.0
  1. Vaya a Cloud Console. En Cloud Build, haga clic en Historial, en el panel izquierdo, para verificar que se haya activado la compilación. En caso contrario, verifique que se haya configurado correctamente el activador en la sección anterior.

CloudBuild_BuildHistory.png

Permanezca en esta página y espere a que se complete la compilación antes de seguir con la próxima sección.

Pruebe la tarea completada

Haga clic en Revisar mi progreso para verificar la tarea realizada. Si compiló correctamente la imagen de Docker, verá una puntuación de evaluación.

Compilar la imagen de Docker

Cómo configurar su canalización de implementación

Ahora que sus imágenes se compilan automáticamente, debe implementarlas en el clúster de Kubernetes.

Debe implementarlas en un entorno de escala reducida verticalmente para realizar pruebas de integración. Una vez superadas las pruebas de integración, debe aprobar los cambios de forma manual para implementar el código en los servicios de producción.

Instale la CLI de spin para administrar Spinnaker

spin es una utilidad de línea de comandos que sirve para administrar las aplicaciones y canalizaciones de Spinnaker.

  1. Descargue la versión 1.14.0 de spin.

curl -LO https://storage.googleapis.com/spinnaker-artifacts/spin/1.14.0/linux/amd64/spin
  1. Haga que spin sea ejecutable:

chmod +x spin

Cree la canalización de implementación

  1. Use spin para crear una aplicación denominada sample en Spinnaker. Configure la dirección de correo electrónico del propietario de la aplicación en Spinnaker:

./spin application save --application-name sample \
                        --owner-email "$(gcloud config get-value core/account)" \
                        --cloud-providers kubernetes \
                        --gate-endpoint http://localhost:8080/gate

A continuación, cree la canalización de entrega continua. En este instructivo, se configura la canalización para detectar el momento en que llega una imagen de Docker con una etiqueta que contiene el prefijo "v" a su Container Registry.

  1. Desde su directorio de código fuente sample-app, ejecute el siguiente comando para subir una canalización de ejemplo a su instancia de Spinnaker:

export PROJECT=$(gcloud info --format='value(config.project)')
sed s/PROJECT/$PROJECT/g spinnaker/pipeline-deploy.json > pipeline.json
./spin pipeline save --gate-endpoint http://localhost:8080/gate -f pipeline.json

Active la ejecución de su canalización de manera manual y visualícela

La configuración que acaba de crear utiliza las notificaciones de las imágenes recién etiquetadas que se envían con el fin de activar una canalización de Spinnaker. En uno de los pasos anteriores, envió una etiqueta a Cloud Source Repositories que activó Cloud Build para que compilara y enviara su imagen a Container Registry. Para verificar la canalización, actívela manualmente.

  1. En la IU de Spinnaker, haga clic en Applications, en la parte superior de la pantalla, para ver su lista de aplicaciones administradas. sample es su aplicación. Si no ve sample, intente actualizar la pestaña Applications de Spinnaker.

app-sample.png

  1. Haga clic en sample para ver la implementación de su aplicación.
  2. Haga clic en Pipelines en la parte superior para ver el estado de las canalizaciones de aplicaciones.
  3. Haga clic en Start Manual Execution para activar la canalización por primera vez.

start-man-ex.png

  1. Haga clic en Run.

  2. Haga clic en Execution Details para ver más información sobre el progreso de la canalización.

man-start-detail.png

La barra de progreso muestra el estado de la canalización de implementación y sus pasos.

progress-bar.png

Los pasos en color azul son los que se encuentran en ejecución, los verdes son los que se completaron correctamente y los rojos son los que fallaron.

  1. Haga clic en una etapa para ver sus detalles.

Luego de 3 a 5 minutos, se completa la fase de pruebas de integración y se debe aprobar la canalización de forma manual para continuar con la implementación.

  1. Desplácese sobre el ícono de "persona" amarillo y haga clic en Continuar.

continue-to-deploy.png

Su lanzamiento continúa con las implementaciones del frontend y backend de producción. Tarda unos minutos en completarse.

  1. Para visualizar la aplicación, seleccione Infrastructure > Load Balancers en la parte superior de la IU de Spinnaker.

infrasturcture-lb.png

  1. Desplácese hacia abajo en la lista de balanceadores de cargas y haga clic en Default, en service sample-frontend-production. Los detalles del balanceador de cargas aparecerán en el lado derecho de la página. De lo contrario, tal vez deba actualizar el navegador.

  2. Desplácese hacia abajo por el panel de detalles ubicado en la parte derecha y copie la dirección IP de su aplicación. Para ello, haga clic en el botón de portapapeles en la IP de Ingress. Es posible que el vínculo de la IP de Ingress de la IU de Spinnaker use HTTPS de forma predeterminada, mientras que la aplicación está configurada para usar HTTP.

ingress.png

  1. Pegue la dirección en una pestaña nueva del navegador para ver la aplicación. Es posible que vea que se muestra la versión canary, pero, si actualiza, también verá la versión de producción.

5350848ad1354d1c.png

Ya activó manualmente la canalización para compilar, probar e implementar su aplicación.

Pruebe la tarea completada

Haga clic en Revisar mi progreso para verificar la tarea realizada. Si creó correctamente balanceadores de cargas de servicio, verá una puntuación de evaluación.

Crear balanceadores de cargas de servicio

Pruebe la tarea completada

Haga clic en Revisar mi progreso para verificar la tarea realizada. Si implementó correctamente una imagen en producción, verá una puntuación de evaluación.

Implementar una imagen en producción

Cómo activar la canalización mediante cambios de código

Para probar la canalización de extremo a extremo, haga un cambio de código, envíe una etiqueta Git y revise la ejecución de la canalización en respuesta. Al enviar una etiqueta Git que comienza con "v", usted activa Container Builder para que compile una nueva imagen de Docker y la envíe a Container Registry. Spinnaker detecta que la nueva etiqueta de la imagen comienza con "v" y activa una canalización para implementar la imagen en versiones canary, ejecutar pruebas y desplegar la misma imagen en todos los pods de la implementación.

  1. Desde su directorio sample-app, cambie el color de la aplicación de naranja a azul:

sed -i 's/orange/blue/g' cmd/gke-info/common-service.go
  1. Etiquete su cambio y envíelo al repositorio del código fuente:

git commit -a -m "Change color to blue"
git tag v1.0.1
git push --tags
  1. En Console, en Cloud Build > Historial, espere un par de minutos para que aparezca la compilación nueva. Es posible que deba actualizar la página. Espere a que se complete la compilación antes de continuar con el siguiente paso.

  2. Regrese a la IU de Spinnaker y haga clic en Pipelines para ver cómo la canalización comienza a implementar la imagen. La canalización activada automáticamente tardará unos minutos en aparecer. Es posible que deba actualizar la página.

d006977feef1a15d.png

Pruebe la tarea completada

Haga clic en Revisar mi progreso para verificar la tarea realizada. Si activó correctamente la canalización mediante cambios de código, verá una puntuación de evaluación.

Activar canalizaciones mediante cambios de código

Observe las implementaciones canary

  1. Cuando se pause la implementación, en espera para lanzarse a producción, regrese a la página web en la que se visualiza su aplicación en ejecución y comience a actualizar la pestaña que contenga su aplicación. Cuatro de sus backends ejecutarán la versión anterior de su aplicación y solo uno ejecutará la canary. La versión nueva de su aplicación debería aparecer en color azul luego de actualizar la pestaña, aproximadamente, unas cinco veces.

  2. Cuando se complete la canalización, su aplicación se verá como la siguiente captura de pantalla. Tenga en cuenta que el color cambió a azul porque cambió su código y que el campo Versión ahora aparece como canary.

Blue_Application_Output.png

Ya lanzó correctamente su aplicación en todo su entorno de producción.

  1. Además, puede revertir este cambio si deshace su confirmación anterior. Las reversiones agregan una etiqueta nueva (v1.0.2) y la vuelven a enviar a través de la misma canalización que utilizó para implementar v1.0.1:

git revert v1.0.1

Presione CTRL + O, INTRO, CTRL + X.

git tag v1.0.2
git push --tags
  1. Una vez que se complete la compilación y, luego, la canalización, para verificar la reversión, haga clic en Infrastructure > Load Balancers y, luego, en service sample-frontend-production Default y copie la dirección IP de Ingress en una pestaña nueva.

Ahora, se muestra su aplicación nuevamente en naranja y puede ver el número de versión de Producción.

revert.png

¡Felicitaciones!

Completó correctamente el lab Canalizaciones de entrega continua con Spinnaker y Kubernetes Engine.

bf1e2a23518ceceb.png DevOpsTransparent.png

Finalice su Quest

Este lab de autoaprendizaje forma parte de las Quests Google Cloud Solutions I: Scaling Your Infrastructure y DevOps Essentials de Qwiklabs. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completa esta Quest, obtendrá la insignia que se muestra arriba como reconocimiento de su logro. Puede hacer públicas sus insignias y agregar vínculos a ellas en su currículum en línea o en sus cuentas de redes sociales. Inscríbase en una Quest y obtenga un crédito inmediato de finalización si realizó este lab. Consulte otras Quests de Qwiklabs disponibles.

Realice su próximo lab

Continúe su Quest con Cómo ejecutar servidores dedicados para juegos en Google Kubernetes Engine, o bien consulte estas sugerencias:

Próximos pasos/Más información

Google Cloud Training & Certification

Aproveche al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarlo a ponerse en marcha rápidamente y a seguir aprendiendo. Para que pueda realizar nuestros cursos cuando más le convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: según demanda, presenciales y virtuales. Las certificaciones lo ayudan a validar y demostrar sus habilidades y experiencia en las tecnologías de Google Cloud.

Última actualización del manual: 12 de mes de julio de 2021
Prueba más reciente del lab: 12 de mes de julio de 2021

Copyright 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.