Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Déployez un cluster CockroachDB dans Amazon EKS à l'aide de Terraform
Sandip Gangapadhyay et Kalyan Senthilnathan, Amazon Web Services
Résumé
Ce modèle fournit un module HashiCorp Terraform pour déployer un cluster CockroachDB
Public visé
Pour implémenter ce modèle, nous vous recommandons de vous familiariser avec les éléments suivants :
HashiCorp Concepts de Terraform et pratiques de l'infrastructure en tant que code (IaC)
Services AWS, en particulier Amazon EKS
Principes fondamentaux de Kubernetes, y compris les opérateurs StatefulSets et les configurations de service
Bases de données SQL distribuées
Concepts de sécurité, tels que la gestion des certificats TLS.
DevOps pratiques, CI/CD flux de travail et automatisation de l'infrastructure
Conditions préalables et limitations
Conditions préalables
Un actif Compte AWS
Autorisations pour déployer des ressources dans un cluster Amazon EKS
Un cluster Amazon EKS version v1.23 ou ultérieure, avec des nœuds étiquetés
node=cockroachdbPilote Amazon Elastic Block Store Container Storage Interface (CSI)
version 1.19.0 ou ultérieure, installé dans le cluster Amazon EKS Git, installé
AWS Command Line Interface (AWS CLI) version 2.9.18 ou ultérieure, installée et configurée
Limites
L'opérateur Kubernetes CockroachDB ne prend pas en charge plusieurs clusters Kubernetes pour les déploiements multirégionaux. Pour plus de limites, voir Orchestrate CockroachDB sur plusieurs clusters Kubernetes (documentation CockroachDB) et CockroachDB Kubernetes
Operator (). GitHub L'élagage automatique des demandes de volume persistantes (PVCs) est actuellement désactivé par défaut. Cela signifie qu'après la mise hors service et le retrait d'un nœud, l'opérateur ne supprimera pas le volume persistant qui a été monté sur son pod. Pour plus d'informations, consultez la section Élagage automatique du PVC dans la documentation de
CockroachDB.
Versions du produit
Version 22.2.2 de CockroachDB
Architecture
Architecture cible
Le schéma suivant montre un déploiement hautement disponible de CockroachDB sur trois zones de AWS disponibilité au sein d'un cloud privé virtuel (VPC). Les pods CockroachDB sont gérés via Amazon EKS. L'architecture illustre comment les utilisateurs accèdent à la base de données via un Network Load Balancer, qui distribue le trafic aux pods CockroachDB. Les pods s'exécutent sur des instances Amazon Elastic Compute Cloud (Amazon EC2) dans chaque zone de disponibilité, ce qui garantit résilience et tolérance aux pannes.

Ressources créées
Le déploiement du module Terraform utilisé dans ce modèle crée les ressources suivantes :
Network Load Balancer — Cette ressource sert de point d'entrée pour les demandes des clients et répartit uniformément le trafic entre les instances de CockroachDB.
CockroachDB StatefulSet — StatefulSet Définit l'état souhaité pour le déploiement de CockroachDB au sein du cluster Amazon EKS. Il gère le déploiement ordonné, le dimensionnement et les mises à jour des pods CockroachDB.
Pods CockroachDB — Ces pods sont des instances de CockroachDB exécutées sous forme de conteneurs dans des pods Kubernetes. Ces modules stockent et gèrent les données dans l'ensemble du cluster distribué.
Base de données CockroachDB — Il s'agit de la base de données distribuée gérée par CockroachDB, couvrant plusieurs pods. Il réplique les données pour garantir une haute disponibilité, une tolérance aux pannes et des performances élevées.
Outils
Services AWS
AWS Command Line Interface (AWS CLI) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
Amazon Elastic Kubernetes Service (Amazon EKS) vous permet d'exécuter AWS Kubernetes sans avoir à installer ou à gérer votre propre plan de contrôle ou vos propres nœuds Kubernetes.
Autres outils
HashiCorp Terraform
est un outil d'infrastructure en tant que code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources du cloud. kubectl
est une interface de ligne de commande qui vous permet d'exécuter des commandes sur des clusters Kubernetes.
Référentiel de code
Le code de ce modèle est disponible dans le référentiel GitHub Deploy a CockroachDB in Amazon EKS using
modulesdossier — Ce dossier contient le module Terraform pour CockroachDBmaindossier — Ce dossier contient le module racine qui appelle le module enfant CockroachDB pour créer le cluster de base de données CockroachDB.
Bonnes pratiques
Ne réduisez pas la taille à moins de trois nœuds. Ceci est considéré comme un anti-modèle sur CockroachDB et peut provoquer des erreurs. Pour plus d'informations, consultez Cluster Scaling
dans la documentation de CockroachDB. Implémentez le dimensionnement automatique d'Amazon EKS à l'aide de Karpernter ou Cluster Autoscaler. Cela permet au cluster CockroachDB de s'étendre horizontalement et de créer automatiquement de nouveaux nœuds. Pour plus d'informations, consultez la section Scale cluster computing with Karpenter et Cluster Autoscaler dans la documentation Amazon EKS.
Note
En raison de la règle de planification
podAntiAffinityKubernetes, un seul pod CockroachDB peut être planifié dans un nœud Amazon EKS.Pour connaître les meilleures pratiques de sécurité d'Amazon EKS, consultez la section Meilleures pratiques en matière de sécurité dans la documentation Amazon EKS.
Pour connaître les meilleures pratiques en matière de performances SQL pour CockroachDB, consultez la section Meilleures pratiques en matière de performances SQL
dans la documentation de CockroachDB. Pour plus d'informations sur la configuration d'un backend distant Amazon Simple Storage Service (Amazon S3) pour le fichier d'état Terraform, consultez Amazon S3
dans la documentation Terraform.
Épopées
| Sous-tâche | Description | Compétences requises |
|---|---|---|
Clonez le référentiel de code. | Entrez la commande suivante pour cloner le référentiel :
| DevOps ingénieur, Git |
Mettez à jour les variables Terraform. |
| DevOps ingénieur, Terraform |
| Sous-tâche | Description | Compétences requises |
|---|---|---|
Déployez l'infrastructure. |
| DevOps ingénieur, Terraform |
| Sous-tâche | Description | Compétences requises |
|---|---|---|
Vérifiez la création des ressources. |
| DevOps ingénieur |
(Facultatif) Augmentez ou diminuez. |
| DevOps ingénieur, Terraform |
| Sous-tâche | Description | Compétences requises |
|---|---|---|
Supprimez l'infrastructure. | La mise à l'échelle des nœuds
| Terraform |
Résolution des problèmes
| Problème | Solution |
|---|---|
Erreur lors de la validation des informations d'identification du fournisseur | Lorsque vous exécutez la
Cette erreur est due à l'expiration du jeton de sécurité pour les informations d'identification utilisées dans la configuration de votre machine locale. Pour obtenir des instructions sur la façon de résoudre l'erreur, consultez la section Définir et afficher les paramètres de configuration dans la AWS CLI documentation. |
Les pods CockroachDB sont en attente |
|
Ressources connexes
Déployer CockroachDB dans un seul cluster Kubernetes
(documentation CockroachDB) Orchestrez CockroachDB sur plusieurs clusters Kubernetes
(documentation CockroachDB) AWS Fournisseur
(documentation Terraform)