Usa los servicios de Google Cloud desde Google Kubernetes Engine

En este documento, se muestra cómo usar los servicios de Google Cloud desde Google Kubernetes Engine (GKE). Cuando usas los servicios de Google Cloud, como Cloud Storage o Cloud SQL, desde apps que se ejecutan en GKE, debes configurar el 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

  • Configura una cuenta de servicio y una clave secreta para usar los servicios de Google Cloud.
  • Configura la imagen de Docker del proxy de Cloud SQL para usar 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
  • Configura una puerta de enlace NAT para usar servicios externos que requieren una dirección IP fija.
  • Usa Cloud 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 desde GKE.

Diagrama de patrones de arquitectura comunes para el uso de servicios de GCP desde GKE

Puedes configurarlos con las siguientes tareas:

  • Para usar los servicios de Google Cloud, como Cloud Storage, a través de las API de Cloud, debes asignar una función adecuada a la cuenta de servicio y proporcionar la clave secreta asociada a la app mediante el objeto secret de Kubernetes.
  • Para usar Cloud SQL, asigna una función adecuada a la cuenta de servicio y agrega el proxy de Cloud SQL al pod mediante el patrón de pod del 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 usar servicios externos que requieren una dirección IP fija, configura una puerta de enlace NAT.
  • Para registrar los registros de la aplicación en Logging, debes hacer que la app escriba mensajes de registro en la salida estándar (stdout) y el error estándar (stderr).

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

Usa los servicios de Google Cloud a través de las API de Cloud

Puedes usar los servicios de Google Cloud 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 la aplicación, como se muestra en el siguiente diagrama:

Diagrama que muestra una clave secreta en un objeto

Para ver un ejemplo que muestra cómo usar Pub/Sub desde las apps que se ejecutan en GKE, consulta Autentica Cloud Platform con cuentas de servicio. Puedes aplicar los mismos pasos para otros servicios de Google Cloud, como Cloud Storage, BigQuery, Datastore y 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.

Usa Cloud SQL con un 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 del proxy de Cloud SQL transfiere de forma segura los datos entre la app 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, usa 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: conéctate desde GKE.

Usa servicios externos a través del balanceo de cargas interno

Para acceder a servicios externos desde una app que se ejecuta en GKE, debes usar los servicios de nombres internos o externos, de modo que la app 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 para servicios de backend que ejecutan instancias de Compute Engine, consulta Configura el balanceo de cargas interno.

Usa servicios externos a través de una puerta de enlace NAT

Los nodos de VM que alojan los pods de la aplicación envían paquetes de salida desde apps que se ejecutan en GKE. Los nodos de VM tienen direcciones IP efímeras que se usan como la dirección IP de origen de los paquetes de salida. Debido a esto, la dirección IP de origen de la app 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 app. 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 el uso de enrutamiento personalizado por parte de GKE para comunicarse con una puerta de enlace NAT que está frente a servicios externos

Para obtener más información, consulta Usa una puerta de enlace NAT con GKE y Cloud NAT.

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.

Supervisa clústeres con Cloud Operations para GKE

Cloud Operations para GKE está diseñado para supervisar los clústeres de Google Kubernetes Engine. Administra Cloud Monitoring y Cloud Logging en conjunto. También cuenta con una consola que proporciona un panel personalizado para los clústeres de GKE.

Si deseas obtener más información sobre Cloud Operations para GKE, consulta la Descripción general de Cloud Operations para GKE.

¿Qué sigue?