Arquitectura

Last reviewed 2024-04-19 UTC

En el siguiente diagrama, se muestra la arquitectura de alto nivel que implementa el plano para un solo entorno. Debes implementar esta arquitectura en tres entornos diferentes: producción, no producción y desarrollo.

La arquitectura del plano.

En este diagrama, se incluye lo siguiente:

  • Cloud Load Balancing distribuye el tráfico de la aplicación entre las regiones a los objetos del servicio de Kubernetes. Detrás de cada servicio hay una agrupación lógica de Pods relacionados.
  • Anthos Service Mesh permite que los servicios de Kubernetes se comuniquen entre sí.
  • Los servicios de Kubernetes se agrupan en instancias, que se representan como espacios de nombres de Kubernetes. Los usuarios son una abstracción que representa a varios usuarios y cargas de trabajo que operan en un clúster, con RBAC independiente para el control de acceso. Cada usuario también tiene su propio proyecto para recursos de nube específicos de usuarios, como bases de datos, buckets de almacenamiento y suscripciones a Pub/Sub.
  • Espacios de nombres con sus propias identidades para acceder a servicios de intercambio de tráfico y recursos en la nube. La identidad es coherente en el mismo espacio de nombres en diferentes clústeres debido a Workload Identity de la flota. Cada entorno tiene un grupo de identidades de carga de trabajo independiente para mitigar la elevación de privilegios entre entornos.
  • Cada servicio tiene una canalización dedicada que compila e implementa el servicio. Se usa la misma canalización para implementar el servicio en el entorno de desarrollo, en el entorno que no es de producción y, por último, en el entorno de producción.

Decisiones arquitectónicas clave para la plataforma para desarrolladores

En la siguiente tabla, se describen las decisiones de arquitectura que implementa el plano.

Área de decisión Decisión Motivo

Arquetipo de implementación

Implementa en varias regiones.

Permite la disponibilidad de las aplicaciones durante las interrupciones regionales.

Arquitectura organizativa

Implementa sobre el plano de base de la empresa.

Usa la estructura organizativa y los controles de seguridad que proporciona la base.

Usa las tres carpetas del entorno que están configuradas en la base: development, nonproduction y production.

Proporciona aislamiento para los entornos que tienen diferentes controles de acceso.

Arquitectura del clúster de la plataforma para desarrolladores

Empaqueta e implementa aplicaciones como contenedores.

Admite la separación de responsabilidades, operaciones eficientes y portabilidad de aplicaciones.

Ejecuta aplicaciones en clústeres de GKE.

Usa un servicio de contenedores administrado creado por la empresa que usó primero los contenedores.

Replica y ejecuta contenedores de aplicación en una configuración activa-activa.

Logra una mayor disponibilidad y un lanzamiento progresivo rápido, lo que mejora la velocidad de desarrollo.

Aprovisiona el entorno de producción con dos clústeres de GKE en dos regiones diferentes.

Obtiene más disponibilidad que una sola región de la nube.

Aprovisiona el entorno de no producción con dos clústeres de GKE en dos regiones diferentes.

Almacena los cambios en la configuración interregional, como los balanceadores de cargas, antes de la implementación en producción.

Aprovisiona el entorno de desarrollo con una sola instancia de clúster de GKE

Ayuda a reducir costos.

Configura planos de control con alta disponibilidad para cada clúster de GKE.

Garantiza que el plano de control del clúster esté disponible durante la actualización y el cambio de tamaño.

Usa el concepto de similitud en los espacios de nombres, los servicios y la identidad en cada clúster de GKE.

Garantiza que los objetos de Kubernetes con el mismo nombre en diferentes clústeres se traten de la misma manera. Esta normalización se realiza para facilitar la administración de los recursos de flotas.

Habilita espacios de direcciones IP privadas para clústeres de GKE a través del acceso de Private Service Connect al plano de control y a los grupos de nodos privados.

Ayuda a proteger la API del clúster de Kubernetes contra los ataques de análisis.

Habilita el acceso de administrador a los clústeres de GKE a través de la puerta de enlace de Connect.

Usa un comando para recuperar credenciales de acceso a varios clústeres. Usa grupos y proveedores de identidad de terceros para administrar el acceso al clúster.

Usa Cloud NAT para proporcionar Pods de GKE con acceso a recursos con direcciones IP públicas.

