

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Stellen Sie mithilfe von Terraform einen CockroachDB-Cluster in Amazon EKS bereit
<a name="deploy-cockroachdb-on-eks-using-terraform"></a>

*Sandip Gangapadhyay und Kalyan Senthilnathan, Amazon Web Services*

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

[Dieses Muster bietet ein HashiCorp Terraform-Modul für die Bereitstellung eines [CockroachDB-Clusters mit mehreren Knoten auf Amazon Elastic Kubernetes Service (Amazon EKS) mithilfe des CockroachDB-Operators](https://www.cockroachlabs.com/docs/stable/).](https://www.cockroachlabs.com/docs/v25.4/cockroachdb-operator-overview) CockroachDB ist eine verteilte SQL-Datenbank, die automatisches horizontales Sharding, hohe Verfügbarkeit und konsistente Leistung über geografisch verteilte Cluster hinweg bietet. Dieses Muster verwendet Amazon EKS als verwaltete Kubernetes-Plattform und implementiert [Cert-Manager](https://cert-manager.io/docs/) für TLS-gesicherte Knotenkommunikation. Es verwendet auch einen [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) für die Verteilung des Datenverkehrs und erstellt CockroachDB [StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)mit Pods, die Daten aus Gründen der Fehlertoleranz und Leistung automatisch replizieren.

**Zielpublikum**

Um dieses Muster zu implementieren, empfehlen wir, dass Sie mit den folgenden Informationen vertraut sind:
+ HashiCorp Terraform-Konzepte und IaC-Praktiken (Infrastructure-as-Code)
+ AWS-Services, insbesondere Amazon EKS
+ Grundlagen von Kubernetes StatefulSets, einschließlich Betreiber und Servicekonfigurationen
+ Verteilte SQL-Datenbanken
+ Sicherheitskonzepte wie die Verwaltung von TLS-Zertifikaten.
+ DevOps Praktiken, CI/CD Workflows und Infrastrukturautomatisierung

## Voraussetzungen und Einschränkungen
<a name="deploy-cockroachdb-on-eks-using-terraform-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Berechtigungen zur Bereitstellung von Ressourcen in einem Amazon EKS-Cluster
+ Ein Amazon EKS-Cluster, Version v1.23 oder höher, mit beschrifteten Knoten `node=cockroachdb`
+ [Amazon Elastic Block Store Container Storage Interface (CSI) -Treiberversion](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) 1.19.0 oder höher, installiert im Amazon EKS-Cluster
+ [Terraform CLI Version 1.0.0 oder höher, installiert](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ [kubectl, installiert](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)
+ Git, [installiert](https://git-scm.com/install/)
+ AWS Command Line Interface [(AWS CLI) Version 2.9.18 oder höher, [installiert und konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**Einschränkungen**
+ Der CockroachDB-Kubernetes-Operator unterstützt nicht mehrere Kubernetes-Cluster für Bereitstellungen in mehreren Regionen. [Weitere Einschränkungen finden Sie unter [CockroachDB über mehrere Kubernetes-Cluster orchestrieren (CockroachDB-Dokumentation) und CockroachDB Kubernetes Operator ()](https://www.cockroachlabs.com/docs/stable/orchestrate-cockroachdb-with-kubernetes-multi-cluster.html#eks).](https://github.com/cockroachdb/cockroach-operator) GitHub
+ Das automatische Löschen persistenter Volumenansprüche () ist derzeit standardmäßig deaktiviert. PVCs Das bedeutet, dass der Betreiber nach der Außerbetriebnahme und Entfernung eines Nodes das persistente Volume, das auf seinem Pod installiert war, nicht entfernt. Weitere Informationen finden Sie unter [Automatisches Beschneiden von PVC](https://www.cockroachlabs.com/docs/stable/scale-cockroachdb-kubernetes.html#automatic-pvc-pruning) in der CockroachDB-Dokumentation.

**Produktversionen**
+ CockroachDB Version 22.2.2

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

**Zielarchitektur**

Das folgende Diagramm zeigt eine hochverfügbare CockroachDB-Bereitstellung in drei AWS Availability Zones innerhalb einer Virtual Private Cloud (VPC). Die CockroachDB-Pods werden über Amazon EKS verwaltet. Die Architektur veranschaulicht, wie Benutzer über einen Network Load Balancer auf die Datenbank zugreifen, der den Datenverkehr auf die CockroachDB-Pods verteilt. Die Pods werden auf Amazon Elastic Compute Cloud (Amazon EC2) -Instances in jeder Availability Zone ausgeführt, was Stabilität und Fehlertoleranz bietet.

![Eine hochverfügbare CockroachDB-Bereitstellung in drei AWS-Verfügbarkeitszonen innerhalb einer VPC.](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e22d81ab-b85c-4709-8579-4c9cdb4afdb6/images/4b163abf-6fdc-4310-840c-bda621ab25dd.png)


**Ressourcen erstellt**

Durch die Bereitstellung des in diesem Muster verwendeten Terraform-Moduls werden die folgenden Ressourcen erstellt:

1. **Network Load Balancer** — Diese Ressource dient als Einstiegspunkt für Client-Anfragen und verteilt den Verkehr gleichmäßig auf die CockroachDB-Instanzen.

1. **CockroachDB StatefulSet** — StatefulSet Definiert den gewünschten Status der CockroachDB-Bereitstellung innerhalb des Amazon EKS-Clusters. Es verwaltet die geordnete Bereitstellung, Skalierung und Aktualisierung von CockroachDB-Pods.

1. **CockroachDB-Pods — Diese Pods sind Instanzen von CockroachDB**, die als Container innerhalb von Kubernetes-Pods ausgeführt werden. Diese Pods speichern und verwalten die Daten im gesamten verteilten Cluster.

1. **CockroachDB-Datenbank** — Dies ist die verteilte Datenbank, die von CockroachDB verwaltet wird und sich über mehrere Pods erstreckt. Sie repliziert Daten für hohe Verfügbarkeit, Fehlertoleranz und Leistung.

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

**AWS-Services**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.

**Andere Tools**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist ein Infrastructure-as-Code-Tool (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/) ist eine Befehlszeilenschnittstelle, mit der Sie Befehle für Kubernetes-Cluster ausführen können.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [Deploy a CockroachDB in Amazon EKS using](https://github.com/aws-samples/crdb-cluster-eks-terraform) Terraform verfügbar. Das Code-Repository enthält die folgenden Dateien und Ordner für Terraform:
+ `modules`Ordner — Dieser Ordner enthält das Terraform-Modul für CockroachDB
+ `main`Ordner — Dieser Ordner enthält das Root-Modul, das das untergeordnete CockroachDB-Modul aufruft, um den CockroachDB-Datenbankcluster zu erstellen.

## Best Practices
<a name="deploy-cockroachdb-on-eks-using-terraform-best-practices"></a>
+ Skalieren Sie nicht auf weniger als drei Knoten herunter. Dies wird auf CockroachDB als Anti-Pattern angesehen und kann zu Fehlern führen. Weitere Informationen finden Sie unter [Cluster Scaling](https://www.cockroachlabs.com/docs/stable/scale-cockroachdb-kubernetes.html) in der CockroachDB-Dokumentation.
+ Implementieren Sie Amazon EKS-Autoscaling mithilfe von Karpernter oder Cluster Autoscaler. Dadurch kann der CockroachDB-Cluster horizontal skaliert und neue Knoten automatisch hinzugefügt werden. Weitere Informationen finden Sie unter [Skalieren von Cluster-Berechnungen mit Karpenter und Cluster Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html) in der Amazon EKS-Dokumentation.
**Anmerkung**  
Aufgrund der `podAntiAffinity` Kubernetes-Planungsregel kann nur ein CockroachDB-Pod in einem Amazon EKS-Knoten geplant werden.
+ Bewährte Sicherheitsmethoden für Amazon EKS finden Sie unter [Bewährte Sicherheitsmethoden](https://docs.aws.amazon.com/eks/latest/best-practices/security.html) in der Amazon EKS-Dokumentation.
+ Bewährte Methoden zur SQL-Leistung für CockroachDB finden Sie unter [Bewährte Methoden zur SQL-Leistung](https://www.cockroachlabs.com/docs/stable/performance-best-practices-overview.html) in der CockroachDB-Dokumentation.
+ Weitere Informationen zur Einrichtung eines Amazon Simple Storage Service (Amazon S3) -Remote-Backends für die Terraform-Statusdatei finden Sie unter [Amazon S3](https://developer.hashicorp.com/terraform/language/backend/s3) in der Terraform-Dokumentation.

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

### So richten Sie Ihre Umgebung ein
<a name="set-up-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Code-Repository. | Geben Sie den folgenden Befehl ein, um das Repository zu klonen:<pre>git clone https://github.com/aws-samples/crdb-cluster-eks-terraform.git</pre> | DevOps Ingenieur, Git | 
| Aktualisieren Sie die Terraform-Variablen. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps Ingenieur, Terraform | 

### Stellen Sie die Ressourcen bereit
<a name="deploy-the-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die Infrastruktur bereit. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps Ingenieur, Terraform | 

### Überprüfen der Bereitstellung
<a name="verify-the-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die Erstellung von Ressourcen. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps Ingenieur | 
| (Optional) Skalieren Sie nach oben oder unten. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps Ingenieur, Terraform | 

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


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie die Infrastruktur. | Durch die Skalierung der Knoten auf `0` werden die Rechenkosten gesenkt. Es fallen jedoch weiterhin Gebühren für die persistenten Amazon EBS-Volumes an, die mit diesem Modul erstellt wurden. Um Speicherkosten zu vermeiden, gehen Sie wie folgt vor, um alle Volumes zu löschen:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | Terraform | 

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


| Problem | Lösung | 
| --- | --- | 
| Fehler beim Überprüfen der Anbieteranmeldedaten | Wenn Sie den Terraform `apply` - oder `destroy` Befehl ausführen, tritt möglicherweise der folgende Fehler auf:<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 />Dieser Fehler wird durch den Ablauf des Sicherheitstokens für die in der Konfiguration Ihres lokalen Computers verwendeten Anmeldeinformationen verursacht. Anweisungen zur Behebung des Fehlers finden Sie in der AWS CLI Dokumentation unter [Konfigurationseinstellungen einrichten und anzeigen](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods). | 
| CockroachDB-Pods befinden sich im Status „Ausstehend“ | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | 

## Zugehörige Ressourcen
<a name="deploy-cockroachdb-on-eks-using-terraform-resources"></a>
+ [Stellen Sie CockroachDB in einem einzigen Kubernetes-Cluster](https://www.cockroachlabs.com/docs/dev/deploy-cockroachdb-with-kubernetes.html) bereit (CockroachDB-Dokumentation)
+ [Orchestrieren](https://www.cockroachlabs.com/docs/dev/orchestrate-cockroachdb-with-kubernetes-multi-cluster.html) Sie CockroachDB über mehrere Kubernetes-Cluster hinweg (CockroachDB-Dokumentation)
+ [AWS Anbieter](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (Terraform-Dokumentation)

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

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/e22d81ab-b85c-4709-8579-4c9cdb4afdb6/attachments/attachment.zip)