As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Implemente um cluster CockroachDB no Amazon EKS usando o Terraform
Sandip Gangapadhyay e Kalyan Senthilnathan, da Amazon Web Services
Resumo
Esse padrão fornece um módulo HashiCorp Terraform para implantar um cluster CockroachDB
Público-alvo
Para implementar esse padrão, recomendamos que você esteja familiarizado com o seguinte:
HashiCorp Conceitos do Terraform e práticas de infraestrutura como código (IaC)
Serviços da AWS, especialmente o Amazon EKS
Fundamentos do Kubernetes, incluindo operadores e StatefulSets configurações de serviços
Bancos de dados SQL distribuídos
Conceitos de segurança, como gerenciamento de certificados TLS.
DevOps práticas, CI/CD fluxos de trabalho e automação da infraestrutura
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS
Permissões para implantar recursos em um cluster Amazon EKS
Um cluster Amazon EKS versão v1.23 ou posterior, com nós rotulados
node=cockroachdbDriver Amazon Elastic Block Store Container Storage Interface (CSI)
versão 1.19.0 ou posterior, instalado no cluster Amazon EKS Git, instalado
AWS Command Line Interface (AWS CLI) versão 2.9.18 ou posterior, instalada e configurada
Limitações
O operador CockroachDB Kubernetes não oferece suporte a vários clusters Kubernetes para implantações em várias regiões. Para obter mais limitações, consulte Orchestrate CockroachDB em vários clusters Kubernetes (documentação do CockroachDB) e CockroachDB Kubernetes
Operator (). GitHub A remoção automática de declarações de volume persistentes (PVCs) está atualmente desativada por padrão. Isso significa que depois de descomissionar e remover um nó, o operador não removerá o volume persistente que foi montado em seu pod. Para obter mais informações, consulte Poda automática de PVC
na documentação do CockroachDB.
Versões do produto
CockroachDB versão 22.2.2
Arquitetura
Arquitetura de destino
O diagrama a seguir mostra uma implantação altamente disponível do CockroachDB em três zonas de AWS disponibilidade em uma nuvem privada virtual (VPC). Os pods do CockroachDB são gerenciados por meio do Amazon EKS. A arquitetura ilustra como os usuários acessam o banco de dados por meio de um Network Load Balancer, que distribui o tráfego para os pods do CockroachDB. Os pods são executados em instâncias do Amazon Elastic Compute Cloud EC2 (Amazon) em cada zona de disponibilidade, o que fornece resiliência e tolerância a falhas.

Recursos criados
A implantação do módulo Terraform usado nesse padrão cria os seguintes recursos:
Network Load Balancer — Esse recurso serve como ponto de entrada para solicitações de clientes e distribui uniformemente o tráfego pelas instâncias do CockroachDB.
CockroachDB StatefulSet — StatefulSet Define o estado desejado da implantação do CockroachDB no cluster Amazon EKS. Ele gerencia a implantação, o dimensionamento e as atualizações ordenadas dos pods do CockroachDB.
Pods do CockroachDB — Esses pods são instâncias do CockroachDB em execução como contêineres nos pods do Kubernetes. Esses pods armazenam e gerenciam os dados em todo o cluster distribuído.
Banco de dados CockroachDB — Esse é o banco de dados distribuído gerenciado pelo CockroachDB, abrangendo vários pods. Ele replica dados para alta disponibilidade, tolerância a falhas e desempenho.
Ferramentas
Serviços da AWS
AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
O Amazon Elastic Kubernetes Service (Amazon EKS) ajuda você a executar o AWS Kubernetes sem precisar instalar ou manter seu próprio plano de controle ou nós do Kubernetes.
Outras ferramentas
O HashiCorp Terraform
é uma ferramenta de infraestrutura como código (IaC) que ajuda a provisionar e gerenciar recursos e infraestrutura de nuvem por meio de código. kubectl
é uma interface de linha de comando que ajuda você na execução de comandos em clusters do Kubernetes.
Repositório de código
O código desse padrão está disponível no repositório GitHub Implantar um CockroachDB no Amazon EKS usando
modulespasta — Esta pasta contém o módulo Terraform para CockroachDBmainpasta — Essa pasta contém o módulo raiz que chama o módulo filho CockroachDB para criar o cluster de banco de dados CockroachDB.
Práticas recomendadas
Não reduza para menos de três nós. Isso é considerado um antipadrão no CockroachDB e pode causar erros. Para obter mais informações, consulte Cluster Scaling na documentação
do CockroachDB. Implemente o escalonamento automático do Amazon EKS usando o Karpernter ou o Cluster Autoscaler. Isso permite que o cluster CockroachDB seja escalado horizontalmente e que novos nós sejam escalados automaticamente. Para obter mais informações, consulte Escalar a computação em cluster com o Karpenter e o Cluster Autoscaler na documentação do Amazon EKS.
nota
Devido à regra de agendamento do
podAntiAffinityKubernetes, somente um pod do CockroachDB pode ser programado em um nó do Amazon EKS.Para obter as melhores práticas de segurança do Amazon EKS, consulte Melhores práticas de segurança na documentação do Amazon EKS.
Para obter as melhores práticas de desempenho do SQL para o CockroachDB, consulte as melhores práticas de desempenho do SQL
na documentação do CockroachDB. Para obter mais informações sobre como configurar um back-end remoto do Amazon Simple Storage Service (Amazon S3) para o arquivo de estado do Terraform, consulte Amazon S3
na documentação do Terraform.
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Clone o repositório de códigos. | Digite o comando a seguir para clonar o repositório:
| DevOps engenheiro, Git |
Atualize as variáveis do Terraform. |
| DevOps engenheiro, Terraform |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Implantar a infraestrutura. |
| DevOps engenheiro, Terraform |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Verifique a criação do recurso. |
| DevOps engenheiro |
(Opcional) Aumentar ou diminuir a escala. |
| DevOps engenheiro, Terraform |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Exclua a infraestrutura. | A escalabilidade de nós para
| Terraform |
Solução de problemas
| Problema | Solução |
|---|---|
Erro ao validar as credenciais do provedor | Ao executar o Terraform
Esse erro é causado pela expiração do token de segurança das credenciais usadas na configuração da sua máquina local. Para obter instruções sobre como resolver o erro, consulte Definir e visualizar as configurações na AWS CLI documentação. |
Pods do CockroachDB em estado pendente |
|
Recursos relacionados
Implante o CockroachDB em um único cluster Kubernetes
(documentação do CockroachDB) Orquestre o CockroachDB em vários clusters Kubernetes (documentação do CockroachDB
) AWS Provedor
(documentação do Terraform)
Anexos
Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip