Cómo usar los servicios de Google Cloud Platform a partir de Google Kubernetes Engine

En este documento, se muestra cómo utilizar los servicios de Google Cloud Platform (GCP) a partir de Google Kubernetes Engine (GKE). Cuando usas los servicios de GCP, como Cloud Storage o Cloud SQL, a partir de aplicaciones que se ejecutan en GKE, debes configurar tu entorno para los servicios que usas. En este documento, se explican los patrones de arquitectura comunes y sus tareas asociadas, y se proporcionan vínculos a la documentación que explica ejemplos de configuraciones.

Objetivos

  • Configurar una cuenta de servicio y una clave secreta para usar los servicios de GCP
  • Configurar la imagen de Cloud SQL Proxy Docker para utilizar una base de datos de Cloud SQL
  • Configurar el balanceo de cargas interno para usar servicios personalizados que se ejecutan en las VM de Compute Engine
  • Configurar una puerta de enlace NAT para usar servicios externos que requieren una dirección IP fija
  • Utilizar Stackdriver Logging para registrar los registros de la aplicación

Información sobre tareas comunes

En el siguiente diagrama, se muestran los patrones de arquitectura comunes del uso de otros servicios de GKE.

Diagrama de patrones de arquitectura comunes para el uso de servicios de GCP a partir de GKE

Puedes configurarlos con las siguientes tareas:

  • Para usar los servicios de GCP, como Cloud Storage, a través de las API de Cloud, asigna una función adecuada a la cuenta de servicios y proporciona la clave secreta asociada a tu aplicación mediante el objeto secret de Kubernetes.
  • Para usar Cloud SQL, asigna una función adecuada a la cuenta de servicios y agrega el proxy de Cloud SQL a tu pod mediante el patrón de pod de archivo adicional.
  • Para usar los servicios personalizados que se ejecutan en las VM de Compute Engine de una manera escalable, configura el balanceo de cargas interno.
  • Para utilizar servicios externos que requieren una dirección IP fija, configura una puerta de enlace NAT.
  • Para registrar los registros de aplicaciones en Logging, tienes los mensajes de registro de escritura de tu aplicación en resultado estándar (stdout) y error estándar (stderr).

En las siguientes secciones, aparecen vínculos a los pasos de configuración.

Cómo usar los servicios de GCP a través de las API de Cloud

Puedes usar los servicios de GCP a través de las API de Cloud mediante una cuenta de servicio y una clave secreta. Kubernetes ofrece el tipo de recurso secret para almacenar credenciales dentro del clúster y adjuntarlas a los pods de aplicaciones, como se muestra en el siguiente diagrama:

Diagrama que muestra una clave secreta en un objeto "secreto" de Kubernetes, al que se accede mediante varios pods

Si deseas ver un ejemplo que muestra cómo usar Cloud Pub/Sub a partir de aplicaciones que se ejecutan en GKE, consulta Cómo autenticar Cloud Platform con cuentas de servicio. Puedes aplicar los mismos pasos para otros servicios de GCP, como Cloud Storage, BigQuery, Cloud Datastore y Cloud Spanner. Sin embargo, debes elegir una función adecuada para la cuenta de servicio y el servicio, y es posible que debas realizar los pasos que sean específicos de cada servicio.

Una excepción a este enfoque es Cloud SQL. Para ese servicio, necesitas un enfoque diferente, ya que Cloud SQL requiere un cliente del proxy de Cloud SQL a fin de acceder de forma segura a una base de datos, como se explica en la siguiente sección.

Cómo usar Cloud SQL con proxy de Cloud SQL

Para acceder a una instancia de Cloud SQL a partir de una aplicación que se ejecuta en GKE, usa la imagen de Cloud SQL Proxy Docker. Adjunta la imagen a tu pod para que tu aplicación pueda usar el cliente de proxy de Cloud SQL en el mismo pod. El cliente de proxy de Cloud SQL transfiere de forma segura los datos entre la aplicación y la instancia de Cloud SQL, como se muestra en el siguiente diagrama:

