

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

# Menerapkan resource dan paket Kubernetes menggunakan Amazon EKS dan repositori bagan Helm di Amazon S3
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3"></a>

*Sagar Panigrahi, Amazon Web Services*

## Ringkasan
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-summary"></a>

Pola ini membantu Anda mengelola aplikasi Kubernetes secara efisien, terlepas dari kompleksitasnya. Pola ini mengintegrasikan Helm ke dalam pipeline continuous integration dan continuous delivery (CI/CD) yang ada untuk menyebarkan aplikasi ke dalam klaster Kubernetes. Helm adalah manajer paket Kubernetes yang membantu Anda mengelola aplikasi Kubernetes. Bagan helm membantu mendefinisikan, menginstal, dan meningkatkan aplikasi Kubernetes yang kompleks. Bagan dapat dibuat versi dan disimpan di repositori Helm, yang meningkatkan mean time to restore (MTTR) selama pemadaman. 

Pola ini menggunakan Amazon Elastic Kubernetes Service (Amazon EKS) untuk klaster Kubernetes. Ini menggunakan Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) sebagai repositori bagan Helm, sehingga bagan dapat dikelola dan diakses secara terpusat oleh pengembang di seluruh organisasi.

## Prasyarat dan batasan
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-prereqs"></a>

**Prasyarat**
+ Akun Amazon Web Services (AWS) aktif dengan virtual private cloud (VPC)
+ Klaster Amazon EKS 
+ Node pekerja disiapkan dalam klaster Amazon EKS dan siap menerima beban kerja
+ Kubectl untuk mengonfigurasi file Amazon EKS kubeconfig untuk cluster target di mesin klien
+ Akses AWS Identity and Access Management (IAM) untuk membuat bucket S3
+ Akses IAM (terprogram atau peran) ke Amazon S3 dari mesin klien
+ Manajemen kode sumber dan CI/CD pipa

**Batasan**
+ Tidak ada dukungan saat ini untuk meningkatkan, menghapus, atau mengelola definisi sumber daya khusus ()CRDs.
+ Jika Anda menggunakan sumber daya yang mengacu pada CRD, CRD harus diinstal secara terpisah (di luar bagan).

**Versi produk**
+ Helm v3.6.3

## Arsitektur
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-architecture"></a>

**Tumpukan teknologi target**
+ Amazon EKS
+ Amazon VPC
+ Amazon S3
+ Manajemen kode sumber
+ Helm
+ Kubectl

**Arsitektur target**

