Cargando…
No se encontraron resultados.

Google Cloud Skills Boost

Aplica tus habilidades en la consola de Google Cloud

04

Architecting with Google Kubernetes Engine: Workloads - Español

Obtén acceso a más de 700 labs y cursos

Configura las herramientas de redes de Google Kubernetes Engine (GKE)

Lab 1 hora universal_currency_alt 5 créditos show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

Descripción general

En este lab, crearás un clúster privado, agregarás una red autorizada para que la API tenga acceso a ella y, luego, configurarás una política de red para proteger el Pod.

Nota: En este lab, se usará el modo estándar de GKE. Se exploran las políticas de red de los clústeres, que están habilitadas de forma predeterminada en GKE Autopilot.

Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Crear y probar un clúster privado
  • Configurar un clúster para el acceso autorizado al plano de control de la red
  • Configurar una política de red para el clúster

Configuración y requisitos

En cada lab, recibirás un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.

  1. Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá una ventana emergente para que selecciones tu 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 Cloud
    • El tiempo restante
    • Las credenciales temporales que debes usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. 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: Ordena las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
  3. De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.

    {{{user_0.username | "Username"}}}

    También puedes encontrar el nombre de usuario en el panel Detalles del lab.

  4. Haz clic en Siguiente.

  5. Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.

    {{{user_0.password | "Password"}}}

    También puedes encontrar la contraseña en el panel Detalles del lab.

  6. Haz clic en Siguiente.

    Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud. Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
  7. Haga clic para avanzar por las páginas siguientes:

    • Acepta los Términos y Condiciones.
    • No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No te registres para obtener pruebas gratuitas.

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

Nota: Para ver un menú con una lista de productos y servicios de Google Cloud, haz clic en el menú de navegación que se encuentra en la parte superior izquierda o escribe el nombre del servicio o producto en el campo Búsqueda.

Después de completar los pasos iniciales de acceso, aparecerá el panel del proyecto.

Activa Google Cloud Shell

Google 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.

Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

  2. Haz clic en Continuar.

El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.

  • Puedes solicitar el nombre de la cuenta activa con este comando:
gcloud auth list

Resultado:

Credentialed accounts: - @.com (active)

Resultado de ejemplo:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puedes solicitar el ID del proyecto con este comando:
gcloud config list project

Resultado:

[core] project =

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: La documentación completa de gcloud está disponible en la guía de descripción general de gcloud CLI .

Tarea 1: Crea un clúster privado

En esta tarea, crearás un clúster privado, considerarás las opciones de privacidad del clúster y, luego, compararás tu clúster privado con el original.

En un clúster privado, los nodos tienen direcciones IP internas RFC 1918 únicamente, lo que garantiza que sus cargas de trabajo estén aisladas del Internet público. Los nodos en un clúster no privado tienen direcciones IP externas; es posible que esto permita el tráfico hacia y desde Internet.

Configura un clúster privado

  1. En el menú de navegación (), haz clic en Kubernetes Engine > Clústeres.
  2. Haz clic en Crear y selecciona CAMBIAR A CLÚSTER ESTÁNDAR para el clúster.
  3. Asígnale el nombre private-cluster al clúster.
  4. Selecciona como la zona.
  5. En el panel de la izquierda, en Grupos de nodos, haz clic en default-pool.
  6. En Cantidad de nodos, escribe 2.

  1. En el panel de la izquierda, en Clúster, haz clic en Redes.
  2. Asegúrate de que no esté seleccionada la opción Habilitar redes autorizadas.
  3. Selecciona la casilla de verificación Anular la subred predeterminada del extremo privado del plano de control.
  4. En Subred del extremo privado, selecciona la opción predeterminada.

  1. Selecciona la casilla de verificación para Habilitar nodos privados.
Nota: Google Cloud usa el intercambio de tráfico entre VPC para conectar la VPC del clúster con tu red de VPC predeterminada.

Es posible que debas desplazarte hacia abajo para ver esta opción.

Este parámetro de configuración te permite definir el rango de direcciones que pueden acceder al clúster de forma externa. Cuando esta casilla de verificación no está seleccionada, solo puedes acceder a kubectl desde la red de Google Cloud. En este lab, solo accederás a kubectl a través de la red de Google Cloud, pero modificarás este parámetro de configuración más adelante.

  1. Haz clic en Crear.
