

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

# Siapkan penskalaan otomatis berbasis peristiwa di Amazon EKS dengan menggunakan Amazon EKS Pod Identity dan KEDA
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda"></a>

*Dipen Desai, Abhay Diwan, Kamal Joshi, dan Mahendra Revanasiddappa, Amazon Web Services*

## Ringkasan
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-summary"></a>

Platform orkestrasi, seperti [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) EKS), telah menyederhanakan pengelolaan siklus hidup aplikasi berbasis container. Ini membantu organisasi fokus pada membangun, mengamankan, mengoperasikan, dan memelihara aplikasi berbasis kontainer. Karena penerapan berbasis peristiwa menjadi lebih umum, organisasi lebih sering menskalakan penerapan Kubernetes berdasarkan berbagai sumber peristiwa. Metode ini, dikombinasikan dengan auto scaling, dapat menghasilkan penghematan biaya yang signifikan dengan menyediakan sumber daya komputasi sesuai permintaan dan penskalaan efisien yang disesuaikan dengan logika aplikasi.

[KEDA adalah autoscaler](https://keda.sh/) berbasis peristiwa berbasis Kubernetes. KEDA membantu Anda menskalakan kontainer apa pun di Kubernetes berdasarkan jumlah peristiwa yang perlu diproses. Ini ringan dan terintegrasi dengan cluster Kubernetes apa pun. Ia juga bekerja dengan komponen Kubernetes standar, seperti [Horizontal Pod Autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) (HPA). KEDA juga menawarkan [TriggerAuthentication](https://keda.sh/docs/2.14/concepts/authentication/#re-use-credentials-and-delegate-auth-with-triggerauthentication), yang merupakan fitur yang membantu Anda mendelegasikan otentikasi. Hal ini memungkinkan Anda untuk menjelaskan parameter otentikasi yang terpisah dari ScaledObject dan wadah penyebaran.

AWS menyediakan peran AWS Identity and Access Management (IAM) yang mendukung beragam opsi penerapan Kubernetes, termasuk Amazon EKS, Amazon EKS Anywhere, Layanan OpenShift Red Hat di AWS (ROSA), dan cluster Kubernetes yang dikelola sendiri di Amazon Elastic Compute Cloud (Amazon). EC2 Peran ini menggunakan konstruksi IAM, seperti penyedia identitas OpenID Connect (OIDC) dan kebijakan kepercayaan IAM, untuk beroperasi di berbagai lingkungan tanpa bergantung langsung pada layanan Amazon EKS atau. APIs Untuk informasi selengkapnya, lihat [peran IAM untuk akun layanan](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) di dokumentasi Amazon EKS.

[Amazon EKS Pod Identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html) menyederhanakan proses akun layanan Kubernetes untuk mengambil peran IAM tanpa memerlukan penyedia OIDC. Ini memberikan kemampuan untuk mengelola kredensyal untuk aplikasi Anda. Alih-alih membuat dan mendistribusikan AWS kredensialmu ke container atau menggunakan peran EC2 instans Amazon, kamu mengaitkan peran IAM dengan akun layanan Kubernetes dan mengonfigurasi Pod kamu untuk menggunakan akun layanan. Ini membantu Anda menggunakan peran IAM di beberapa klaster dan menyederhanakan manajemen kebijakan dengan mengaktifkan penggunaan kembali kebijakan izin di seluruh peran IAM.

Dengan menerapkan KEDA dengan Amazon EKS Pod Identity, bisnis dapat mencapai penskalaan otomatis berbasis peristiwa yang efisien dan pengelolaan kredensi yang disederhanakan. Skala aplikasi berdasarkan permintaan, yang mengoptimalkan pemanfaatan sumber daya dan mengurangi biaya.

Pola ini membantu Anda mengintegrasikan Amazon EKS Pod Identity dengan KEDA. Ini menampilkan bagaimana Anda dapat menggunakan akun `keda-operator` layanan dan mendelegasikan otentikasi dengan. `TriggerAuthentication` Ini juga menjelaskan cara mengatur hubungan kepercayaan antara peran IAM untuk operator KEDA dan peran IAM untuk aplikasi. Hubungan kepercayaan ini memungkinkan KEDA untuk memantau pesan dalam antrian acara dan menyesuaikan penskalaan untuk objek Kubernetes tujuan.

## Prasyarat dan batasan
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-prereqs"></a>

**Prasyarat**
+ AWS Command Line Interface [(AWS CLI) versi 2.13.17 atau yang lebih baru, diinstal](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ [Python versi 3.11.5 atau yang lebih baru, diinstal](https://www.python.org/downloads/)
+ AWS SDK untuk Python (Boto3) [versi 1.34.135 atau yang lebih baru, diinstal](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)
+ [Helm versi 3.12.3 atau yang lebih baru, diinstal](https://helm.sh/docs/intro/install/)
+ [kubectl versi 1.25.1 atau yang lebih baru, diinstal](https://kubernetes.io/docs/tasks/tools/)
+ [Docker Engine versi 26.1.1 atau yang lebih baru, diinstal](https://docs.docker.com/engine/install/)
+ [Cluster Amazon EKS versi 1.24 atau yang lebih baru, dibuat](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)
+ [Prasyarat untuk membuat agen Amazon EKS Pod Identity, dipenuhi](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html#pod-id-agent-add-on-create)

**Batasan**
+ Diperlukan bahwa Anda membangun hubungan kepercayaan antara `keda-operator` peran dan `keda-identity` peran. Instruksi disediakan di bagian [Epik](#event-driven-auto-scaling-with-eks-pod-identity-and-keda-epics) dari pola ini.

## Arsitektur
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-architecture"></a>

Dalam pola ini, Anda membuat AWS sumber daya berikut:
+ Repositori **Amazon Elastic Container Registry (Amazon ECR)** - Dalam pola ini, repo ini diberi nama. `keda-pod-identity-registry` Repo pribadi ini digunakan untuk menyimpan gambar Docker dari aplikasi sampel.
+ Antrian **Amazon Simple Queue Service (Amazon SQS)** - Dalam pola ini, antrian ini diberi nama. `event-messages-queue` Antrian bertindak sebagai buffer pesan yang mengumpulkan dan menyimpan pesan masuk. KEDA memantau metrik antrian, seperti jumlah pesan atau panjang antrian, dan secara otomatis menskalakan aplikasi berdasarkan metrik ini.
+ **Peran IAM untuk aplikasi** — Dalam pola ini, peran ini diberi nama`keda-identity`. `keda-operator`Peran mengasumsikan peran ini. Peran ini memungkinkan akses ke antrian Amazon SQS.
+ **Peran IAM untuk operator KEDA** - Dalam pola ini, peran ini diberi nama. `keda-operator` Operator KEDA menggunakan peran ini untuk melakukan panggilan AWS API yang diperlukan. Peran ini memiliki izin untuk mengambil `keda-identity` peran. Karena hubungan kepercayaan antara peran `keda-operator` dan `keda-identity` peran, `keda-operator` peran tersebut memiliki izin Amazon SQS.

Melalui sumber daya kustom `TriggerAuthentication` dan `ScaledObject` Kubernetes, operator menggunakan `keda-identity` peran tersebut untuk terhubung dengan antrean Amazon SQS. Berdasarkan ukuran antrian, KEDA secara otomatis menskalakan penerapan aplikasi. Ini menambahkan 1 pod untuk setiap 5 pesan yang belum dibaca dalam antrian. Dalam konfigurasi default, jika tidak ada pesan yang belum dibaca dalam antrean Amazon SQS, aplikasi akan menurunkan skala ke 0 pod. Operator KEDA memantau antrian pada interval yang Anda tentukan.

 

Gambar berikut menunjukkan cara Anda menggunakan Amazon EKS Pod Identity untuk menyediakan `keda-operator` peran dengan akses aman ke antrean Amazon SQS.

![Menggunakan KEDA dan Amazon EKS Pod Identity untuk secara otomatis menskalakan aplikasi berbasis Kubernetes.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/56f7506d-e8d3-43e5-bec6-42267fedd0ae/images/05bdbd09-9eb8-4c0b-8c0d-efe38aecb683.png)


Diagram menunjukkan alur kerja berikut:

1. Anda menginstal agen Amazon EKS Pod Identity di cluster Amazon EKS.

1. Anda menerapkan operator KEDA di namespace KEDA di cluster Amazon EKS.

1. Anda membuat peran `keda-operator` dan `keda-identity` IAM di target Akun AWS.

1. Anda membangun hubungan kepercayaan antara peran IAM.

1. Anda menyebarkan aplikasi di `security` namespace.

1. Operator KEDA melakukan polling pesan dalam antrian Amazon SQS.

1. KEDA memulai HPA, yang secara otomatis menskalakan aplikasi berdasarkan ukuran antrian.

## Alat
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-tools"></a>

**Layanan AWS**
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [Amazon Simple Queue Service (Amazon Simple Queue Service](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)) menyediakan antrian host yang aman, tahan lama, dan tersedia yang membantu Anda mengintegrasikan dan memisahkan sistem dan komponen perangkat lunak terdistribusi.

**Alat-alat lainnya**
+ [KEDA adalah autoscaler](https://keda.sh/) berbasis peristiwa berbasis Kubernetes.

**Repositori kode**

Kode untuk pola ini tersedia di GitHub [Event-driven auto scaling menggunakan EKS Pod Identity dan](https://github.com/aws-samples/event-driven-autoscaling-using-podidentity-and-keda/tree/main) REPOSITORI KEDA.

## Praktik terbaik
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-best-practices"></a>

Sebaiknya Anda untuk mematuhi praktik terbaik berikut:
+ [Praktik terbaik Amazon EKS](https://docs.aws.amazon.com/eks/latest/best-practices/introduction.html)
+ [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)
+ [Praktik terbaik Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-best-practices.html)

## Epik
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-epics"></a>

### Buat AWS sumber daya
<a name="create-aws-resources"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat peran IAM untuk operator KEDA. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | Administrator AWS | 
| Buat peran IAM untuk aplikasi sampel. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | Administrator AWS | 
| Membuat antrean Amazon SQS. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | AWS Umum | 
| Buat repositori Amazon ECR. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | AWS Umum | 

### Siapkan kluster Amazon EKS
<a name="set-up-the-eks-cluster"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Menerapkan agen Amazon EKS Pod Identity. | Untuk cluster Amazon EKS target, siapkan agen Amazon EKS Pod Identity. Ikuti petunjuk dalam [Mengatur Agen Identitas Pod Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html#pod-id-agent-add-on-create) di dokumentasi Amazon EKS. | AWS DevOps | 
| Menyebarkan KEDA. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps insinyur | 
| Tetapkan peran IAM ke akun layanan Kubernetes. | Ikuti petunjuk dalam [Menetapkan peran IAM ke akun layanan Kubernetes di](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-association.html) dokumentasi Amazon EKS. Gunakan nilai berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | AWS DevOps | 
| Buat namespace. | Masukkan perintah berikut untuk membuat `security` namespace di cluster Amazon EKS target:<pre>kubectl create ns security</pre> | DevOps insinyur | 

### Men-deploy aplikasi sampel
<a name="deploy-the-sample-application"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning file aplikasi. | Masukkan perintah berikut untuk mengkloning [penskalaan auto Event-driven menggunakan EKS Pod Identity dan repositori](https://github.com/aws-samples/event-driven-autoscaling-using-podidentity-and-keda/tree/main) KEDA dari: GitHub<pre>git clone https://github.com/aws-samples/event-driven-autoscaling-using-podidentity-and-keda.git</pre> | DevOps insinyur | 
| membuat gambar Docker. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps insinyur | 
| Dorong gambar Docker ke Amazon ECR. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html)**Anda dapat menemukan perintah push dengan menavigasi ke halaman repositori Amazon ECR dan kemudian memilih perintah View push.** | DevOps insinyur | 
| Deploy aplikasi sampel. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps insinyur | 
| Tetapkan peran IAM ke akun layanan aplikasi. | Lakukan salah satu hal berikut untuk mengaitkan peran `keda-identity` IAM dengan akun layanan untuk aplikasi sampel:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps insinyur | 
| Menyebarkan `ScaledObject` dan`TriggerAuthentication`. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps insinyur | 

### Uji penskalaan otomatis
<a name="test-auto-scaling"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kirim pesan ke antrian Amazon SQS. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps insinyur | 
| Pantau pod aplikasi. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps insinyur | 

## Pemecahan masalah
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Operator KEDA tidak dapat menskalakan aplikasi. | Masukkan perintah berikut untuk memeriksa log peran `keda-operator` IAM:<pre>kubectl logs -n keda -l app=keda-operator -c keda-operator</pre><br /> <br />Jika ada kode `HTTP 403` respons, maka aplikasi dan scaler KEDA tidak memiliki izin yang cukup untuk mengakses antrian Amazon SQS. Selesaikan langkah-langkah berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html)<br />Jika ada `Assume-Role` kesalahan, maka peran [IAM node Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) tidak dapat mengambil peran IAM yang ditentukan. `TriggerAuthentication` Selesaikan langkah-langkah berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | 

## Sumber daya terkait
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-resources"></a>
+ [Siapkan Agen Identitas Pod Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html) (dokumentasi Amazon EKS)
+ [Menyebarkan KEDA (dokumentasi](https://keda.sh/docs/2.14/deploy/) KEDA)
+ [ScaledObject spesifikasi](https://keda.sh/docs/2.16/reference/scaledobject-spec/) (dokumentasi KEDA)
+ [Otentikasi dengan TriggerAuthentication](https://keda.sh/docs/2.14/concepts/authentication/) (dokumentasi KEDA)