Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Simplificación de las implementaciones de PostgreSQL en Amazon EKS mediante PGO
Shalaka Dengale, Amazon Web Services
Resumen
Este patrón integra el operador de Postgres de Crunchy Data (PGO) con Amazon Elastic Kubernetes Service (Amazon EKS) para agilizar las implementaciones de PostgreSQL en entornos nativos en la nube. PGO proporciona automatización y escalabilidad para administrar bases de datos de PostgreSQL en Kubernetes. Al combinar PGO con Amazon EKS, se forma una plataforma sólida para implementar, administrar y escalar bases de datos de PostgreSQL de manera eficiente.
Esta integración proporciona las ventajas clave siguientes:
Implementación automatizada: simplifica la implementación y la administración de clústeres de PostgreSQL.
Definiciones de recursos personalizadas (CRDs): utiliza primitivas de Kubernetes para la administración de PostgreSQL.
Alta disponibilidad: admite la conmutación por error automática y la replicación sincrónica.
Copias de seguridad y restauraciones automatizadas: simplifica los procesos para hacer copias de seguridad y restauraciones.
Escalado horizontal: permite el escalado dinámico de los clústeres de PostgreSQL.
Actualizaciones de versión: facilita las actualizaciones sucesivas con un tiempo de inactividad mínimo.
Seguridad: aplica el cifrado, los controles de acceso y los mecanismos de autenticación.
Requisitos previos y limitaciones
Requisitos previos
Un activo. Cuenta de AWS
Interfaz de la línea de comandos de AWS (AWS CLI) versión 2, instalada y configurada en Linux, macOS o Windows.
AWS CLI Config, para conectar AWS los recursos desde la línea de comandos.
eksctl
instalado y configurado en Linux, macOS o Windows. kubectl, instalado y configurado para acceder a los recursos de su clúster de Amazon EKS. Para más información, consulte Configuración de kubectl y eksctl en la documentación de Amazon EKS.Su terminal de equipo está configurado para acceder al clúster de Amazon EKS. Para obtener más información, consulte Configuración del equipo para que se comunique con el clúster en la documentación de Amazon EKS.
Versiones de producto
Kubernetes, versiones 1.21 a 1.24 o posteriores (consulte la documentación de PGO
). PostgreSQL, versión 10 y posterior. Este patrón utiliza PostgreSQL, versión 16.
Limitaciones
Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para conocer la disponibilidad de las regiones, consulte Servicios de AWS by Region
. Para los puntos de conexión específicos, consulte la página Service endpoints and quotas y elija el enlace del servicio.
Arquitectura
Pila de tecnología de destino
Amazon EKS
Amazon Virtual Private Cloud (Amazon VPC)
Amazon Elastic Compute Cloud (Amazon EC2)
Arquitectura de destino

Este patrón crea una arquitectura que contiene un clúster de Amazon EKS con tres nodos. Cada nodo se ejecuta en un conjunto de EC2 instancias en el backend. Esta configuración de PostgreSQL sigue una arquitectura de réplica principal, que resulta especialmente eficaz en casos de uso con lectura intensiva. La arquitectura incluye los siguientes componentes:
El contenedor de base de datos principal (pg-primary) aloja la instancia principal de PostgreSQL a la que se dirigen todas las operaciones de escritura.
Los contenedores de réplicas secundarios (pg-replica) alojan las instancias de PostgreSQL que replican los datos de la base de datos principal y gestionan las operaciones de lectura.
PgBounceres un agrupador de conexiones ligero para bases de datos PostgreSQL que se incluye en PGO. Se encuentra entre el cliente y el servidor PostgreSQL y actúa como intermediario para las conexiones de las bases de datos.
PGO automatiza la implementación y la administración de los clústeres de PostgreSQL en este entorno de Kubernetes.
Patroni es una herramienta de código abierto que administra y automatiza las configuraciones de alta disponibilidad para PostgreSQL. Se incluye con PGO. Cuando utiliza Patroni con PGO en Kubernetes, desempeña un papel crucial a la hora de garantizar la resiliencia y la tolerancia a errores de un clúster de PostgreSQL. Para más información, consulte la documentación de Patroni
.
En el flujo de trabajo se incluyen estos pasos:
Implemente el operador de PGO. El operador de PGO se implementa en el clúster de Kubernetes que se ejecuta en Amazon EKS. Esto se puede hacer mediante manifiestos de Kubernetes o gráficos de Helm. Este patrón utiliza los manifiestos de Kubernetes.
Defina las instancias de PostgreSQL. Cuando el operador está en ejecución, se crean recursos personalizados (CRs) para especificar el estado deseado de las instancias de PostgreSQL. Esto incluye configuraciones como el almacenamiento, la replicación y la alta disponibilidad.
Administración de operadores. Se interactúa con el operador a través de objetos de la API de Kubernetes, por ejemplo, CRs para crear, actualizar o eliminar instancias de PostgreSQL.
Supervisión y mantenimiento. Puede supervisar el estado y el rendimiento de las instancias de PostgreSQL que se ejecutan en Amazon EKS. Los operadores suelen proporcionar métricas y registros con fines de supervisión. Puede hacer tareas de mantenimiento de rutina, como actualizaciones y aplicación de revisiones, según sea necesario. Para más información, consulte Supervisión del rendimiento de un clúster y visualización de registros en la documentación de Amazon EKS.
Escalado y copia de seguridad: puede utilizar las características proporcionadas por el operador para escalar las instancias de PostgreSQL y administrar las copias de seguridad.
Este patrón no cubre las operaciones de supervisión, mantenimiento y copia de seguridad.
Automatización y escala
Puede utilizarlos para automatizar la creación de CloudFormation la infraestructura. Para más información, consulte Creación de recursos de Amazon EKS con CloudFormation en la documentación de Amazon EKS.
Puede usar GitVersion los números de compilación de Jenkins para automatizar la implementación de instancias de bases de datos.
Tools (Herramientas)
Servicios de AWS
Amazon Elastic Kubernetes Service (Amazon EKS) le ayuda a ejecutar AWS Kubernetes sin necesidad de instalar o mantener su propio plano de control o nodos de Kubernetes.
AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le ayuda a interactuar mediante los comandos de su consola de línea de comandos. Servicios de AWS
Otras herramientas
Prácticas recomendadas
Siga estas prácticas recomendadas para garantizar una implementación eficiente y sin problemas:
Proteja el clúster de EKS. Implemente las mejores prácticas de seguridad para su clúster de EKS, como el uso de funciones AWS Identity and Access Management (IAM) para las cuentas de servicio (IRSA), las políticas de red y los grupos de seguridad de VPC. Limite el acceso al servidor de API del clúster de EKS y cifre las comunicaciones entre los nodos y el servidor de API mediante TLS.
Asegúrese de la compatibilidad de versiones entre PGO y Kubernetes que se ejecutan en Amazon EKS. Algunas características de PGO pueden requerir versiones específicas de Kubernetes o introducir limitaciones de compatibilidad. Para más información, consulte Components and Compatibility
en la documentación de PGO. Planifique la asignación de recursos para la implementación de PGO, lo que incluye la CPU, la memoria y el almacenamiento. Tenga en cuenta los requisitos de recursos de las instancias de PGO y PostgreSQL que administra. Supervise el uso de los recursos y escálelos según sea necesario.
Diseñe para una alta disponibilidad. Diseñe la implementación de PGO para una alta disponibilidad a fin de minimizar el tiempo de inactividad y garantizar la fiabilidad. Implemente varias réplicas de PGO en varias zonas de disponibilidad para la tolerancia a errores.
Implemente procedimientos de copia de seguridad y restauración para las bases de datos de PostgreSQL que administra PGO. Utilice las características que ofrece PGO o las soluciones de copia de seguridad de terceros que sean compatibles con Kubernetes y Amazon EKS.
Configure la supervisión y el registro de la implementación de PGO para hacer un seguimiento del rendimiento, del estado y de los eventos. Utilice herramientas como Prometheus para supervisar las métricas y Grafana para la visualización. Configure el registro para capturar los registros de PGO para la solución de problemas y la auditoría.
Configure las redes de manera correcta para permitir las comunicaciones entre instancias de PGO, PostgreSQL y otros servicios del clúster de Kubernetes. Utilice las características de red de Amazon VPC y los complementos de red de Kubernetes, como Calico o CNI de Amazon VPC
, para aplicar las políticas de red y aislar el tráfico. Elija las opciones de almacenamiento adecuadas para las bases de datos de PostgreSQL. Tenga en cuenta factores como el rendimiento, la durabilidad y la escalabilidad. Utilice los volúmenes de Amazon Elastic Block Store (Amazon EBS) AWS o los servicios de almacenamiento gestionado para el almacenamiento persistente. Para más información, consulte el tema sobre almacenamiento de volúmenes de Kubernetes con Amazon EBS en la documentación de Amazon EKS.
Utilice herramientas de infraestructura como código (IaC) CloudFormation para automatizar la implementación y la configuración de PGO en Amazon EKS. Defina los componentes de la infraestructura, tales como el clúster de EKS, las redes y los recursos de PGO, como código para garantizar la coherencia, la repetibilidad y el control de versiones.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Crear un rol de IAM. |
| Administrador de AWS |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Cree un clúster de Amazon EKS. | Si ya implementó un clúster, omita este paso. De lo contrario, implemente un clúster de Amazon EKS en su clúster actual Cuenta de AWS mediante notaEste patrón utiliza Amazon EC2 como grupo de nodos para Amazon EKS. Si desea usarlo AWS Fargate, consulte la
| Administrador de AWS, administrador de Terraform o eksctl, administrador de Kubernetes |
Valide el estado del clúster. | Ejecute el comando siguiente para ver el estado actual de los nodos del clúster:
Si encuentra errores, consulte la sección de resolución de problemas de la documentación de Amazon EKS. | Administrador de AWS, administrador de Terraform o eksctl, administrador de Kubernetes |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Habilite el proveedor de OIDC de IAM. | Como requisito previo para el controlador de la interfaz de almacenamiento de contenedores (CSI) de Amazon EBS, debe tener un proveedor de IAM OpenID Connect (OIDC) existente para el clúster. Habilite el proveedor de IAM OIDC mediante el comando siguiente:
Para más información acerca de este paso, consulte la documentación de Amazon EKS. | Administrador de AWS |
Cree un rol de IAM para el controlador de CSI de Amazon EBS | Utilice el comando siguiente
Si utiliza controladores de Amazon EBS cifrados, debe configurar la política con mayor detalle. Para obtener instrucciones, consulte la documentación de controladores de la SCI de Amazon EBS | Administrador de AWS |
Agregue el controlador de CSI de Amazon EBS. | Utilice el comando siguiente
| Administrador de AWS |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Clone el repositorio de PGO. | Clona el GitHub repositorio para PGO:
| AWS DevOps |
Proporcione los detalles del rol para crear la cuenta de servicio. | Para conceder al clúster de Amazon EKS acceso a los AWS recursos necesarios, especifique el nombre del recurso de Amazon (ARN) del rol OIDC que creó anteriormente en el archivo.
| Administrador de AWS, administrador de Kubernetes |
Cree el espacio de nombres y los requisitos previos de PGO. |
| Administrador de Kubernetes |
Verifique la creación de los pods. | Compruebe que se hayan creado el espacio de nombres y la configuración predeterminada:
| Administrador de AWS, administrador de Kubernetes |
Verifíquelo. PVCs | Usa el siguiente comando para verificar las notificaciones de volumen persistentes (PVCs):
| Administrador de AWS, administrador de Kubernetes |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Cree un operador. | Revise el contenido del archivo ubicado en
Estas actualizaciones hacen lo siguiente:
| Administrador de AWS, DBA, administrador de Kubernetes |
Implemente el operador. | Implemente el operador de PGO para permitir la administración y el uso simplificados de las bases de datos de PostgreSQL en entornos de Kubernetes:
| Administrador de AWS, DBA, administrador de Kubernetes |
Comprobar la implementación. |
En el resultado del comando, anote la réplica principal ( | Administrador de AWS, DBA, administrador de Kubernetes |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Escriba los datos en la réplica principal. | Utilice los comandos siguientes para conectarse a la réplica principal de PostgreSQL y escribir datos en la base de datos:
| Administrador de AWS, administrador de Kubernetes |
Confirme que la réplica de lectura tiene los mismos datos. | Conéctese a la réplica de lectura de PostgreSQL y compruebe si la replicación de streaming funciona correctamente:
La réplica de lectura debe tener la tabla que creó en la réplica principal en el paso anterior. | Administrador de AWS, administrador de Kubernetes |
Resolución de problemas
| Problema | Solución |
|---|---|
El pod no se inicia. |
|
Las réplicas están muy atrasadas con respecto a la base de datos principal. |
|
No tiene visibilidad del rendimiento y el estado del clúster de PostgreSQL. |
|
La replicación no funciona. |
|
Recursos relacionados
Amazon Elastic Kubernetes Service (documento técnico Overview of Deployment Options on AWS)
CloudFormation (documento técnico Overview of Deployment Options on AWS)
Introducción a Amazon EKS: eksctl (Guía de usuario de Amazon EKS)
Configuración de kubectl y eksctl (Guía de usuario de Amazon EKS)
Creación de un rol para una federación de OpenID Connect (Guía de usuario de IAM)
Configuración de los ajustes de la AWS CLI (Guía AWS CLI del usuario)