![\[Client Helm dan Kubectl menerapkan repo bagan Helm di Amazon S3 untuk cluster Amazon EKS.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/d3f993e6-4d96-4cb9-a075-c4debe431fd7/images/2f09f7bb-440a-4c4b-b29f-08d136d1ada4.png)


 

**Otomatisasi dan skala**
+ AWS CloudFormation dapat digunakan untuk mengotomatiskan pembuatan infrastruktur. Untuk informasi selengkapnya, lihat [Membuat resource Amazon EKS dengan AWS CloudFormation](https://docs.aws.amazon.com/eks/latest/userguide/creating-resources-with-cloudformation.html) di dokumentasi Amazon EKS.
+ Helm akan dimasukkan ke dalam alat CI/CD otomatisasi Anda yang ada untuk mengotomatiskan pengemasan dan pembuatan versi bagan Helm (di luar cakupan pola ini).
+ GitVersion atau nomor build Jenkins dapat digunakan untuk mengotomatiskan pembuatan versi bagan.

## Alat
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-tools"></a>

**Alat**
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) — Amazon Elastic Kubernetes Service (Amazon EKS) adalah layanan terkelola untuk menjalankan Kubernetes di AWS tanpa perlu berdiri atau memelihara pesawat kontrol Kubernetes Anda sendiri. Kubernetes adalah sebuah sistem sumber terbuka untuk melakukan otomatisasi terhadap deployment, penskalaan, dan pengelolaan aplikasi terkontainer.
+ [Helm](https://helm.sh/docs/) - Helm adalah manajer paket untuk Kubernetes yang membantu Anda menginstal dan mengelola aplikasi di klaster Kubernetes Anda.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) - Amazon Simple Storage Service (Amazon S3) Simple Storage Service adalah penyimpanan untuk internet. Anda dapat menggunakan Amazon S3 untuk menyimpan dan mengambil data sebanyak apa pun kapan pun, dari mana pun di web.
+ [Kubectl](https://kubernetes.io/docs/reference/kubectl/overview/) — Kubectl adalah utilitas baris perintah untuk menjalankan perintah terhadap klaster Kubernetes.

**Kode**

Kode contoh terlampir.

## Epik
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-epics"></a>

### Konfigurasikan dan inisialisasi Helm
<a name="configure-and-initialize-helm"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Instal klien Helm. | Untuk mengunduh dan menginstal klien Helm di sistem lokal Anda, gunakan perintah berikut. <pre>sudo curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash</pre> | DevOps insinyur | 
| Validasi instalasi Helm. | Untuk memvalidasi bahwa Helm dapat berkomunikasi dengan server API Kubernetes di dalam klaster Amazon EKS, jalankan. `helm version` | DevOps insinyur | 

### Membuat dan menginstal bagan Helm di kluster Amazon EKS
<a name="create-and-install-a-helm-chart-in-the-amazon-eks-cluster"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat bagan Helm untuk NGINX. | Untuk membuat bagan helm bernama `my-nginx` pada mesin klien, jalankan`helm create my-nginx`. | DevOps insinyur | 
| Tinjau struktur bagan. | Untuk meninjau struktur bagan, jalankan perintah pohon`tree my-nginx/`. | DevOps insinyur | 
| Nonaktifkan pembuatan akun layanan di bagan. | Di`values.yaml`, di bawah `serviceAccount` bagian, atur `create` kunci ke`false`. Ini dimatikan karena tidak ada persyaratan untuk membuat akun layanan untuk pola ini. | DevOps insinyur | 
| Validasi (lint) bagan yang dimodifikasi untuk kesalahan sintaksis. | Untuk memvalidasi bagan untuk kesalahan sintaksis apa pun sebelum menginstalnya di cluster target, jalankan. `helm lint my-nginx/` | DevOps insinyur | 
| Instal bagan untuk menerapkan sumber daya Kubernetes. | Untuk menjalankan instalasi bagan Helm, gunakan perintah berikut. <pre>helm install --name my-nginx-release --debug my-nginx/ --namespace helm-space </pre>`debug`Bendera opsional menampilkan semua pesan debug selama penginstalan. `namespace`Bendera menentukan namespace di mana bagian sumber daya dari bagan ini akan dibuat. | DevOps insinyur | 
| Tinjau sumber daya di cluster Amazon EKS. | Untuk meninjau sumber daya yang dibuat sebagai bagian dari bagan Helm di `helm-space` namespace, gunakan perintah berikut. <pre>kubectl get all -n helm-space</pre> | DevOps insinyur | 

### Kembalikan ke versi aplikasi Kubernetes sebelumnya
<a name="roll-back-to-a-previous-version-of-a-kubernetes-application"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Ubah dan tingkatkan rilis. | Untuk memodifikasi bagan, di`values.yaml`, ubah `replicaCount` nilainya menjadi`2`. Kemudian tingkatkan rilis yang sudah diinstal dengan menjalankan perintah berikut.<pre>helm upgrade my-nginx-release my-nginx/ --namespace helm-space</pre> | DevOps insinyur | 
| Tinjau sejarah rilis Helm. | Untuk membuat daftar semua revisi untuk rilis tertentu yang telah diinstal menggunakan Helm, jalankan perintah berikut. <pre>helm history my-nginx-release</pre> | DevOps insinyur | 
| Tinjau detail untuk revisi tertentu. | Sebelum beralih atau memutar kembali ke versi kerja, dan untuk lapisan validasi tambahan sebelum menginstal revisi, lihat nilai mana yang diteruskan ke setiap revisi dengan menggunakan perintah berikut.<pre>helm get --revision=2 my-nginx-release</pre> | DevOps insinyur | 
| Gulung kembali ke versi sebelumnya. | Untuk memutar kembali ke revisi sebelumnya, gunakan perintah berikut. <pre>helm rollback my-nginx-release 1 </pre>Contoh ini bergulir kembali ke nomor revisi 1. | DevOps insinyur | 

### Inisialisasi bucket S3 sebagai repositori Helm
<a name="initialize-an-s3-bucket-as-a-helm-repository"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat bucket S3 untuk bagan Helm. | Buat bucket S3 yang unik. Di ember, buat folder bernama`charts`. Contoh dalam pola ini digunakan `s3://my-helm-charts/charts` sebagai repositori grafik target. | Administrator awan | 
| Instal plugin Helm untuk Amazon S3. | Untuk menginstal plugin helm-s3 di mesin klien Anda, gunakan perintah berikut. <pre>helm plugin install https://github.com/hypnoglow/helm-s3.git --version 0.10.0</pre>Catatan: Dukungan Helm V3 tersedia dengan plugin versi 0.9.0 dan di atas. | DevOps insinyur | 
| Inisialisasi repositori Amazon S3 Helm.  | Untuk menginisialisasi folder target sebagai repositori Helm, gunakan perintah berikut. <pre>helm S3 init s3://my-helm-charts/charts </pre>Perintah membuat `index.yaml` file di target untuk melacak semua informasi bagan yang disimpan di lokasi itu. | DevOps insinyur | 
| Tambahkan repositori Amazon S3 ke Helm. | Untuk menambahkan repositori di mesin klien, gunakan perintah berikut.<pre>helm repo add my-helm-charts s3://my-helm-charts/charts </pre>Perintah ini menambahkan alias ke repositori target di mesin klien Helm. | DevOps insinyur | 
| Tinjau daftar repositori. | Untuk melihat daftar repositori di mesin klien Helm, jalankan. `helm repo list` | DevOps insinyur | 

### Package and store chart di repositori Amazon S3 Helm
<a name="package-and-store-charts-in-the-amazon-s3-helm-repository"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Package grafik. | Untuk mengemas `my-nginx` bagan yang Anda buat, jalankan`helm package ./my-nginx/`. Perintah mengemas semua isi folder `my-nginx` bagan ke dalam file arsip, yang diberi nama menggunakan nomor versi yang disebutkan dalam `Chart.yaml` file. | DevOps insinyur | 
| Simpan paket di repositori Amazon S3 Helm. | Untuk mengunggah paket ke repositori Helm di Amazon S3, jalankan perintah berikut, menggunakan nama file yang benar. `.tgz`<pre>helm s3 push ./my-nginx-0.1.0.tgz my-helm-charts</pre> | DevOps insinyur | 
| Cari bagan Helm. | Untuk mengonfirmasi bahwa bagan muncul baik secara lokal maupun di repositori Helm di Amazon S3, jalankan perintah berikut.<pre>helm search repo my-nginx</pre> | DevOps insinyur | 

### Ubah, versi, dan paket bagan
<a name="modify-version-and-package-a-chart"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Memodifikasi dan mengemas bagan. | Dalam`values.yaml`, atur `replicaCount` nilainya ke`1`. Kemudian kemas bagan dengan menjalankan`helm package ./my-nginx/`, kali ini mengubah versi `Chart.yaml` menjadi`0.1.1`. Pembuatan versi idealnya diperbarui melalui otomatisasi menggunakan alat seperti GitVersion atau Jenkins membangun nomor dalam pipeline. CI/CD Mengotomatiskan nomor versi berada di luar cakupan pola ini. | DevOps insinyur | 
| Dorong versi baru ke repositori Helm di Amazon S3. | Untuk mendorong paket baru dengan versi 0.1.1 ke repositori `my-helm-charts` Helm di Amazon S3, jalankan perintah berikut.<pre>helm s3 push ./my-nginx-0.1.1.tgz my-helm-charts</pre> | DevOps insinyur | 

### Cari dan instal bagan dari repositori Amazon S3 Helm
<a name="search-for-and-install-a-chart-from-the-amazon-s3-helm-repository"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Cari semua versi bagan my-nginx. | Untuk melihat semua versi bagan yang tersedia, jalankan perintah berikut dengan `--versions` bendera.<pre>helm search repo my-nginx --versions</pre>Tanpa tanda, Helm secara default menampilkan versi bagan terbaru yang diunggah. | DevOps insinyur | 
| Instal bagan dari repositori Amazon S3 Helm. | Hasil pencarian dari tugas sebelumnya menunjukkan beberapa versi `my-nginx` bagan. Untuk menginstal versi baru (0.1.1) dari repositori Amazon S3 Helm, gunakan perintah berikut.<pre>helm upgrade my-nginx-release my-helm-charts/my-nginx --version 0.1.1 --namespace helm-space</pre> | DevOps insinyur | 

## Sumber daya terkait
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-resources"></a>
+ [Dokumentasi HELM](https://helm.sh/docs/)
+ [plugin helm-s3 (Lisensi MIT)](https://github.com/hypnoglow/helm-s3.git)
+ [Biner klien HELM](https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3)
+ [Dokumentasi Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)

## Lampiran
<a name="attachments-d3f993e6-4d96-4cb9-a075-c4debe431fd7"></a>

[Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip](samples/p-attach/d3f993e6-4d96-4cb9-a075-c4debe431fd7/attachments/attachment.zip)