Nota: Deberás esperar algunos minutos para que se complete la implementación del clúster.

Inspecciona tu clúster

  • En Cloud Shell, ingresa el siguiente comando para revisar los detalles de tu nuevo clúster:
gcloud container clusters describe private-cluster --zone {{{project_0.default_zone|ZONE}}}

Los siguientes valores aparecen solo en el clúster privado:

  • privateEndpoint, una dirección IP interna. Los nodos usan esta dirección IP interna para comunicarse con el plano de control del clúster.
  • publicEndpoint, una dirección IP externa. Los servicios externos y los administradores pueden usar la dirección IP externa para comunicarse con el plano de control del clúster.

Tienes varias opciones para bloquear tu clúster en diferentes grados:

  • Todo el clúster puede tener acceso externo.
  • Todo el clúster puede ser privado.
  • Los nodos pueden ser privados, mientras que el plano de control del clúster es público, y puedes limitar qué redes externas están autorizadas para acceder al plano de control del clúster.

Sin las direcciones IP públicas, el código que se ejecuta en los nodos no puede acceder al Internet público, a menos que configures una puerta de enlace NAT como Cloud NAT.

Puedes usar clústeres privados para proporcionar servicios como APIs internas a las que solo se puede acceder a través de recursos dentro de tu red. Por ejemplo, los recursos podrían ser herramientas privadas que solo utiliza tu empresa. O bien, podrían ser servicios de backend a los que acceden tus servicios de frontend, y, tal vez, solo los clientes o usuarios externos acceden directamente a esos servicios de frontend. En tales casos, los clústeres privados son una buena forma de reducir la superficie de ataque de tu aplicación.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear un clúster privado

Tarea 2. Agrega una red autorizada para acceder al plano de control del clúster

Tras crear el clúster, se recomienda que le envíes comandos desde fuera de Google Cloud. Por ejemplo, podrías decidir que solo tu red corporativa pueda enviar comandos al plano de control de tu clúster. Desafortunadamente, no especificaste la red autorizada durante la creación del clúster.

En esta tarea, agregarás una red autorizada para acceder al plano de control del clúster.

Nota: En esta tarea, harás que la API del plano de control de Kubernetes esté disponible para un rango específico de direcciones de red. En una situación real en la que se usa GKE, esta conexión la utilizarían el personal de TI y los procesos automatizados, no los usuarios finales.
  1. En el menú de navegación () de la consola de Google Cloud, haz clic en Kubernetes Engine > Clústeres.
  2. Haz clic en private-cluster para abrir la página Detalles del clúster.
  3. En la pestaña Detalles, en la sección Redes del plano de control, haz clic en Editar().
  4. Selecciona Habilitar redes autorizadas.
  5. Haz clic en Agregar una red autorizada.
  6. En Nombre, escribe el nombre de la red; usa Corporate.
  7. En Red, escribe un rango de CIDR que desees incluir en la lista de entidades permitidas para otorgar acceso al plano de control del clúster. Como ejemplo, puedes utilizar 192.168.1.0/24.
  8. Haz clic en Listo.
  9. Asegúrate de que los siguientes parámetros estén habilitados:
    • Acceder con la dirección IP externa del plano de control
    • Acceder con la dirección IP interna del plano de control desde cualquier región
    • Aplicar de manera forzosa redes autorizadas en el extremo interno del plano de control
    • Agregar direcciones IP externas de Google Cloud a las redes autorizadas

Si es necesario, se pueden agregar varias redes aquí, pero no más de 50 rangos de CIDR.

Nota: Fuera de este entorno de lab, un ejemplo práctico podría ser incluir en la lista de entidades permitidas solo la dirección pública externa de tu firewall corporativo. Por ejemplo, si la dirección IP de tu firewall corporativo fuera 8.8.8.14, podrías permitir el acceso a 8.8.8.14/32.
  1. Haz clic en Guardar cambios, en la parte inferior del menú.

Haz clic en Revisar mi progreso para verificar el objetivo. Agregar una red autorizada para acceder al plano de control del clúster