Mejora la postura de seguridad general del clúster, ya que los Pods no están expuestos de forma directa a Internet, pero aún pueden acceder a los recursos orientados a Internet.

Configura nodos para usar Container-Optimized OS y nodos de GKE protegidos.

Limita la superficie de ataque de los nodos.

Asociar cada entorno con una flota de GKE.

Permite la administración de conjuntos de clústeres de GKE como una unidad.

Usa la canalización de infraestructura base para implementar la fábrica de aplicaciones, la canalización con alcance de flota y la canalización de infraestructura multiusuario.

Proporciona un mecanismo controlable, auditable y repetible para implementar infraestructura de aplicaciones.

Configura los clústeres de GKE mediante las funciones de administración de Configuración y política de GKE Enterprise.

Proporciona un servicio que permita la configuración como código para los clústeres de GKE.

Usa una fábrica de aplicaciones para implementar las canalizaciones de CI/CD de la aplicación que se usan en el plano.

Proporciona un patrón repetible para implementar canalizaciones de aplicaciones con mayor facilidad.

Usa una canalización de CI/CD de aplicación para compilar e implementar los componentes de la aplicación de plano.

Proporciona un mecanismo que se puede controlar, auditar y repetir para implementar aplicaciones.

Configura la canalización de CI/CD de la aplicación para usar Cloud Build, Cloud Deploy y Artifact Registry.

Usa servicios de compilación y de implementación administrados para optimizar la seguridad, el escalamiento y la simplicidad.

Usa contenedores inmutables en todos los entornos y firma los contenedores con Autorización Binaria.

Proporciona una procedencia de código clara y garantiza que se haya probado en entornos.

Usa Google Cloud Observability, que incluye Cloud Logging y Cloud Monitoring.

Simplifica las operaciones mediante un servicio administrado integrado de Google Cloud.

Habilita Container Threat Detection (un servicio en Security Command Center) para supervisar la integridad de los contenedores.

Usa un servicio administrado que mejora la seguridad mediante la supervisión continua de contenedores.

Controla el acceso a los clústeres de GKE mediante el control de acceso basado en roles (RBAC) de Kubernetes, que se basa en Grupos de Google para GKE.

Mejora la seguridad mediante la vinculación del control de acceso a las identidades de Google Cloud.

Arquitectura de servicios

Usa una cuenta de servicio de Kubernetes única para cada servicio de Kubernetes. Esta cuenta actúa como una cuenta de servicio de IAM mediante el uso de Workload Identity.

Mejora la seguridad minimizando los permisos que se deben proporcionar a cada servicio.

Expone servicios a través de la API de Gateway de GKE.

Simplifica la administración de la configuración mediante un enfoque declarativo y un enfoque basado en los recursos para administrar las reglas de entrada y las configuraciones de balanceo de cargas.

Ejecuta servicios como servicios distribuidos mediante el uso de Anthos Service Mesh con Certificate Authority Service.

Proporciona seguridad mejorada mediante la aplicación de la autenticación entre servicios y también proporciona tolerancia automática a errores mediante el redireccionamiento del tráfico fuera de los servicios en mal estado.

Usa la replicación entre regiones de AlloyDB para PostgreSQL.

Proporciona alta disponibilidad en la capa de la base de datos.

Arquitectura de la red

Las instancias de VPC compartida se configuran en cada entorno y los clústeres de GKE se crean en proyectos de servicio.

La VPC compartida proporciona una administración centralizada de la configuración de red, a la vez que mantiene la separación de los entornos.

Usa Cloud Load Balancing en una configuración multirregional y de varios clústeres.

Proporciona una sola dirección IP Anycast para acceder a clústeres regionales de GKE a fin de obtener servicios de alta disponibilidad y baja latencia.

Usa conexiones HTTPS para el acceso del cliente a los servicios. Redirecciona cualquier solicitud HTTP de cliente a HTTPS.

Ayuda a proteger los datos sensibles en tránsito y a evitar los ataques de intermediarios.

Usa el Administrador de certificados para administrar certificados públicos.

Administra certificados de forma unificada.

Protege la interfaz web con Google Cloud Armor.

Mejora la seguridad mediante la protección contra vulnerabilidades comunes de las aplicaciones web y ataques volumétricos.

Tus decisiones pueden ser distintas a las del plano. Para obtener información sobre las alternativas, consulta Alternativas a las recomendaciones predeterminadas.

Próximos pasos