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.
Implemente un clúster de CockroachDB en Amazon EKS mediante Terraform
Sandip Gangapadhyay y Kalyan Senthilnathan, Amazon Web Services
Resumen
Este patrón proporciona un módulo HashiCorp Terraform para implementar un clúster CockroachDB
Destinatarios previstos
Para implementar este patrón, le recomendamos que se familiarice con lo siguiente:
HashiCorp Conceptos y prácticas de infraestructura como código (IaC) de Terraform
Servicios de AWS, en particular Amazon EKS
Los aspectos básicos de Kubernetes StatefulSets, incluidos los operadores y las configuraciones de los servicios
Bases de datos SQL distribuidas
Conceptos de seguridad, como la gestión de certificados TLS.
DevOps prácticas, CI/CD flujos de trabajo y automatización de infraestructuras
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS
Permisos para implementar recursos en un clúster de Amazon EKS
Un clúster de Amazon EKS versión 1.23 o posterior, con los nodos etiquetados
node=cockroachdbControlador de la interfaz de almacenamiento de contenedores (CSI) de Amazon Elastic Block Store
, versión 1.19.0 o posterior, instalado en el clúster Amazon EKS Git, instalado
AWS Command Line Interface (AWS CLI) versión 2.9.18 o posterior, instalada y configurada
Limitaciones
El operador Kubernetes de CockroachDB no admite varios clústeres de Kubernetes para despliegues en varias regiones. Para más limitaciones, consulte Cómo organizar CockroachDB en varios clústeres de Kubernetes (documentación de CockroachDB) y CockroachDB Kubernetes Operator
(). GitHub Actualmente, la eliminación automática PVCs de las notificaciones por volumen persistentes () está deshabilitada de forma predeterminada. Esto significa que, tras desmantelar y retirar un nodo, el operador no eliminará el volumen persistente que estaba montado en su módulo. Para obtener más información, consulte Eliminación automática de PVC en la documentación
de CockroachDB.
Versiones de producto
CockroachDB versión 22.2.2
Arquitectura
Arquitectura de destino
El siguiente diagrama muestra una implementación de CockroachDB de alta disponibilidad en tres zonas de AWS disponibilidad dentro de una nube privada virtual (VPC). Los pods CockroachDB se administran a través de Amazon EKS. La arquitectura ilustra cómo los usuarios acceden a la base de datos a través de un Network Load Balancer, que distribuye el tráfico a los pods de CockroachDB. Los pods se ejecutan en instancias de Amazon Elastic Compute Cloud (Amazon EC2) en cada zona de disponibilidad, lo que proporciona resiliencia y tolerancia a errores.

Recursos creados
Al implementar el módulo Terraform utilizado en este patrón, se crean los siguientes recursos:
Network Load Balancer: este recurso sirve como punto de entrada para las solicitudes de los clientes y distribuye el tráfico de manera uniforme entre las instancias de CockroachDB.
CockroachDB StatefulSet: StatefulSet define el estado deseado de la implementación de CockroachDB dentro del clúster de Amazon EKS. Administra el despliegue ordenado, el escalado y las actualizaciones de los pods de CockroachDB.
Módulos CockroachDB: estos pods son instancias de CockroachDB que se ejecutan como contenedores dentro de los pods de Kubernetes. Estos pods almacenan y administran los datos en el clúster distribuido.
Base de datos CockroachDB: se trata de la base de datos distribuida que administra CockroachDB y que abarca varios módulos. Replica los datos para garantizar una alta disponibilidad, tolerancia a errores y rendimiento.
Tools (Herramientas)
Servicios de AWS
AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le ayuda a interactuar Servicios de AWS mediante comandos en su shell de línea de comandos.
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.
Otras herramientas
HashiCorp Terraform
es una herramienta de infraestructura como código (IaC) que facilita usar el código para aprovisionar y administrar los recursos y la infraestructura en la nube. kubectl
: una interfaz de la línea de comandos que le ayuda en la ejecución de comandos en clústeres de Kubernetes.
Repositorio de código
El código de este patrón está disponible en el repositorio GitHub Deploy a CockroachDB en Amazon EKS mediante
modulescarpeta: esta carpeta contiene el módulo Terraform para CockroachDBmaincarpeta: esta carpeta contiene el módulo raíz que llama al módulo secundario de CockroachDB para crear el clúster de base de datos de CockroachDB.
Prácticas recomendadas
No reduzca la escala a menos de tres nodos. Esto se considera un antipatrón en CockroachDB y puede provocar errores. Para obtener más información, consulte el escalado de clústeres
en la documentación de CockroachDB. Implemente el escalado automático de Amazon EKS mediante Karpernter o Cluster Autoscaler. Esto permite que el clúster de CockroachDB se escale horizontalmente y que los nuevos nodos se creen automáticamente. Para más información, consulte Escalado de computación en clústeres´con Karpenter y Cluster Autoscaler en la documentación de Amazon EKS.
nota
Debido a la regla de programación de
podAntiAffinityKubernetes, solo se puede programar un pod de CockroachDB en un nodo de Amazon EKS.Para conocer las prácticas recomendadas de seguridad de Amazon EKS, consulte Prácticas recomendadas de seguridad en la documentación de Amazon EKS.
Para conocer las prácticas recomendadas de rendimiento de SQL para CockroachDB, consulte las prácticas recomendadas de rendimiento de SQL en la documentación
de CockroachDB. Para obtener más información sobre cómo configurar un backend remoto de Amazon Simple Storage Service (Amazon S3) para el archivo de estado de Terraform, consulte Amazon S3
en la documentación de Terraform.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Clone el repositorio de código. | Introduzca el siguiente comando para clonar el repositorio:
| DevOps ingeniero, Git |
Actualice las variables de Terraform. |
| DevOps ingeniero, Terraform |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Implemente la infraestructura. |
| DevOps ingeniero, Terraform |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Verificar la creación de recursos. |
| DevOps ingeniero |
(Opcional) Amplíe o reduzca la escala. |
| DevOps ingeniero, Terraform |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Configurar la infraestructura. | Escalar los nodos para
| Terraform |
Resolución de problemas
| Problema | Solución |
|---|---|
Error al validar las credenciales del proveedor | Al ejecutar Terraform
Este error se debe a la caducidad del token de seguridad de las credenciales usadas en la configuración de la máquina local. Para obtener instrucciones sobre cómo resolver el error, consulte Establecer y ver los ajustes de configuración en la AWS CLI documentación. |
Los pods de CockroachDB están en estado pendiente |
|
Recursos relacionados
Implemente CockroachDB en un único clúster de Kubernetes
(documentación de CockroachDB) Organice CockroachDB
en varios clústeres de Kubernetes (documentación de CockroachDB) AWS Proveedor
(documentación de Terraform)
Conexiones
Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip