Usa GKE y Cloud Run en conjunto


Esta guía se diseñó para los administradores de infraestructura y los operadores de aplicaciones que ejecutan un conjunto diverso de cargas de trabajo alojadas en contenedores y desean aprovechar las fortalezas de Google Kubernetes Engine (GKE) yCloud Run para implementar aplicaciones en Google Cloud Platform. Una estrategia híbrida te permite optimizar los costos, el rendimiento y la sobrecarga de administración.

Debes estar familiarizado con los siguientes temas:

¿Por qué usar GKE y Cloud Run en conjunto?

GKE y Cloud Run ofrecen diferentes ventajas para ejecutar aplicaciones en contenedores y se adaptan a diferentes niveles de complejidad de cargas de trabajo. Sin embargo, no es necesario que elijas entre ambas plataformas. Puedes aprovechar las fortalezas de GKE y Cloud Run de forma simultánea si migras las cargas de trabajo entre las dos plataformas a medida que surja la necesidad.

Los siguientes son algunos beneficios de usar ambos entornos de ejecución para implementar tus cargas de trabajo:

  • GKE y Cloud Run ofrecen un nivel de portabilidad relativamente alto:

    • En ambas plataformas se usan imágenes de contenedor estándar como artefactos de implementación. Puedes usar la misma imagen para tu aplicación en cualquiera de las plataformas sin ninguna modificación, lo que permite la migración sin interrupciones de las cargas de trabajo entre GKE y Cloud Run. No es necesario que actualices tu configuración de integración continua para migrar entre GKE y Cloud Run, siempre que las imágenes de contenedor se almacenen enArtifact Registry.

    • GKE y Cloud Run usan un modelo de API declarativo. La API de Cloud Run Admin v1 está diseñada para ser compatible con la API de Kubernetes. Esto significa que puedes usar conceptos familiares de Kubernetes, como Deployments, Services y escaladores automáticos horizontales de Pods para administrar tu servicio de Cloud Run. Esta similitud facilita la traducción de configuraciones entre las dos plataformas.

    • Los recursos se representan en archivos YAML con la misma estructura declarativa y estándar y, por lo tanto, se pueden migrar con facilidad entre entornos de ejecución. Este es un ejemplo de comparación de los archivos YAML de una implementación de Kubernetes y un servicio de Cloud Run.

  • GKE y Cloud Run se integran sin problemas en Cloud Logging y Cloud Monitoring, lo que te proporciona una vista centralizada en la consola de Google Cloud para observar las métricas de la aplicación independientemente de la plataforma. También puedes usar la supervisión de objetivos de nivel de servicio (SLO) en ambas plataformas y ver una visualización unificada de los SLO en el panel de Cloud Monitoring.

  • Puedes implementar la entrega continua en los recursos de GKE o en los servicios de Cloud Run mediante Cloud Deploy. O bien, si lo prefieres, implementa tu aplicación de forma simultánea en GKE y Cloud Run mediante la implementación paralela.

  • Puedes facilitar la administración avanzada del tráfico mediante el uso de balanceadores de cargas internos y externos para servicios en GKE y Cloud Run. Esto incluye la capacidad de exponer extremos externos para que puedas implementar y ejecutar URL diferentes para la misma aplicación en ambas plataformas. También puedes dividir el tráfico al mismo servicio en GKE y Cloud Run, lo que permite una migración sin problemas de una plataforma a otra.

  • Google Cloud proporciona herramientas de seguridad para mejorar tu posición de seguridad cuando se usan ambos entornos de ejecución. El análisis del SO te permite analizar los contenedores en busca de vulnerabilidades antes de implementarlos en cualquiera de las plataformas. Una política central de Autorización Binaria puede aplicar la integración con el plano de control de GKE y Cloud Run para permitir o bloquear la implementación de imágenes según las políticas que definas. Con los Controles del servicio de VPC, los equipos de seguridad pueden definir controles perimetrales detallados en tus recursos de GKE y Cloud Run.

Compara GKE y Cloud Run

Para aprovechar las mejores funciones de GKE y Cloud Run, y saber cuándo mover las cargas de trabajo entre ellas, es importante comprender cómo difieren entre sí.

Atributo GKE Cloud Run
Implementación y administración

Administrar los clústeres de Kubernetes, incluida la configuración de los nodos, las herramientas de redes, el escalamiento y las actualizaciones.

Google Cloud administra la infraestructura subyacente y proporciona herramientas para simplificar las operaciones de clúster, pero tú eres responsable de los aspectos principales de Kubernetes.

Ejecuta contenedores directamente sobre la infraestructura escalable de Google Cloud.

Lo único que debes hacer es proporcionar el código fuente o una imagen de contenedor, y Cloud Run podrá compilar el contenedor por ti. No es necesario crear un clúster ni aprovisionar y administrar la infraestructura.

Control y flexibilidad

Control total sobre el clúster de Kubernetes.

Puedes crear personalizaciones avanzadas de la configuración de los nodos, las políticas de red, la configuración de seguridad y los complementos.

Control limitado sobre la infraestructura subyacente.

Puedes configurar variables de entorno, simultaneidad y conexiones de red, pero no puedes personalizar la infraestructura o el entorno subyacente. Ideal para la simplicidad y la velocidad.

Tipos de aplicación Admite aplicaciones sin estado y con estado, y es ideal para aplicaciones complejas con necesidades de recursos específicas. Es ideal para servicios web, funciones y servicios sin estado, basados en solicitudes o en eventos.
Modelo de precios Paga por clúster por hora, sin importar el modo de operación (Standard o Autopilot), el tamaño del clúster ni la topología. Paga por lo que usas, redondeado a la centena de milisegundos más cercana.

Caso de uso

Considera que eres administrador de plataforma de una empresa de venta minorista que compila una gran plataforma de comercio electrónico. Tienes las siguientes cargas de trabajo alojadas en contenedores para implementar:

  • Sitio web de frontend y app para dispositivos móviles: Una aplicación web sin estado que controla la navegación, la búsqueda y la compra de productos.

  • Administración del inventario de productos: Un servicio con estado que administra la disponibilidad y las actualizaciones de productos.

  • Motor de recomendaciones: Un microservicio complejo que genera recomendaciones de productos personalizadas para cada usuario.

  • Trabajos de procesamiento por lotes: Incluye tareas periódicas, como la actualización de catálogos de productos y el análisis del comportamiento de los usuarios.

Estas cargas de trabajo representan una combinación de servicios sin estado y con estado, por lo que decides aprovechar GKE y Cloud Run para obtener un rendimiento óptimo. Esta es una forma de implementar un enfoque híbrido para tus cargas de trabajo.

  1. Después de leer los criterios de idoneidad de las cargas de trabajo de Cloud Run, decide usar Cloud Run para el sitio web y la aplicación para dispositivos móviles, y los trabajos de procesamiento por lotes. Implementar estos servicios en Cloud Run tiene los siguientes beneficios:

    • Ajuste de escala automático a medida que el tráfico aumenta y los trabajos por lotes grandes se manejan sin intervención manual.

    • Rentabilidad con un modelo de pago por uso. Solo pagas cuando los usuarios navegan o finalizan la compra y cuando se usan los recursos durante la ejecución del trabajo por lotes.

    • Implementaciones más rápidas, ya que las actualizaciones están disponibles de forma instantánea, lo que mejora la experiencia del usuario.

    • Integración sencilla a otros servicios de Google Cloud. Por ejemplo, para el procesamiento controlado por eventos, puedes usar Cloud Functions a fin de iniciar trabajos de procesamiento por lotes en Cloud Run y habilitar flujos de trabajo sin interrupciones.

  2. La administración del inventario de productos es un servicio con estado que requiere un control detallado y soluciones de almacenamiento potencialmente personalizadas. Decides usar GKE para implementar este servicio, ya que ofrece almacenamiento persistente y te permite adjuntar volúmenes para la persistencia y confiabilidad de los datos de productos.

  3. El motor de recomendaciones es un microservicio complejo que se beneficia de GKE. Con GKE, puedes administrar dependencias complejas y ejercer un control detallado sobre la asignación y el escalamiento de recursos.

GKE es más adecuado para arquitecturas de microservicios complejas, aplicaciones con estado, cargas de trabajo que requieren infraestructura personalizada o configuraciones de red, y situaciones en las que un control profundo sobre Kubernetes es esencial. Cloud Run es más adecuado para apps controladas por eventos. Es ideal para servicios web sin estado, APIs, trabajos por lotes y otras cargas de trabajo que se benefician de los precios de pago por uso.

En el ejemplo anterior, se muestra cómo la combinación de GKE y Cloud Run puede proporcionar una solución potente y flexible para tu plataforma de comercio electrónico. Obtienes los beneficios de ambas plataformas: eficiencia sin servidores para cargas de trabajo sin estado y control de Kubernetes para microservicios complejos y componentes con estado.

Consideraciones

GKE y Cloud Run se complementan y abordan diferentes necesidades dentro de un entorno de aplicaciones complejo.

Las siguientes son algunas consideraciones cuando se adopta un enfoque híbrido para implementar cargas de trabajo:

  • Ejecuta microservicios sin estado en Cloud Run para obtener rentabilidad y escalabilidad.

  • Implementa aplicaciones con estado complejas que requieren una personalización profunda en GKE.

  • Si usas una red privada en Google Cloud, para acceder a los recursos en tu clúster de GKE desde tu servicio de Cloud Run, puedes enviar una solicitud a una red de nube privada virtual (VPC) mediante la salida de VPC directa. Para acceder a los servicios del clúster de GKE, el servicio de Cloud Run debe estar conectado a la red de VPC del clúster y el servicio de GKE debe usar un balanceador de cargas de red de transferencia interno.

  • Para migrar el tráfico entre Cloud Run y GKE, puedes exponer extremos externos detrás de un balanceador de cargas de aplicaciones externo global. Cuando implementas este balanceador de cargas frente a los servicios en ambos entornos de ejecución, puedes implementar la misma aplicación en Cloud Run y GKE, lo que te permite cambiar el tráfico de forma gradual de una plataforma a otra.

  • Para exponer los servicios de Cloud Run en la nube privada virtual detrás de IP privadas, usa un balanceador de cargas interno.

Recuerda que, si tus cargas de trabajo ya están en Cloud Run, siempre puedes migrar a GKE según sea necesario.

Cuándo no usar GKE y Cloud Run en conjunto

Si bien GKE y Cloud Run ofrecen un enfoque atractivo para muchas cargas de trabajo alojadas en contenedores, hay situaciones en las que usarlos en conjunto puede no ser la mejor opción. Estos son algunos ejemplos en los que puedes decidir no adoptar un enfoque híbrido:

  • Microservicios vinculados de forma estrecha: Si los microservicios dependen en gran medida entre sí y requieren comunicación frecuente y de baja latencia, administrarlos en plataformas separadas puede generar complejidades. Las llamadas frecuentes de red entre plataformas pueden agregar sobrecarga y posibles cuellos de botella, lo que afecta el rendimiento.

  • Aplicaciones heredadas con dependencias personalizadas: Si tu aplicación se basa en bibliotecas, frameworks o configuraciones específicas no compatibles con Cloud Run, usarlo para partes de la aplicación puede exigir un grado importante de refactorización o soluciones alternativas. Esto puede anular los beneficios de la computación sin servidores y generar una sobrecarga de mantenimiento específica de la plataforma.

  • Limitaciones de presupuesto con cargas de trabajo predecibles Si tu carga de trabajo tiene requisitos de recursos coherentes y tienes un presupuesto estricto, el modelo de pago por nodo de GKE podría ser más rentable que la facturación de pago por uso de Cloud Run. Si tienes cargas de trabajo predecibles, es posible que no uses por completo los beneficios del ajuste de escala automático de Cloud Run, lo que hace que el costo fijo de GKE sea más atractivo.

En última instancia, el mejor enfoque depende de tus necesidades y prioridades específicas. Evalúa con cuidado los requisitos de la aplicación, las restricciones de recursos y la experiencia del equipo antes de decidir una arquitectura híbrida de GKE y Cloud Run.

¿Qué sigue?