

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
<a name="deploy-cockroachdb-on-eks-using-terraform"></a>

*Sandip Gangapadhyay et Kalyan Senthilnathan, Amazon Web Services*

## Résumé
<a name="deploy-cockroachdb-on-eks-using-terraform-summary"></a>

[Ce modèle fournit un module HashiCorp Terraform pour déployer un cluster [CockroachDB](https://www.cockroachlabs.com/docs/stable/) à nœuds multiples sur Amazon Elastic Kubernetes Service (Amazon EKS) à l'aide de l'opérateur CockroachDB.](https://www.cockroachlabs.com/docs/v25.4/cockroachdb-operator-overview) CockroachDB est une base de données SQL distribuée qui fournit un partitionnement horizontal automatique, une haute disponibilité et des performances cohérentes sur des clusters répartis géographiquement. Ce modèle utilise Amazon EKS comme plate-forme Kubernetes gérée et implémente le [gestionnaire de certificats pour les communications entre nœuds sécurisées par TLS](https://cert-manager.io/docs/). Il utilise également un [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pour la distribution du trafic et crée CockroachDB [StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)avec des modules qui répliquent automatiquement les données pour améliorer la tolérance aux pannes et les performances.

**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
<a name="deploy-cockroachdb-on-eks-using-terraform-prereqs"></a>

**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=cockroachdb`
+ [Pilote Amazon Elastic Block Store Container Storage Interface (CSI)](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) version 1.19.0 ou ultérieure, installé dans le cluster Amazon EKS
+ [Terraform CLI version 1.0.0 ou ultérieure, installée](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ [kubectl, installé](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)
+ Git, [installé](https://git-scm.com/install/)
+ AWS Command Line Interface [(AWS CLI) version 2.9.18 ou ultérieure, [installée et configurée](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**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](https://www.cockroachlabs.com/docs/stable/orchestrate-cockroachdb-with-kubernetes-multi-cluster.html#eks) Operator ().](https://github.com/cockroachdb/cockroach-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](https://www.cockroachlabs.com/docs/stable/scale-cockroachdb-kubernetes.html#automatic-pvc-pruning) CockroachDB.

**Versions du produit**
+ Version 22.2.2 de CockroachDB

## Architecture
<a name="deploy-cockroachdb-on-eks-using-terraform-architecture"></a>

**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.

![Un déploiement de CockroachDB à haute disponibilité sur trois zones de disponibilité AWS au sein d'un VPC.](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e22d81ab-b85c-4709-8579-4c9cdb4afdb6/images/4b163abf-6fdc-4310-840c-bda621ab25dd.png)


**Ressources créées**

Le déploiement du module Terraform utilisé dans ce modèle crée les ressources suivantes :

1. **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.

1. **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.

1. 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é.

1. **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
<a name="deploy-cockroachdb-on-eks-using-terraform-tools"></a>

**Services AWS**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 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](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) 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](https://www.terraform.io/docs) 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](https://kubernetes.io/docs/tasks/tools/) 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](https://github.com/aws-samples/crdb-cluster-eks-terraform) Terraform. Le référentiel de code contient les fichiers et dossiers suivants pour Terraform :
+ `modules`dossier — Ce dossier contient le module Terraform pour CockroachDB
+ `main`dossier — 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
<a name="deploy-cockroachdb-on-eks-using-terraform-best-practices"></a>
+ 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](https://www.cockroachlabs.com/docs/stable/scale-cockroachdb-kubernetes.html) 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](https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html) Amazon EKS.
**Note**  
En raison de la règle de planification `podAntiAffinity` Kubernetes, 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é](https://docs.aws.amazon.com/eks/latest/best-practices/security.html) 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](https://www.cockroachlabs.com/docs/stable/performance-best-practices-overview.html) 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](https://developer.hashicorp.com/terraform/language/backend/s3) dans la documentation Terraform.

## Épopées
<a name="deploy-cockroachdb-on-eks-using-terraform-epics"></a>

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le référentiel de code. | Entrez la commande suivante pour cloner le référentiel :<pre>git clone https://github.com/aws-samples/crdb-cluster-eks-terraform.git</pre> | DevOps ingénieur, Git | 
| Mettez à jour les variables Terraform. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps ingénieur, Terraform | 

### Déployez les ressources
<a name="deploy-the-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez l'infrastructure. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps ingénieur, Terraform | 

### Vérification du déploiement
<a name="verify-the-deployment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Vérifiez la création des ressources. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps ingénieur | 
| (Facultatif) Augmentez ou diminuez. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps ingénieur, Terraform | 

### Nettoyage
<a name="clean-up"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez l'infrastructure. | La mise à l'échelle des nœuds `0` réduira les coûts de calcul. Cependant, vous devrez toujours payer des frais pour les volumes Amazon EBS persistants créés par ce module. Pour éliminer les coûts de stockage, procédez comme suit pour supprimer tous les volumes :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | Terraform | 

## Résolution des problèmes
<a name="deploy-cockroachdb-on-eks-using-terraform-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Erreur lors de la validation des informations d'identification du fournisseur | Lorsque vous exécutez la `destroy` commande Terraform `apply` ou, vous pouvez rencontrer l'erreur suivante :<br />`Error: configuring Terraform AWS Provider: error validating provider  credentials: error calling sts:GetCallerIdentity: operation error STS: GetCallerIdentity, https response error StatusCode: 403, RequestID: 123456a9-fbc1-40ed-b8d8-513d0133ba7f, api error InvalidClientTokenId: The security token included in the request is invalid.`<br />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](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods) dans la AWS CLI documentation. | 
| Les pods CockroachDB sont en attente | [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | 

## Ressources connexes
<a name="deploy-cockroachdb-on-eks-using-terraform-resources"></a>
+ [Déployer CockroachDB dans un seul cluster Kubernetes](https://www.cockroachlabs.com/docs/dev/deploy-cockroachdb-with-kubernetes.html) (documentation CockroachDB)
+ [Orchestrez CockroachDB sur plusieurs clusters Kubernetes](https://www.cockroachlabs.com/docs/dev/orchestrate-cockroachdb-with-kubernetes-multi-cluster.html) (documentation CockroachDB)
+ [AWS Fournisseur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (documentation Terraform)

## Pièces jointes
<a name="attachments-e22d81ab-b85c-4709-8579-4c9cdb4afdb6"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/e22d81ab-b85c-4709-8579-4c9cdb4afdb6/attachments/attachment.zip)