

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menerapkan cluster CockroachDB di Amazon EKS dengan menggunakan Terraform
<a name="deploy-cockroachdb-on-eks-using-terraform"></a>

*Sandip Gangapadhyay dan Kalyan Senthilnathan, Amazon Web Services*

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

[Pola ini menyediakan modul HashiCorp Terraform untuk menerapkan cluster [CockroachDB multi-node di Amazon Elastic Kubernetes](https://www.cockroachlabs.com/docs/stable/) Service (Amazon EKS) dengan menggunakan operator CockroachDB.](https://www.cockroachlabs.com/docs/v25.4/cockroachdb-operator-overview) CockroachDB adalah database SQL terdistribusi yang menyediakan sharding horizontal otomatis, ketersediaan tinggi, dan kinerja yang konsisten di seluruh cluster yang didistribusikan secara geografis. Pola ini menggunakan Amazon EKS sebagai platform Kubernetes yang dikelola dan mengimplementasikan [cert-manager](https://cert-manager.io/docs/) untuk komunikasi node yang diamankan TLS. Ini juga menggunakan [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) untuk distribusi lalu lintas dan menciptakan CockroachDB [StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)dengan pod yang secara otomatis mereplikasi data untuk toleransi kesalahan dan kinerja.

**Audiens yang dituju**

Untuk menerapkan pola ini, kami sarankan Anda terbiasa dengan hal-hal berikut:
+ HashiCorp Konsep dan infrastruktur Terraform sebagai praktik kode (IAc)
+ Layanan AWS, khususnya Amazon EKS
+ Dasar-dasar Kubernetes, termasuk, operator StatefulSets, dan konfigurasi layanan
+ Database SQL terdistribusi
+ Konsep keamanan, seperti manajemen sertifikat TLS.
+ DevOps praktik, CI/CD alur kerja, dan otomatisasi infrastruktur

## Prasyarat dan batasan
<a name="deploy-cockroachdb-on-eks-using-terraform-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS
+ Izin untuk menyebarkan sumber daya di klaster Amazon EKS
+ Cluster Amazon EKS versi v1.23 atau yang lebih baru, dengan node berlabel `node=cockroachdb`
+ [Amazon Elastic Block Store Container Storage Interface (CSI) Driver](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) versi 1.19.0 atau yang lebih baru, diinstal di cluster Amazon EKS
+ [Terraform CLI versi 1.0.0 atau yang lebih baru, diinstal](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ [kubectl, diinstal](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)
+ Git, [diinstal](https://git-scm.com/install/)
+ AWS Command Line Interface [(AWS CLI) versi 2.9.18 atau yang lebih baru, [diinstal](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dan dikonfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**Batasan**
+ Operator CockroachDB Kubernetes tidak mendukung beberapa klaster Kubernetes untuk penerapan Multi-region. [Untuk batasan lebih lanjut, lihat [Orchestrate CockroachDB Across Multiple Kubernetes Clusters (dokumentasi CockroachDB) dan CockroachDB Kubernetes Operator](https://www.cockroachlabs.com/docs/stable/orchestrate-cockroachdb-with-kubernetes-multi-cluster.html#eks) ().](https://github.com/cockroachdb/cockroach-operator) GitHub
+ Pemangkasan otomatis klaim volume persisten (PVCs) saat ini dinonaktifkan secara default. Ini berarti bahwa setelah menonaktifkan dan menghapus node, operator tidak akan menghapus volume persisten yang dipasang ke podnya. Untuk informasi lebih lanjut, lihat [Pemangkasan PVC otomatis dalam dokumentasi](https://www.cockroachlabs.com/docs/stable/scale-cockroachdb-kubernetes.html#automatic-pvc-pruning) CockroachDB.

**Versi produk**
+ CockroachDB versi 22.2.2

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

**Arsitektur target**

Diagram berikut menunjukkan penyebaran CockroachDB yang sangat tersedia di tiga AWS Availability Zone dalam virtual private cloud (VPC). Pod CockroachDB dikelola melalui Amazon EKS. Arsitektur menggambarkan bagaimana pengguna mengakses database melalui Network Load Balancer, yang mendistribusikan lalu lintas ke pod CockroachDB. Pod berjalan di instans Amazon Elastic Compute Cloud (Amazon EC2) di setiap Availability Zone, yang memberikan ketahanan dan toleransi kesalahan.

![Penyebaran CockroachDB yang sangat tersedia di tiga AWS Availability Zone dalam VPC.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/e22d81ab-b85c-4709-8579-4c9cdb4afdb6/images/4b163abf-6fdc-4310-840c-bda621ab25dd.png)


**Sumber daya dibuat**

Menerapkan modul Terraform yang digunakan dalam pola ini menciptakan sumber daya berikut:

1. **Network Load Balancer** - Sumber daya ini berfungsi sebagai titik masuk untuk permintaan klien dan mendistribusikan lalu lintas secara merata di seluruh instance CockroachDB.

1. **CockroachDB StatefulSet** — StatefulSet Mendefinisikan keadaan yang diinginkan dari penyebaran CockroachDB dalam cluster Amazon EKS. Ini mengelola penyebaran, penskalaan, dan pembaruan pod CockroachDB yang dipesan.

1. Pod **CockroachDB — Pod** ini adalah contoh dari CockroachDB yang berjalan sebagai kontainer di dalam pod Kubernetes. Pod ini menyimpan dan mengelola data di seluruh cluster terdistribusi.

1. **Database CockroachDB** — Ini adalah database terdistribusi yang dikelola oleh CockroachDB, mencakup beberapa pod. Ini mereplikasi data untuk ketersediaan tinggi, toleransi kesalahan, dan kinerja.

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

**Layanan AWS**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.

**Alat-alat lainnya**
+ [HashiCorp Terraform](https://www.terraform.io/docs) adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/) adalah antarmuka baris perintah yang membantu Anda menjalankan perintah terhadap klaster Kubernetes.

**Repositori kode**

Kode untuk pola ini tersedia di [cluster GitHub Deploy a CockroachDB di Amazon EKS menggunakan repositori Terraform](https://github.com/aws-samples/crdb-cluster-eks-terraform). Repositori kode berisi file dan folder berikut untuk Terraform:
+ `modules`folder - Folder ini berisi modul Terraform untuk CockroachDB
+ `main`folder - Folder ini berisi modul root yang memanggil modul anak CockroachDB untuk membuat cluster database CockroachDB.

## Praktik terbaik
<a name="deploy-cockroachdb-on-eks-using-terraform-best-practices"></a>
+ Jangan mengurangi hingga kurang dari tiga node. Ini dianggap sebagai anti-pola pada CockroachDB dan dapat menyebabkan kesalahan. Untuk informasi selengkapnya, lihat [Penskalaan Cluster dalam dokumentasi](https://www.cockroachlabs.com/docs/stable/scale-cockroachdb-kubernetes.html) CockroachDB.
+ Terapkan penskalaan otomatis Amazon EKS dengan menggunakan Karpernter atau Cluster Autoscaler. Hal ini memungkinkan cluster CockroachDB untuk skala horizontal dan node baru secara otomatis. Untuk informasi selengkapnya, lihat [Komputasi klaster skala dengan Karpenter dan Cluster Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html) di dokumentasi Amazon EKS.
**catatan**  
Karena aturan penjadwalan `podAntiAffinity` Kubernetes, hanya satu pod CockroachDB yang dapat dijadwalkan dalam satu node Amazon EKS.
+ Untuk praktik terbaik keamanan Amazon EKS, lihat [Praktik Terbaik untuk Keamanan](https://docs.aws.amazon.com/eks/latest/best-practices/security.html) dalam dokumentasi Amazon EKS.
+ Untuk praktik terbaik kinerja SQL untuk CockroachDB, lihat Praktik [Terbaik Kinerja SQL](https://www.cockroachlabs.com/docs/stable/performance-best-practices-overview.html) dalam dokumentasi CockroachDB.
+ Untuk informasi selengkapnya tentang menyiapkan backend jarak jauh Amazon Simple Storage Service (Amazon S3) untuk file status Terraform, lihat [Amazon](https://developer.hashicorp.com/terraform/language/backend/s3) S3 di dokumentasi Terraform.

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

### Siapkan lingkungan Anda
<a name="set-up-your-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning repositori kode. | Masukkan perintah berikut untuk mengkloning repositori:<pre>git clone https://github.com/aws-samples/crdb-cluster-eks-terraform.git</pre> | DevOps insinyur, Git | 
| Perbarui variabel Terraform. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps insinyur, Terraform | 

### Menyebarkan sumber daya
<a name="deploy-the-resources"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Menyebarkan infrastruktur. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps insinyur, Terraform | 

### Verifikasi penyebaran
<a name="verify-the-deployment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Verifikasi pembuatan sumber daya. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps insinyur | 
| (Opsional) Skala naik atau turun. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps insinyur, Terraform | 

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


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Hapus infrastruktur. | Menskalakan node ke `0` akan mengurangi biaya komputasi. Namun, Anda masih akan dikenakan biaya untuk volume Amazon EBS persisten yang dibuat oleh modul ini. Untuk menghilangkan biaya penyimpanan, ikuti langkah-langkah berikut untuk menghapus semua volume:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | Terraform | 

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


| Isu | Solusi | 
| --- | --- | 
| Kesalahan memvalidasi kredensyal penyedia | Saat Anda menjalankan Terraform `apply` atau `destroy` perintah, Anda mungkin mengalami kesalahan berikut:<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 />Kesalahan ini disebabkan oleh kedaluwarsa token keamanan untuk kredensil yang digunakan dalam konfigurasi mesin lokal Anda. Untuk petunjuk tentang cara mengatasi kesalahan, lihat [Mengatur dan melihat pengaturan konfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods) dalam AWS CLI dokumentasi. | 
| Pod CockroachDB dalam status tertunda | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | 

## Sumber daya terkait
<a name="deploy-cockroachdb-on-eks-using-terraform-resources"></a>
+ [Terapkan CockroachDB dalam Cluster Kubernetes Tunggal (dokumentasi](https://www.cockroachlabs.com/docs/dev/deploy-cockroachdb-with-kubernetes.html) CockroachDB)
+ [Mengatur CockroachDB di Beberapa Kluster Kubernetes (dokumentasi CockroachDB](https://www.cockroachlabs.com/docs/dev/orchestrate-cockroachdb-with-kubernetes-multi-cluster.html))
+ [AWS Penyedia](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (dokumentasi Terraform)

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

[Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip](samples/p-attach/e22d81ab-b85c-4709-8579-4c9cdb4afdb6/attachments/attachment.zip)