

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Implementa un cluster CockroachDB in Amazon EKS utilizzando Terraform
<a name="deploy-cockroachdb-on-eks-using-terraform"></a>

*Sandip Gangapadhyay e Kalyan Senthilnathan, Amazon Web Services*

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

[Questo modello fornisce un modulo HashiCorp Terraform per la distribuzione di un cluster [CockroachDB](https://www.cockroachlabs.com/docs/stable/) multinodo su Amazon Elastic Kubernetes Service (Amazon EKS) utilizzando l'operatore CockroachDB.](https://www.cockroachlabs.com/docs/v25.4/cockroachdb-operator-overview) CockroachDB è un database SQL distribuito che fornisce sharding orizzontale automatico, alta disponibilità e prestazioni coerenti in cluster distribuiti geograficamente. Questo modello utilizza Amazon EKS come piattaforma Kubernetes gestita e implementa [cert-manager](https://cert-manager.io/docs/) per comunicazioni tra nodi protette da TLS. Utilizza anche un [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) per la distribuzione del traffico e crea CockroachDB [StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)con pod che replicano automaticamente i dati per la tolleranza ai guasti e le prestazioni.

**Destinatari**

Per implementare questo modello, ti consigliamo di conoscere quanto segue:
+ HashiCorp Concetti e pratiche di Terraform Infrastructure as Code (IaC)
+ Servizi AWS, in particolare Amazon EKS
+ Nozioni di base su Kubernetes, tra cui operatori e configurazioni dei StatefulSets servizi
+ Database SQL distribuiti
+ Concetti di sicurezza, come la gestione dei certificati TLS.
+ DevOps pratiche, CI/CD flussi di lavoro e automazione dell'infrastruttura

## Prerequisiti e limitazioni
<a name="deploy-cockroachdb-on-eks-using-terraform-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS
+ Autorizzazioni per distribuire risorse in un cluster Amazon EKS
+ Un cluster Amazon EKS versione 1.23 o successiva, con nodi etichettati `node=cockroachdb`
+ [Driver Amazon Elastic Block Store Container Storage Interface (CSI)](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) versione 1.19.0 o successiva, installato nel cluster Amazon EKS
+ [Terraform CLI versione 1.0.0 o successiva, installata](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ [kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html), installato
+ Git, [installato](https://git-scm.com/install/)
+ AWS Command Line Interface [(AWS CLI) versione 2.9.18 o successiva, [installata](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e configurata](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**Limitazioni**
+ L'operatore CockroachDB Kubernetes non supporta più cluster Kubernetes per implementazioni multiregionali. [Per ulteriori limitazioni, consulta [Orchestrate CockroachDB su più cluster Kubernetes (documentazione CockroachDB) e CockroachDB](https://www.cockroachlabs.com/docs/stable/orchestrate-cockroachdb-with-kubernetes-multi-cluster.html#eks) Kubernetes Operator ().](https://github.com/cockroachdb/cockroach-operator) GitHub
+ L'eliminazione automatica delle dichiarazioni di PVCs volume persistenti () è attualmente disabilitata per impostazione predefinita. Ciò significa che dopo la disattivazione e la rimozione di un nodo, l'operatore non rimuoverà il volume persistente che era montato sul relativo pod. Per ulteriori informazioni, consulta [Potatura automatica del PVC](https://www.cockroachlabs.com/docs/stable/scale-cockroachdb-kubernetes.html#automatic-pvc-pruning) nella documentazione di CockroachDB.

**Versioni del prodotto**
+ CockroachDB versione 22.2.2

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

**Architettura Target**

Il diagramma seguente mostra un'implementazione di CockroachDB ad alta disponibilità in tre zone di AWS disponibilità all'interno di un cloud privato virtuale (VPC). I pod CockroachDB sono gestiti tramite Amazon EKS. L'architettura illustra come gli utenti accedono al database tramite un Network Load Balancer, che distribuisce il traffico ai pod CockroachDB. I pod vengono eseguiti su istanze Amazon Elastic Compute Cloud EC2 (Amazon) in ogni zona di disponibilità, il che offre resilienza e tolleranza agli errori.

![\[Una distribuzione CockroachDB ad alta disponibilità su tre zone di disponibilità AWS all'interno di un VPC.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/e22d81ab-b85c-4709-8579-4c9cdb4afdb6/images/4b163abf-6fdc-4310-840c-bda621ab25dd.png)


**Risorse create**

L'implementazione del modulo Terraform utilizzato in questo modello crea le seguenti risorse:

1. **Network Load Balancer**: questa risorsa funge da punto di ingresso per le richieste dei client e distribuisce uniformemente il traffico tra le istanze CockroachDB.

1. **CockroachDB StatefulSet**: StatefulSet definisce lo stato desiderato della distribuzione di CockroachDB all'interno del cluster Amazon EKS. Gestisce la distribuzione ordinata, il ridimensionamento e gli aggiornamenti dei pod CockroachDB.

1. Pods **CockroachDB: questi pod** sono istanze di CockroachDB in esecuzione come contenitori all'interno dei pod Kubernetes. Questi pod archiviano e gestiscono i dati in tutto il cluster distribuito.

1. Database **CockroachDB: questo è il database** distribuito gestito da CockroachDB, che si estende su più pod. Replica i dati per garantire disponibilità, tolleranza agli errori e prestazioni elevate.

## Tools (Strumenti)
<a name="deploy-cockroachdb-on-eks-using-terraform-tools"></a>

**Servizi AWS**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) è uno strumento open source che consente di interagire Servizi AWS tramite comandi nella shell della riga di comando.
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) EKS) ti aiuta a eseguire AWS Kubernetes senza dover installare o gestire il tuo piano di controllo o i tuoi nodi Kubernetes.

**Altri strumenti**
+ [HashiCorp Terraform](https://www.terraform.io/docs) è uno strumento Infrastructure as Code (IaC) che consente di utilizzare il codice per fornire e gestire l'infrastruttura e le risorse cloud.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/) è un'interfaccia a riga di comando che ti aiuta a eseguire comandi sui cluster Kubernetes.

**Archivio di codice**

Il codice per questo pattern è disponibile nel [cluster GitHub Deploy a CockroachDB in Amazon EKS](https://github.com/aws-samples/crdb-cluster-eks-terraform) utilizzando il repository Terraform. L'archivio di codice contiene i seguenti file e cartelle per Terraform:
+ `modules`folder — Questa cartella contiene il modulo Terraform per CockroachDB
+ `main`folder: questa cartella contiene il modulo root che chiama il modulo secondario CockroachDB per creare il cluster di database CockroachDB.

## Best practice
<a name="deploy-cockroachdb-on-eks-using-terraform-best-practices"></a>
+ Non ridimensionare a meno di tre nodi. Questo è considerato un anti-pattern su CockroachDB e può causare errori. Per ulteriori informazioni, consulta [Cluster Scaling](https://www.cockroachlabs.com/docs/stable/scale-cockroachdb-kubernetes.html) nella documentazione di CockroachDB.
+ Implementa la scalabilità automatica di Amazon EKS utilizzando Karpernter o Cluster Autoscaler. Ciò consente al cluster CockroachDB di scalare orizzontalmente e di aggiungere nuovi nodi automaticamente. Per ulteriori informazioni, consulta [Scale cluster compute with Karpenter e Cluster Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html) nella documentazione di Amazon EKS.
**Nota**  
Grazie alla regola di pianificazione `podAntiAffinity` Kubernetes, è possibile pianificare un solo pod CockroachDB in un nodo Amazon EKS.
+ Per le best practice di sicurezza di Amazon EKS, consulta [Best Practices for Security](https://docs.aws.amazon.com/eks/latest/best-practices/security.html) nella documentazione di Amazon EKS.
+ Per le best practice relative alle prestazioni SQL per CockroachDB, consulta [SQL Performance Best Practices](https://www.cockroachlabs.com/docs/stable/performance-best-practices-overview.html) nella documentazione di CockroachDB.
+ Per ulteriori informazioni sulla configurazione di un backend remoto Amazon Simple Storage Service (Amazon S3) per il file di stato Terraform, consulta Amazon [S3](https://developer.hashicorp.com/terraform/language/backend/s3) nella documentazione di Terraform.

## Epiche
<a name="deploy-cockroachdb-on-eks-using-terraform-epics"></a>

### Configurare l'ambiente
<a name="set-up-your-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clona il repository del codice. | Inserisci il seguente comando per clonare il repository:<pre>git clone https://github.com/aws-samples/crdb-cluster-eks-terraform.git</pre> | DevOps ingegnere, Git | 
| Aggiorna le variabili Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps ingegnere, Terraform | 

### Implementa le risorse
<a name="deploy-the-resources"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Implementa l'infrastruttura. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps ingegnere, Terraform | 

### Verifica della distribuzione
<a name="verify-the-deployment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Verifica la creazione di risorse. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps ingegnere | 
| (Facoltativo) Scalabilità verso l'alto o verso il basso. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps ingegnere, Terraform | 

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


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Eliminare l'infrastruttura. | La scalabilità dei nodi `0` ridurrà i costi di elaborazione. Tuttavia, continueranno a essere addebitati costi per i volumi Amazon EBS persistenti creati da questo modulo. Per eliminare i costi di archiviazione, segui questi passaggi per eliminare tutti i volumi:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | Terraform | 

## risoluzione dei problemi
<a name="deploy-cockroachdb-on-eks-using-terraform-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| Errore durante la convalida delle credenziali del provider | Quando esegui il `destroy` comando `apply` o il comando Terraform, potresti riscontrare il seguente errore:`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.`Questo errore è causato dalla scadenza del token di sicurezza per le credenziali utilizzate nella configurazione del computer locale. Per istruzioni su come risolvere l'errore, consulta [Impostare e visualizzare le impostazioni di configurazione](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods) nella AWS CLI documentazione. | 
| I pod di CockroachDB sono in sospeso | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | 

## Risorse correlate
<a name="deploy-cockroachdb-on-eks-using-terraform-resources"></a>
+ [Distribuisci CockroachDB in un singolo cluster Kubernetes](https://www.cockroachlabs.com/docs/dev/deploy-cockroachdb-with-kubernetes.html) (documentazione CockroachDB)
+ [Orchestra CockroachDB su più cluster Kubernetes (documentazione CockroachDB)](https://www.cockroachlabs.com/docs/dev/orchestrate-cockroachdb-with-kubernetes-multi-cluster.html)
+ [AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (documentazione Terraform)

## Allegati
<a name="attachments-e22d81ab-b85c-4709-8579-4c9cdb4afdb6"></a>

[Per accedere a contenuti aggiuntivi associati a questo documento, decomprimi il seguente file: attachment.zip](samples/p-attach/e22d81ab-b85c-4709-8579-4c9cdb4afdb6/attachments/attachment.zip)