
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a Kubernetes cluster and deployments (Auth, Hello, and Frontend)
/ 50
Canary Deployment
/ 50
Normalmente, las prácticas de DevOps usarán varias implementaciones para administrar situaciones de implementación de aplicaciones como “Implementación continua”, “Implementaciones azul-verde”, “Implementaciones de versiones canary” y mucho más. En este lab, aprenderás a escalar y administrar contenedores para que puedas alcanzar estas situaciones comunes en las que se utilizan varias implementaciones heterogéneas.
En este lab, aprenderás a realizar las siguientes tareas:
kubectl
yaml
Para maximizar tu aprendizaje, sigue estas recomendaciones para este lab:
Las implementaciones heterogéneas normalmente implican conectar dos o más entornos o regiones de infraestructura distintos para abordar una necesidad operativa o técnica específica. Las implementaciones heterogéneas se llaman "híbridas", "de múltiples nubes" o "pública-privada", según los datos específicos de la implementación.
A los efectos de este lab, las implementaciones heterogéneas incluyen aquellas que abarcan regiones dentro de un único entorno de nube, múltiples entornos de nube pública (múltiples nubes) o una combinación de entornos de nube locales y públicas (híbridas o pública-privada).
Pueden surgir varios desafíos comerciales y técnicos en las implementaciones que se limitan a un único entorno o región:
Las implementaciones heterogéneas pueden ayudar a abordar estos desafíos, pero su arquitectura debe usar procesos y procedimientos programáticos y determinísticos. Los procedimientos de implementación por única vez o ad hoc pueden hacer que las implementaciones o procesos sean intolerantes a errores y frágiles. Los procesos ad hoc pueden perder datos o disminuir el tráfico. Los buenos procesos de implementación deben ser repetibles y utilizar enfoques comprobados para administrar el aprovisionamiento, la configuración y el mantenimiento.
Estas son tres situaciones comunes para la implementación heterogénea:
Los siguientes ejercicios repasan algunos casos de uso comunes para implementaciones heterogéneas, junto con enfoques de buen diseño que utilizan Kubernetes y otros recursos de infraestructura para lograrlos.
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
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:
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
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.
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
Haz clic en Siguiente.
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
También puedes encontrar la contraseña en el panel Detalles del lab.
Haz clic en Siguiente.
Haga clic para avanzar por las páginas siguientes:
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
Haz clic en Autorizar.
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
Configura tu zona de trabajo de Google Cloud con la ejecución del siguiente comando, sustituyendo la zona local de la siguiente manera
Para comenzar, consulta el objeto Deployment.
explain
en kubectl
nos puede dar información sobre el objeto Deployment:--recursive
:deployments/auth.yaml
:image
en la sección de contenedores del Deployment por la siguiente información:auth.yaml
: presiona <Esc>
y luego escribe:<Intro>
. Ahora, crea una implementación simple. Examina el archivo de configuración de la implementación:Resultado:
Observa cómo la implementación está creando una réplica y está utilizando la versión 1.0.0 del contenedor de auth.
Cuando ejecutes el comando kubectl create
para crear el Deployment auth, creará un Pod que se ajuste a los datos en el manifiesto de implementación. Esto significa que puedes escalar la cantidad de Pods con solo modificar el número que se especifica en el campo replicas
.
kubectl create
:ReplicaSet
para él. Puedes verificar que se creó un ReplicaSet
para el Deployment con el siguiente comando:Deberías ver un ReplicaSet
con un nombre tipo auth-xxxxxxx
.
ReplicaSet
:Es momento de crear un servicio para la implementación auth. Ya has visto los archivos de manifiesto de servicio, así que no entraremos en detalles aquí.
kubectl create
para crear el servicio auth:hello
:frontend
:ConfigMap
para el frontend.Recibirás la respuesta hello.
kubectl
para usar curl como una sola línea:Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab. Si creaste correctamente un clúster de Kubernetes y los Deployment Auth, Hello y Frontend, verás una puntuación de evaluación.
Ahora que has creado un Deployment, puedes escalarlo. Para realizar esta acción, actualiza el campo spec.replicas
.
kubectl explain
nuevamente:kubectl scale
:Luego de que se actualice el Deployment, Kubernetes actualizará automáticamente el objeto ReplicaSet
asociado y, luego, iniciará nuevos Pods para que el número total de estos sea igual a 5.
hello
en ejecución:Ahora sabes sobre los objetos Deployment de Kubernetes y sobre cómo administrar y escalar un grupo de Pods.
Los objetos Deployment admiten la actualización de imágenes a una nueva versión a través de un mecanismo de actualización progresiva. Cuando se actualiza un Deployment con una versión nueva, crea un nuevo objeto ReplicaSet
y aumenta lentamente la cantidad de réplicas en el ReplicaSet
nuevo a medida que disminuye las réplicas en el ReplicaSet
anterior.
image
en la sección de contenedores del Deployment por la siguiente información:El Deployment actualizado se guardará en tu clúster y Kubernetes comenzará una actualización progresiva.
ReplicaSet
que crea Kubernetes:Si detectas problemas con una actualización progresiva en ejecución, páusala para detenerla.
La actualización progresiva está en pausa, lo que significa que algunos Pods están en la nueva versión y otros, en la anterior.
resume
:status
:Resultado:
Supongamos que se detectó un error en tu nueva versión. Dado que se supone que la nueva versión tiene problemas, cualquier usuario conectado a los nuevos Pods experimentará esos problemas.
Es preferible revertirla a la versión anterior para poder investigar y, luego, lanzar una versión que se haya corregido.
rollout
para revertirla a la versión anterior:¡Genial! Aprendiste cómo realizar una actualización progresiva para Deployments de Kubernetes y a actualizar aplicaciones sin tiempo de inactividad.
Cuando desees probar una nueva implementación en producción con un subconjunto de tus usuarios, usa una implementación de versiones canary. Las implementaciones de versiones canary te permiten actualizar un cambio en un pequeño subconjunto de tus usuarios para mitigar el riesgo asociado con los nuevos lanzamientos.
Una implementación de versiones canary consiste en una implementación separada con tu nueva versión y un servicio que apunta tanto a tu implementación normal y estable como a tu implementación de versiones canary.
Resultado:
hello
y hello-canary
. Verifícalo con este comando kubectl
:En el servicio hello
, el selector app:hello
hará coincidir los Pods en ambas implementaciones, la de producción y la de versiones canary. Sin embargo, debido a que la implementación de versiones canary tiene una cantidad menor de Pods, será visible para menos usuarios.
hello
que se entrega según la solicitud:Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab. Si creaste correctamente una implementación de versiones canary, verás una puntuación de evaluación.
En este lab, cada solicitud que se envió al servicio nginx tuvo la oportunidad de que la entregara la implementación de versiones canary. Pero ¿qué pasaría si quisieras asegurarte de que la implementación de versiones canary no entregará solicitudes a un usuario? Un caso de uso podría ser que la IU de una aplicación haya cambiado y no desees confundir al usuario. En un caso como este, es conveniente que el usuario se "mantenga" con una implementación o con otra.
Para hacer esto, crea un servicio con afinidad de sesión. De esta manera, siempre se entregarán solicitudes al mismo usuario desde la misma versión. En el ejemplo a continuación, el servicio es el mismo de antes, pero se agregó un nuevo campo sessionAffinity
y se configuró como ClientIP
. Las solicitudes de los clientes que tengan la misma dirección IP se enviarán a la misma versión de la aplicación hello
.
Debido a que es difícil configurar un entorno para probar esto, no es necesario hacerlo aquí, pero, tal vez, prefieras utilizar sessionAffinity
para implementaciones de versiones canary en producción.
Las actualizaciones progresivas son ideales porque te permiten implementar una aplicación lentamente con una sobrecarga mínima, un impacto mínimo en el rendimiento y un tiempo de inactividad mínimo. Hay casos en los que es beneficioso modificar los balanceadores de cargas para que apunten a esa nueva versión solo después de que se haya implementado por completo. En este caso, las implementaciones azul-verde son el camino a seguir.
Para lograr esto, Kubernetes crea dos implementaciones separadas: una para la versión “azul” anterior y otra para la nueva versión “verde”. Utiliza tu implementación hello
existente para la versión “azul”. Se accederá a las implementaciones a través de un servicio que actuará como el router. Una vez que la nueva versión “verde” esté en funcionamiento, actualizarás el servicio para comenzar a usar esa versión.
Utiliza el servicio hello existente, pero actualízalo para que tenga un selector app:hello
, versión: 1.0.0
. El selector coincidirá con la implementación “azul” existente. Sin embargo, no coincidirá con la implementación “verde” porque usará una versión diferente.
resource service/hello is missing
ya que se repara automáticamente.Si quieres admitir un estilo de implementación azul-verde, debes crear una nueva implementación “verde” para la nueva versión. La implementación verde actualiza la etiqueta de la versión y la ruta de la imagen.
Si es necesario, puedes revertir a la versión anterior de la misma manera.
¡Lo lograste! Aprendiste acerca de las implementaciones azul-verde y cómo implementar actualizaciones en las aplicaciones que necesitan cambiar las versiones de una sola vez.
Tuviste la oportunidad de trabajar más con la herramienta de línea de comandos kubectl
y muchos estilos de implementaciones configurados en archivos YAML para iniciar, actualizar y escalar tus implementaciones. Con esta base de práctica, deberías sentirte a gusto cuando aplicas estas habilidades a tu propio trabajo de DevOps.
Soluciones y guías de DevOps en la documentación de Google Cloud.
En el sitio web de Kubernetes, comunícate con la Comunidad de Kubernetes.
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 2 de abril de 2024
Prueba más reciente del lab: 14 de agosto de 2023
Copyright 2025 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.
Este contenido no está disponible en este momento
Te enviaremos una notificación por correo electrónico cuando esté disponible
¡Genial!
Nos comunicaremos contigo por correo electrónico si está disponible
One lab at a time
Confirm to end all existing labs and start this one