Tarea 3. Crea una política de red para el clúster

En esta tarea, crearás una política de red para el clúster para restringir la comunicación entre los Pods. Una zona de confianza cero es importante para evitar ataques laterales dentro del clúster cuando un intruso comprometa uno de los Pods.

Crea un clúster de GKE

  1. En Cloud Shell, escribe el siguiente comando para establecer la variable de entorno para la zona y el nombre del clúster:
export my_zone={{{project_0.default_zone|ZONE}}} export my_cluster=standard-cluster-1
  1. Configura el completado de línea de comando de kubectl en Cloud Shell:
source <(kubectl completion bash)
  1. En Cloud Shell, escribe el siguiente comando para crear un clúster de Kubernetes. Ten en cuenta que este comando agrega la marca adicional --enable-network-policy a los parámetros que usaste en labs anteriores. Esta marca permite que el clúster utilice las políticas de red correspondientes:
gcloud container clusters create $my_cluster --num-nodes 3 --enable-ip-alias --zone $my_zone --enable-network-policy
  1. En Cloud Shell, configura el acceso a tu clúster para la herramienta de línea de comandos de kubectl con el siguiente comando:
gcloud container clusters get-credentials $my_cluster --zone $my_zone
  1. Ejecuta una aplicación de servidor web sencilla con la etiqueta app=hello y expón la aplicación web internamente en el clúster:
kubectl run hello-web --labels app=hello \ --image=gcr.io/google-samples/hello-app:1.0 --port 8080 --expose

Restringe el tráfico entrante a los Pods

Creemos un archivo de manifiesto NetworkPolicy de muestra llamado hello-allow-from-foo.yaml. Este archivo de manifiesto define una política de entrada que permite acceder a Pods con la etiqueta app: hello desde Pods con la etiqueta app: foo.

  1. Crea y abre un archivo llamado hello-allow-from-foo.yaml con nano usando el siguiente comando:
nano hello-allow-from-foo.yaml
  1. Una vez que nano se abra, pega lo siguiente en el archivo hello-allow-from-foo.yaml:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: hello-allow-from-foo spec: policyTypes: - Ingress podSelector: matchLabels: app: hello ingress: - from: - podSelector: matchLabels: app: foo
  1. Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.

  2. Presiona Ctrl + X para salir del editor de texto nano.

  3. Crea una política de entrada:

kubectl apply -f hello-allow-from-foo.yaml
  1. Verifica que se haya creado la política:
kubectl get networkpolicy

Resultado:

NAME POD-SELECTOR AGE hello-allow-from-foo app=hello 7s

Valida la política de entrada

  1. Ejecuta un Pod temporal llamado test-1 con la etiqueta app=foo y obtén una shell en el Pod:
kubectl run test-1 --labels app=foo --image=alpine --restart=Never --rm --stdin --tty Nota: Es importante tener en cuenta los interruptores de kubectl que se usan aquí junto con el comando run.

--stdin (alternativamente -i) crea una sesión interactiva adjunta a STDIN en el contenedor.

--tty (alternativamente -t) asigna un TTY para cada contenedor en el pod.

--rm indica a Kubernetes que trate esto como un Pod temporal que se quitará tan pronto como complete su tarea de inicio. Como se trata de una sesión interactiva, se quitará cuando el usuario salga de la sesión.

--label (alternativamente -l) agrega un conjunto de etiquetas al Pod.

--restart define la política de reinicio del Pod.
  1. Realiza una solicitud al extremo hello-web:8080 para verificar que esté permitido el tráfico entrante:
wget -qO- --timeout=2 http://hello-web:8080

Resultado:

If you don't see a command prompt, try pressing enter. / # wget -qO- --timeout=2 http://hello-web:8080 Hello, world! Version: 1.0.0 Hostname: hello-web-8b44b849-k96lh / #
  1. Escribe exit y presiona INTRO para salir de la shell.

  2. Ahora ejecutarás un Pod diferente con el mismo nombre de Pod, pero con la etiqueta app=other, que no coincide con el podSelector en la política de red activa. Este Pod no debería tener la capacidad de acceder a la aplicación hello-web.