Diagrama que muestra una aplicación que se comunica con el proxy de Cloud SQL en un contenedor, que, a su vez, utiliza una conexión segura para comunicarse con Cloud SQL

Si deseas obtener información sobre cómo adjuntar la imagen del proxy de Cloud SQL a tu pod de aplicación, consulta Cloud SQL: cómo conectarse desde GKE.

Cómo usar servicios externos a través del balanceo de cargas interno

Para acceder a servicios externos desde una aplicación que se ejecuta en GKE, utilizas los servicios de nombres internos o externos, de modo que la aplicación pueda descubrir el extremo del servicio. Si deseas obtener una explicación de las tres formas de configurar los servicios de nombres, consulta Cómo conectarse desde el interior de un clúster a servicios externos.

Si el servicio externo se ejecuta en instancias de Compute Engine, es posible que quieras utilizar el balanceo de cargas interno para que el servicio externo sea redundante y escalable. En el siguiente diagrama, se ilustra este enfoque.

Diagrama que muestra una aplicación en un contenedor que se comunica con Cloud Load Balancing, que, a su vez, se comunica con varias instancias de Compute Engine que ejecutan diferentes servicios

Si deseas obtener información sobre cómo configurar el balanceo de cargas interno correspondiente a los servicios de backend que ejecutan instancias de Compute Engine, consulta Cómo configurar el balanceo de cargas interno.

Cómo usar servicios externos a través de una puerta de enlace NAT

Los nodos de VM que alojan los pods de aplicaciones envían paquetes de salida desde aplicaciones que se ejecutan en GKE. Estos nodos tienen direcciones IP efímeras que se utilizan como la dirección IP de origen de los paquetes de salida. Debido a esto, la dirección IP de origen de la aplicación puede cambiar según el nodo de VM que envía los paquetes. Como resultado, los servicios externos reciben paquetes de varias direcciones IP de origen, aunque los paquetes se envíen desde la misma aplicación. En circunstancias normales, esto no es un problema. Sin embargo, es posible que quieras enviar paquetes desde una dirección IP fija, ya que algunos servicios externos están configurados para aceptar paquetes de una sola fuente.

En esta situación, puedes usar una instancia de Compute Engine que funcione como puerta de enlace NAT. Mediante la creación de reglas de enrutamiento personalizadas para la puerta de enlace NAT, puedes enviar paquetes a servicios externos con una dirección IP fija, como se muestra en el siguiente diagrama:

Diagrama que muestra GKE con enrutamiento personalizado para comunicarse con una puerta de enlace NAT que está frente a servicios externos

Si deseas obtener más información, consulta Cómo usar una puerta de enlace NAT con GKE y Cómo compilar puertas de enlace NAT de alta disponibilidad y ancho de banda. En estos artículos, se explica cómo implementar la instancia de la puerta de enlace NAT y crear reglas de enrutamiento personalizadas.

Puedes aplicar la misma arquitectura cuando se usa un clúster privado en el cual los nodos de VM solo tienen direcciones IP privadas. En ese caso, la puerta de enlace NAT recibe paquetes de una subred privada y los transfiere a servicios externos mediante una sola dirección IP pública.

Cómo enviar registros de aplicaciones a Stackdriver Logging

Stackdriver Logging está habilitado de forma predeterminada para permitir que GKE recopile, procese y almacene automáticamente tus registros de contenedor y sistema en un almacén de datos permanente y dedicado. GKE implementa un agente de registro por nodo que lee los registros de stdout y stderr en pods, como se muestra en el siguiente diagrama:

Diagrama que muestra varios pods de aplicaciones que escriben en "stdout" y "stderr", cuyos contenidos se escriben en un agente de registro y, luego, en Logging

Por lo tanto, tus aplicaciones deben escribir mensajes de registro en stdout y stderr. Si deseas obtener información sobre cómo usar Logging a fin de recopilar, consultar y analizar registros a partir de una aplicación que se ejecuta en GKE, consulta GKE: Logging.

¿Qué sigue?

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...