arrow_back

Implementa el servicio del balanceador de cargas de Kubernetes con Terraform

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Implementa el servicio del balanceador de cargas de Kubernetes con Terraform

Lab 35 minutos universal_currency_alt 5 créditos show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP233

Labs de autoaprendizaje de Google Cloud

Descripción general

En Terraform, un proveedor es la abstracción lógica de una API ascendente. En este lab, te mostraremos cómo configurar un clúster de Kubernetes y, luego, implementar un servicio NGINX de balanceador de cargas en él.

Objetivos

En este lab, aprenderás a hacer lo siguiente:

  • Implementar un clúster de Kubernetes junto con un servicio a través de Terraform

Requisitos previos

Para este lab, debes tener experiencia en los siguientes temas:

  • Conocimiento de los servicios de Kubernetes
  • Conocimiento de la CLI de kubectl

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

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:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

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

Activa Cloud Shell

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.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola 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:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

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.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

  2. Ahora, el resultado debería verse de la siguiente manera:

Resultado:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = <project_ID>

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: Para obtener toda la documentación de gcloud, consulta la guía con la descripción general de gcloud CLI en Google Cloud.

Servicios de Kubernetes

Un servicio es un grupo de pods que se ejecutan en el clúster. Los servicios son "económicos" y puedes tener varios servicios dentro del clúster. Los de Kubernetes pueden potenciar una arquitectura de microservicios de forma eficiente.

Los servicios proporcionan funciones importantes que se estandarizan en todo el clúster: balanceo de cargas, descubrimiento de servicios entre aplicaciones y funciones para admitir implementaciones de aplicaciones sin tiempo de inactividad.

Cada servicio tiene una búsqueda de etiquetas de pods que define los pods encargados de procesar los datos del servicio. Con frecuencia, esta búsqueda de etiquetas coincide con los pods creados por uno o más controladores de replicación. Existe la posibilidad de contar con escenarios de enrutamiento potentes si se actualiza la búsqueda de etiquetas de un servicio mediante la API de Kubernetes con software de implementación.

¿Por qué debería usar Terraform?

Si bien puedes usar kubectl o herramientas similares basadas en CLI asignadas a llamadas a la API para administrar todos los recursos de Kubernetes descritos en los archivos YAML, la organización con Terraform presenta algunos beneficios:

  • Un lenguaje: Puedes usar el mismo lenguaje de configuración para aprovisionar la infraestructura de Kubernetes y para implementar aplicaciones en ella.
  • Detección de desvío: terraform plan siempre te mostrará la diferencia entre la realidad en un momento dado y la configuración que tienes pensado aplicar.
  • Administración de ciclo de vida completo: Al principio, Terraform no solo crea recursos, sino que ofrece un comando único para crear, actualizar y borrar recursos rastreados sin la necesidad de inspeccionar la API para identificarlos.
  • Comentarios síncronos: Si bien el comportamiento asíncrono suele ser útil, en ocasiones es contraproducente, ya que el trabajo de identificar el resultado de una operación (fallas o detalles de un recurso creado) se deja en manos del usuario. Por ejemplo, no contarás con una IP o un nombre de host del balanceador de cargas hasta que haya finalizado el aprovisionamiento, y, por ende, no podrás crear ningún Registro DNS que apunte a él.
  • Gráfico de relaciones: Terraform comprende las relaciones entre los recursos que pueden ayudar con la programación (p. ej., no intentará crear un servicio en un clúster de Kubernetes hasta que el clúster exista).

Tarea 1. Clona el código de muestra

  1. En Cloud Shell, comienza por clonar el código de muestra:
gsutil -m cp -r gs://spls/gsp233/* .
  1. Navega al directorio tf-gke-k8s-service-lb:
cd tf-gke-k8s-service-lb

Tarea 2: Examina el código

  1. Revisa el contenido del archivo main.tf:
cat main.tf

Resultado de ejemplo:

... variable "region" { type = string description = "Region for the resource." } variable "location" { type = string description = "Location represents region/zone for the resource." } variable "network_name" { default = "tf-gke-k8s" } provider "google" { region = var.region } resource "google_compute_network" "default" { name = var.network_name auto_create_subnetworks = false } resource "google_compute_subnetwork" "default" { name = var.network_name ip_cidr_range = "10.127.0.0/20" network = google_compute_network.default.self_link region = var.region private_ip_google_access = true } ...
  • Se definen variables para los campos region, zone y network_name, que se usarán para crear el clúster de Kubernetes.
  • El proveedor de Google Cloud nos permitirá crear recursos en este proyecto.
  • Existen varios recursos definidos para crear la red y el clúster apropiados.
  • Al final, hay algunos resultados que verás después de ejecutar terraform apply.
  1. Revisa el contenido del archivo k8s.tf:
cat k8s.tf

Resultado de ejemplo:

provider "kubernetes" { version = "~> 1.10.0" host = google_container_cluster.default.endpoint token = data.google_client_config.current.access_token client_certificate = base64decode( google_container_cluster.default.master_auth[0].client_certificate, ) client_key = base64decode(google_container_cluster.default.master_auth[0].client_key) cluster_ca_certificate = base64decode( google_container_cluster.default.master_auth[0].cluster_ca_certificate, ) } resource "kubernetes_namespace" "staging" { metadata { name = "staging" } } resource "google_compute_address" "default" { name = var.network_name region = var.region } resource "kubernetes_service" "nginx" { metadata { namespace = kubernetes_namespace.staging.metadata[0].name name = "nginx" } spec { selector = { run = "nginx" } session_affinity = "ClientIP" port { protocol = "TCP" port = 80 target_port = 80 } type = "LoadBalancer" load_balancer_ip = google_compute_address.default.address } } resource "kubernetes_replication_controller" "nginx" { metadata { name = "nginx" namespace = kubernetes_namespace.staging.metadata[0].name labels = { run = "nginx" } } spec { selector = { run = "nginx" } template { container { image = "nginx:latest" name = "nginx" resources { limits { cpu = "0.5" memory = "512Mi" } requests { cpu = "250m" memory = "50Mi" } } } } } } output "load-balancer-ip" { value = google_compute_address.default.address }
  • La secuencia de comandos configura un proveedor de Kubernetes con Terraform y crea el servicio, el espacio de nombres y un recurso replication_controller.
  • La secuencia de comandos devuelve una IP de servicio nginx como resultado.

Tarea 3. Inicializa y, luego, instala las dependencias

El comando terraform init se usa para inicializar un directorio de trabajo que contiene archivos de configuración de Terraform.

Este comando realiza varios pasos de inicialización distintos a fin de preparar un directorio de trabajo para su uso. Se recomienda ejecutarlo varias veces para que se actualice el directorio de trabajo con los cambios en la configuración.

  1. Ejecuta terraform init:
terraform init

Resultado de ejemplo:

... * provider.google: version = "~> 3.8.0" * provider.kubernetes: version = "~> 1.10.0" Terraform has been successfully initialized! You may now begin working with Terraform. Try running `terraform plan` to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
  1. Ejecuta el comando terraform apply, que se usa para aplicar los cambios necesarios para alcanzar el estado deseado de la configuración:
terraform apply -var="region={{{ project_0.default_region | "Region to be allocated" }}}" -var="location={{{ project_0.default_zone | "Zone to be allocated" }}}"
  1. Revisa las acciones de Terraform y, luego, inspecciona los recursos que se crearán.

  2. Cuando tengas todo listo, escribe yes para comenzar las acciones de Terraform.

Cuando finalicen, deberías ver un resultado similar:

Resultado de ejemplo:

Apply complete! Resources: 7 added, 0 changed, 0 destroyed. Outputs: cluster_name = tf-gke-k8s cluster_region = "{{{project_0.default_region|REGION}}}" cluster_zone = "{{{project_0.default_region|ZONE}}}" load-balancer-ip = 35.233.177.223 network = https://www.googleapis.com/compute/beta/projects/qwiklabs-gcp-5438ad3a5e852e4a/global/networks/tf-gke-k8s subnetwork_name = tf-gke-k8s

Verifica los recursos creados por Terraform

  1. En la consola, ve al menú de navegación > Kubernetes Engine.
  2. Haz clic en el clúster tf-gke-k8s y revisa su configuración.
  3. En el panel izquierdo, haz clic en Ingress y servicios y revisa el estado del servicio de nginx.
  4. Haz clic en la dirección IP de Extremos para abrir la página Welcome to nginx! en una nueva pestaña del navegador.

Página Welcome to nginx!

Haz clic en Revisar mi progreso para verificar la tarea realizada. Si implementaste correctamente la infraestructura con Terraform, verás una puntuación de evaluación.

Implementar infraestructura con Terraform

¡Felicitaciones!

En este lab, utilizaste Terraform para inicializar, planificar y, luego, implementar un clúster de kubernetes junto con un servicio.

Finaliza la Quest

Este lab de autoaprendizaje forma parte de las Quests Managing Cloud Infrastructure with Terraform y DevOps Essentials. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en cualquier Quest que contenga este lab y obtén un crédito inmediato de finalización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.

Realiza tu próximo lab

Continúa tu Quest con Balanceador de cargas basado en contenido HTTPS con Terraform o consulta las siguientes sugerencias:

Próximos pasos y más información

Descubre cómo otras personas experimentan Terraform en la Comunidad.

Capacitación y certificación de Google Cloud

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.

Actualización más reciente del manual: 28 de septiembre de 2023

Prueba más reciente del lab: 28 de septiembre de 2023

Copyright 2024 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.