kubectl run test-1 --labels app=other --image=alpine --restart=Never --rm --stdin --tty
  1. Realiza una solicitud al extremo hello-web:8080 para verificar que no esté permitido el tráfico entrante:
wget -qO- --timeout=2 http://hello-web:8080

Se agota el tiempo de espera de la solicitud.

Resultado:

If you don't see a command prompt, try pressing enter. / # wget -qO- --timeout=2 http://hello-web:8080 wget: download timed out / #
  1. Escribe exit y presiona INTRO para salir de la shell.

Restringe el tráfico saliente de los Pods

Puedes restringir el tráfico saliente (salida) como lo haces con el tráfico entrante. Sin embargo, para consultar nombres de host internos (como hello-web) o nombres de host externos (como www.example.com), debes permitir la resolución del DNS en tus políticas de red de salida. El tráfico del DNS se produce en el puerto 53 con los protocolos UDP y TCP.

Creemos un archivo de manifiesto de NetworkPolicy foo-allow-to-hello.yaml. Este archivo define una política que permite que los Pods con la etiqueta app: foo se comuniquen con los Pods etiquetados como app: hello en cualquier número de puerto y permite que los Pods con la etiqueta app: foo se comuniquen con cualquier computadora en el puerto UDP 53, que se usa para la resolución del DNS. Sin el puerto DNS abierto, no podrás resolver los nombres de host.

  1. Crea y abre un archivo llamado foo-allow-to-hello.yaml con nano usando el siguiente comando:
nano foo-allow-to-hello.yaml
  1. Una vez que nano se abra, pega lo siguiente en el archivo foo-allow-to-hello.yaml:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: foo-allow-to-hello spec: policyTypes: - Egress podSelector: matchLabels: app: foo egress: - to: - podSelector: matchLabels: app: hello - to: ports: - protocol: UDP port: 53
  1. Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.

  2. Presiona Ctrl + X para salir del editor de texto nano.

  3. Crea una política de salida:

kubectl apply -f foo-allow-to-hello.yaml
  1. Verifica que se haya creado la política:
kubectl get networkpolicy

Resultado:

NAME POD-SELECTOR AGE foo-allow-to-hello app=foo 7s hello-allow-from-foo app=hello 5m

Valida la política de salida

  1. Implementa una nueva aplicación web llamada hello-web-2 y exponla internamente en el clúster:
kubectl run hello-web-2 --labels app=hello-2 \ --image=gcr.io/google-samples/hello-app:1.0 --port 8080 --expose
  1. Ejecuta un Pod temporal con la etiqueta app=foo y obtén un prompt de shell dentro del contenedor:
kubectl run test-3 --labels app=foo --image=alpine --restart=Never --rm --stdin --tty
  1. Verifica que el Pod pueda establecer conexiones con hello-web:8080:
wget -qO- --timeout=2 http://hello-web:8080

Resultado:

If you don't see a command prompt, try pressing enter. / # wget -qO- --timeout=2 http://hello-web:8080 Hello, world! Version: 1.0.0 Hostname: hello-web / #
  1. Verifica que el Pod no pueda establecer conexiones con hello-web-2:8080:
wget -qO- --timeout=2 http://hello-web-2:8080

Esto falla porque ninguna de las políticas de red que definiste permiten el tráfico a los Pods con la etiqueta de recurso app: hello-2.

  1. Verifica que el Pod no pueda establecer conexiones con sitios web externos, como www.example.com:
wget -qO- --timeout=2 http://www.example.com

Esto falla porque las políticas de red no permiten el tráfico HTTP externo (puerto TCP 80).

  1. Escribe exit y presiona INTRO para salir de la shell.

Haz clic en Revisar mi progreso para verificar el objetivo. Ejecutar aplicaciones de servidor web

Finalice su lab

Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.

Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.

La cantidad de estrellas indica lo siguiente:

  • 1 estrella = Muy insatisfecho
  • 2 estrellas = Insatisfecho
  • 3 estrellas = Neutral
  • 4 estrellas = Satisfecho
  • 5 estrellas = Muy satisfecho

Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.

Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.

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.

Anterior Siguiente

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

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

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el 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.
Vista previa