

 **Bantu tingkatkan halaman ini** 

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

Untuk berkontribusi pada panduan pengguna ini, pilih **Edit halaman ini pada GitHub** tautan yang terletak di panel kanan setiap halaman.

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

# Rute lalu lintas internet dengan AWS Load Balancer Controller
<a name="aws-load-balancer-controller"></a>

**Tip**  
 [Daftar](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el) untuk lokakarya Amazon EKS mendatang.

 AWS Load Balancer Controller mengelola AWS Elastic Load Balancer untuk klaster Kubernetes. Anda dapat menggunakan controller untuk mengekspos aplikasi cluster Anda ke internet. Pengontrol menyediakan penyeimbang AWS beban yang mengarah ke sumber daya Layanan atau Ingress cluster. Dengan kata lain, controller membuat satu alamat IP atau nama DNS yang menunjuk ke beberapa pod di cluster Anda.

![\[Diagram arsitektur. Ilustrasi lalu lintas yang berasal dari pengguna internet, ke Amazon Load Balancer. Amazon Load Balancer mendistribusikan lalu lintas ke pod di cluster.\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/lbc-overview.png)


Kontroler mengawasi sumber daya Kubernetes Ingress atau Service. Sebagai tanggapan, ini menciptakan sumber daya AWS Elastic Load Balancing yang sesuai. Anda dapat mengonfigurasi perilaku spesifik penyeimbang beban dengan menerapkan anotasi ke sumber daya Kubernetes. Misalnya, Anda dapat melampirkan grup AWS keamanan ke load balancer menggunakan anotasi.

Pengontrol menyediakan sumber daya berikut:

 **Kubernetes `Ingress`**   
LBC membuat [AWS Application Load Balancer (ALB](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)) ketika Anda membuat Kubernetes. `Ingress` [Tinjau anotasi yang dapat Anda terapkan ke sumber daya Ingress.](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/) 

 **Layanan Kubernetes dari tipe `LoadBalancer`**   
LBC membuat [AWS Network Load Balancer (NLB](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)) ketika Anda membuat layanan Kubernetes dari tipe. `LoadBalancer` [Tinjau anotasi yang dapat Anda terapkan ke sumber daya Layanan.](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)   
*Di masa lalu, penyeimbang beban jaringan Kubernetes digunakan sebagai target *misalnya*, tetapi LBC digunakan untuk target IP.* Dengan versi AWS Load Balancer Controller `2.3.0` atau yang lebih baru, Anda dapat membuat NLBs menggunakan salah satu jenis target. Untuk informasi selengkapnya terkait tipe-tipe target NLB, lihat [jenis Target](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#target-type) di Panduan Pengguna untuk Penyeimbang Beban Jaringan.

Kontroler adalah [proyek sumber terbuka](https://github.com/kubernetes-sigs/aws-load-balancer-controller) yang dikelola. GitHub

Sebelum menerapkan controller, kami sarankan Anda meninjau prasyarat dan pertimbangan dalam aplikasi [Route dan lalu lintas HTTP dengan Application Load Balancers dan](alb-ingress.md). [Rute lalu lintas TCP dan UDP dengan Network Load Balancers](network-load-balancing.md) Dalam topik tersebut, Anda akan menerapkan aplikasi sampel yang menyertakan penyeimbang AWS beban.

 **Kubernetes API `Gateway`**   
Dengan versi AWS Load Balancer Controller `2.14.0` atau yang lebih baru, LBC membuat [Application Load AWS Balancer (ALB](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)) ketika Anda membuat Kubernetes. `Gateway` Kubernetes Gateway menstandarisasi lebih banyak konfigurasi daripada Ingress, yang membutuhkan anotasi khusus untuk banyak opsi umum. [Tinjau konfigurasi yang dapat Anda terapkan ke sumber daya Gateway.](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/gateway/gateway/) Untuk informasi selengkapnya tentang `Gateway` API, lihat [Gateway API](https://kubernetes.io/docs/concepts/services-networking/gateway/) di dokumentasi Kubernetes.

## Instal pengontrol
<a name="lbc-overview"></a>

Anda dapat menggunakan salah satu prosedur berikut untuk menginstal AWS Load Balancer Controller:
+ Jika Anda baru mengenal Amazon EKS, kami sarankan Anda menggunakan Helm untuk instalasi karena menyederhanakan instalasi Load AWS Balancer Controller. Untuk informasi selengkapnya, lihat [Instal AWS Load Balancer Controller dengan Helm](lbc-helm.md).
+ Untuk konfigurasi lanjutan, seperti klaster dengan akses jaringan terbatas ke registri kontainer publik, gunakan Kubernetes Manifests. Untuk informasi selengkapnya, lihat [Instal AWS Load Balancer Controller dengan manifes](lbc-manifest.md).

## Migrasi dari versi pengontrol yang tidak digunakan lagi
<a name="lbc-deprecated"></a>
+ Jika Anda telah menginstal versi AWS Load Balancer Controller yang sudah usang, lihat. [Migrasikan aplikasi dari ALB Ingress Controller yang tidak digunakan lagi](lbc-remove.md)
+ Versi usang tidak dapat ditingkatkan. Mereka harus dihapus dan versi AWS Load Balancer Controller saat ini diinstal.
+ Versi usang meliputi:
  +  AWS ALB Ingress Controller untuk Kubernetes (“Ingress Controller”), pendahulu dari Load Balancer Controller. AWS 
  + `0.1.x `Versi apa pun dari AWS Load Balancer Controller

## Penyedia cloud lama
<a name="lbc-legacy"></a>

Kubernetes menyertakan penyedia cloud lama untuk. AWS Penyedia cloud lama mampu menyediakan penyeimbang AWS beban, mirip dengan Load Balancer Controller. AWS Penyedia cloud lama membuat Classic Load Balancer. Jika Anda tidak menginstal AWS Load Balancer Controller, Kubernetes akan secara default menggunakan penyedia cloud lama. Anda harus menginstal AWS Load Balancer Controller dan hindari menggunakan penyedia cloud lama.

**penting**  
Di versi 2.5 dan yang lebih baru, AWS Load Balancer Controller menjadi pengontrol default untuk sumber daya layanan *Kubernetes* dengan `type: LoadBalancer` dan membuat Network Load AWS Balancer (NLB) untuk setiap layanan. Ini dilakukan dengan membuat webhook yang bermutasi untuk layanan, yang menetapkan `spec.loadBalancerClass` bidang `service.k8s.aws/nlb` untuk layanan baru. `type: LoadBalancer` Anda dapat menonaktifkan fitur ini dan kembali menggunakan [Cloud Provider lama](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider) sebagai pengontrol default, dengan menyetel nilai bagan helm ke. `enableServiceMutatorWebhook` `false` Cluster tidak akan menyediakan Classic Load Balancer baru untuk layanan Anda kecuali Anda menonaktifkan fitur ini. Classic Load Balancer yang ada akan terus bekerja.

# Instal AWS Load Balancer Controller dengan Helm
<a name="lbc-helm"></a>

**Tip**  
 [Daftar](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el) untuk lokakarya Amazon EKS mendatang.

**Tip**  
Dengan Amazon EKS Auto Mode, Anda tidak perlu menginstal atau meningkatkan add-on jaringan. Mode Otomatis mencakup jaringan pod dan kemampuan load balancing.  
Untuk informasi selengkapnya, lihat [Mengotomatiskan infrastruktur klaster dengan Mode Otomatis EKS](automode.md).

Topik ini menjelaskan cara menginstal AWS Load Balancer Controller menggunakan Helm, manajer paket untuk Kubernetes, dan. `eksctl` Pengontrol diinstal dengan opsi default. Untuk informasi selengkapnya tentang pengontrol, termasuk detail tentang mengonfigurasinya dengan anotasi, lihat Dokumentasi [AWS Pengontrol Load Balancer aktif](https://kubernetes-sigs.github.io/aws-load-balancer-controller/). GitHub

Pada langkah-langkah berikut, ganti nilai contoh dengan nilai Anda sendiri.

## Prasyarat
<a name="lbc-prereqs"></a>

Sebelum memulai tutorial ini, Anda harus menyelesaikan langkah-langkah berikut:
+ Buat klaster Amazon EKS. Untuk membuatnya, lihat [Memulai dengan Amazon EKS](getting-started.md).
+ Instal [Helm](https://helm.sh/docs/helm/helm_install/) di mesin lokal Anda.
+ [Pastikan bahwa plugin Amazon VPC CNI Anda untuk Kubernetes,`kube-proxy`, dan add-on CoreDNS berada pada versi minimum yang tercantum dalam token akun Layanan.](service-accounts.md#boundserviceaccounttoken-validated-add-on-versions)
+ Pelajari tentang konsep AWS Elastic Load Balancing. Untuk informasi selengkapnya, silakan lihat [Panduan Pengguna Penyeimbang Beban Elastis](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/).
+ [Pelajari tentang [layanan](https://kubernetes.io/docs/concepts/services-networking/service/) Kubernetes dan sumber daya ingress.](https://kubernetes.io/docs/concepts/services-networking/ingress/)

### Pertimbangan-pertimbangan
<a name="lbc-considerations"></a>

Sebelum melanjutkan dengan langkah-langkah konfigurasi di halaman ini, pertimbangkan hal berikut:
+ Kebijakan dan role (`AmazonEKSLoadBalancerControllerRole`) IAM dapat digunakan kembali di beberapa kluster EKS di akun yang sama. AWS 
+ Jika Anda menginstal controller pada cluster yang sama di mana role (`AmazonEKSLoadBalancerControllerRole`) awalnya dibuat, pergi ke [Langkah 2: Instal Load Balancer Controller](#lbc-helm-install) setelah memverifikasi peran ada.
+ Jika Anda menggunakan IAM Roles for Service Accounts (IRSA), IRSA harus disiapkan untuk setiap cluster, dan ARN penyedia OpenID Connect (OIDC) dalam kebijakan kepercayaan peran khusus untuk setiap kluster EKS. Selain itu, jika Anda menginstal pengontrol pada klaster baru dengan yang sudah ada`AmazonEKSLoadBalancerControllerRole`, perbarui kebijakan kepercayaan peran untuk menyertakan penyedia OIDC klaster baru dan buat akun layanan baru dengan anotasi peran yang sesuai. Untuk menentukan apakah Anda sudah memiliki penyedia OIDC, atau membuatnya, lihat. [Buat penyedia IAM OIDC untuk klaster Anda](enable-iam-roles-for-service-accounts.md)

## Langkah 1: Buat Peran IAM menggunakan `eksctl`
<a name="lbc-helm-iam"></a>

Langkah-langkah berikut mengacu pada versi rilis AWS Load Balancer Controller **v2.14.1**. Untuk informasi selengkapnya tentang semua rilis, lihat [Halaman Rilis AWS Load Balancer Controller](https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/) di. GitHub

1. Unduh kebijakan IAM untuk AWS Load Balancer Controller yang memungkinkannya melakukan panggilan atas nama AWS APIs Anda.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy.json
   ```
   + Jika Anda adalah AWS partisi non-standar, seperti Pemerintah atau wilayah Tiongkok, [tinjau kebijakan tersebut GitHub dan unduh](https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/docs/install) kebijakan yang sesuai untuk wilayah Anda.

1. Buat kebijakan IAM menggunakan kebijakan yang diunduh di langkah sebelumnya.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```
**catatan**  
Jika Anda melihat kebijakan di Konsol Manajemen AWS, konsol akan menampilkan peringatan untuk layanan **ELB**, tetapi tidak untuk layanan **ELB v2**. Ini terjadi karena beberapa tindakan dalam kebijakan ada untuk **ELB v2**, tetapi tidak untuk **ELB**. Anda dapat mengabaikan peringatan untuk **ELB**.

1. Ganti nilai untuk nama cluster, kode wilayah, dan ID akun.

   ```
   eksctl create iamserviceaccount \
       --cluster=<cluster-name> \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws: iam::<AWS_ACCOUNT_ID>:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region <aws-region-code> \
       --approve
   ```

## Langkah 2: Instal AWS Load Balancer Controller
<a name="lbc-helm-install"></a>

1. Tambahkan repositori bagan `eks-charts` Helm. AWS mempertahankan [repositori ini](https://github.com/aws/eks-charts) aktif. GitHub

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

1. Perbarui repo lokal Anda untuk memastikan bahwa Anda memiliki bagan terbaru.

   ```
   helm repo update eks
   ```

1. Instal AWS Load Balancer Controller.

   Jika Anda menerapkan pengontrol ke EC2 node Amazon yang [membatasi akses ke layanan metadata EC2 instans Amazon (IMDS)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node), atau jika Anda menerapkan ke Fargate atau Amazon EKS Hybrid Nodes, tambahkan flag berikut ke perintah berikut: `helm`
   +  `--set region=region-code ` 
   +  `--set vpcId=vpc-xxxxxxxx ` 

     Ganti *my-cluster* dengan nama klaster Anda. Dalam perintah berikut, `aws-load-balancer-controller` adalah akun layanan Kubernetes yang Anda buat pada langkah sebelumnya.

     Untuk informasi selengkapnya tentang mengonfigurasi bagan helm, lihat [values.yaml](https://github.com/aws/eks-charts/blob/master/stable/aws-load-balancer-controller/values.yaml) di. GitHub

     ```
     helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
       -n kube-system \
       --set clusterName=my-cluster \
       --set serviceAccount.create=false \
       --set serviceAccount.name=aws-load-balancer-controller \
       --version 1.14.0
     ```

**penting**  
Bagan yang diterapkan tidak menerima pembaruan keamanan secara otomatis. Anda perlu memutakhirkan secara manual ke bagan yang lebih baru ketika bagan tersedia. Saat memutakhirkan, ubah *install* ke `upgrade` perintah sebelumnya.

`helm install`Perintah secara otomatis menginstal definisi sumber daya kustom (CRDs) untuk pengontrol. `helm upgrade`Perintah tidak. Jika Anda menggunakan, `helm upgrade,` Anda harus menginstal file secara manual CRDs. Jalankan perintah berikut untuk menginstal CRDs:

```
wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml
kubectl apply -f crds.yaml
```

## Langkah 3: Verifikasi bahwa pengontrol diinstal
<a name="lbc-helm-verify"></a>

1. Verifikasikan bahwa pengendali telah dipasang.

   ```
   kubectl get deployment -n kube-system aws-load-balancer-controller
   ```

   Contoh output adalah sebagai berikut.

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

   Anda menerima output sebelumnya jika Anda menerapkan menggunakan Helm. Jika Anda menggunakan manifes Kubernetes, Anda hanya memiliki satu replika.

1. Sebelum menggunakan pengontrol untuk menyediakan AWS sumber daya, klaster Anda harus memenuhi persyaratan tertentu. Lihat informasi yang lebih lengkap di [Rute aplikasi dan lalu lintas HTTP dengan Application Load Balancers](alb-ingress.md) dan [Rute lalu lintas TCP dan UDP dengan Network Load Balancers](network-load-balancing.md).

# Instal AWS Load Balancer Controller dengan manifes
<a name="lbc-manifest"></a>

**Tip**  
Dengan Amazon EKS Auto Mode, Anda tidak perlu menginstal atau meningkatkan add-on jaringan. Mode Otomatis mencakup jaringan pod dan kemampuan load balancing.  
Untuk informasi selengkapnya, lihat [Mengotomatiskan infrastruktur klaster dengan Mode Otomatis EKS](automode.md).

Topik ini menjelaskan cara menginstal controller dengan mengunduh dan menerapkan manifes Kubernetes. Anda dapat melihat [dokumentasi](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/) lengkap untuk pengontrol aktif GitHub.

Pada langkah-langkah berikut, ganti nilai contoh dengan nilai Anda sendiri.

## Prasyarat
<a name="lbc-manifest-prereqs"></a>

Sebelum memulai tutorial ini, Anda harus menyelesaikan langkah-langkah berikut:
+ Buat klaster Amazon EKS. Untuk membuatnya, lihat [Memulai dengan Amazon EKS](getting-started.md).
+ Instal [Helm](https://helm.sh/docs/helm/helm_install/) di mesin lokal Anda.
+ [Pastikan bahwa plugin Amazon VPC CNI Anda untuk Kubernetes,`kube-proxy`, dan add-on CoreDNS berada pada versi minimum yang tercantum dalam token akun Layanan.](service-accounts.md#boundserviceaccounttoken-validated-add-on-versions)
+ Pelajari tentang konsep AWS Elastic Load Balancing. Untuk informasi selengkapnya, silakan lihat [Panduan Pengguna Penyeimbang Beban Elastis](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/).
+ [Pelajari tentang [layanan](https://kubernetes.io/docs/concepts/services-networking/service/) Kubernetes dan sumber daya ingress.](https://kubernetes.io/docs/concepts/services-networking/ingress/)

### Pertimbangan-pertimbangan
<a name="lbc-manifest-considerations"></a>

Sebelum melanjutkan dengan langkah-langkah konfigurasi di halaman ini, pertimbangkan hal berikut:
+ Kebijakan dan role (`AmazonEKSLoadBalancerControllerRole`) IAM dapat digunakan kembali di beberapa kluster EKS di akun yang sama. AWS 
+ Jika Anda menginstal controller pada cluster yang sama di mana role (`AmazonEKSLoadBalancerControllerRole`) awalnya dibuat, pergi ke [Langkah 2: Instal cert-manager](#lbc-cert) setelah memverifikasi peran ada.
+ Jika Anda menggunakan IAM Roles for Service Accounts (IRSA), IRSA harus disiapkan untuk setiap cluster, dan ARN penyedia OpenID Connect (OIDC) dalam kebijakan kepercayaan peran khusus untuk setiap kluster EKS. Selain itu, jika Anda menginstal pengontrol pada klaster baru dengan yang sudah ada`AmazonEKSLoadBalancerControllerRole`, perbarui kebijakan kepercayaan peran untuk menyertakan penyedia OIDC klaster baru dan buat akun layanan baru dengan anotasi peran yang sesuai. Untuk menentukan apakah Anda sudah memiliki penyedia OIDC, atau membuatnya, lihat. [Buat penyedia IAM OIDC untuk klaster Anda](enable-iam-roles-for-service-accounts.md)

## Langkah 1: Konfigurasikan IAM
<a name="lbc-iam"></a>

Langkah-langkah berikut mengacu pada versi rilis AWS Load Balancer Controller **v2.14.1**. Untuk informasi selengkapnya tentang semua rilis, lihat [Halaman Rilis AWS Load Balancer Controller](https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/) di. GitHub

1. Unduh kebijakan IAM untuk AWS Load Balancer Controller yang memungkinkannya melakukan panggilan atas nama AWS APIs Anda.  
**Example**  

------
#### [  AWS  ]

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy.json
   ```

------
#### [  AWS GovCloud (US) ]

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy_us-gov.json
   ```

   ```
   mv iam_policy_us-gov.json iam_policy.json
   ```

------

1. Buat kebijakan IAM menggunakan kebijakan yang diunduh di langkah sebelumnya.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```
**catatan**  
Jika Anda melihat kebijakan di Konsol Manajemen AWS, konsol akan menampilkan peringatan untuk layanan **ELB**, tetapi tidak untuk layanan **ELB v2**. Ini terjadi karena beberapa tindakan dalam kebijakan ada untuk **ELB v2**, tetapi tidak untuk **ELB**. Anda dapat mengabaikan peringatan untuk **ELB**.

**Example**  

1. Ganti *my-cluster* dengan nama cluster Anda, *111122223333* dengan ID akun Anda, dan kemudian jalankan perintah.

   ```
   eksctl create iamserviceaccount \
     --cluster=my-cluster \
     --namespace=kube-system \
     --name=aws-load-balancer-controller \
     --role-name AmazonEKSLoadBalancerControllerRole \
     --attach-policy-arn=arn:aws: iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \
     --approve
   ```

1. Ambil ID penyedia OIDC cluster Anda dan simpan dalam variabel.

   ```
   oidc_id=$(aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
   ```

1. Tentukan apakah penyedia IAM OIDC dengan ID klaster Anda sudah ada di akun Anda. Anda memerlukan OIDC yang dikonfigurasi untuk cluster dan IAM.

   ```
   aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
   ```

   Jika output dikembalikan, maka Anda sudah memiliki penyedia IAM OIDC untuk cluster Anda. Jika tidak ada output yang dikembalikan, maka Anda harus membuat penyedia IAM OIDC untuk cluster Anda. Untuk informasi selengkapnya, lihat [Buat penyedia IAM OIDC untuk klaster Anda](enable-iam-roles-for-service-accounts.md).

1. Salin konten berikut ke perangkat Anda. Ganti *111122223333* dengan ID akun Anda. Ganti *region-code* dengan AWS Wilayah tempat cluster Anda berada. Ganti *EXAMPLED539D4633E53DE1B71EXAMPLE* dengan output yang dikembalikan pada langkah sebelumnya.

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
               },
               "Action": "sts:AssumeRoleWithWebIdentity",
               "Condition": {
                   "StringEquals": {
                       "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com",
                       "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-load-balancer-controller"
                   }
               }
           }
       ]
   }
   ```

1. Buat peran IAM.

   ```
   aws iam create-role \
     --role-name AmazonEKSLoadBalancerControllerRole \
     --assume-role-policy-document file://"load-balancer-role-trust-policy.json"
   ```

1. Lampirkan kebijakan IAM terkelola Amazon EKS yang diperlukan ke peran IAM. Ganti *111122223333* dengan ID akun Anda.

   ```
   aws iam attach-role-policy \
     --policy-arn arn:aws: iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \
     --role-name AmazonEKSLoadBalancerControllerRole
   ```

1. Salin konten berikut ke perangkat Anda. Ganti *111122223333* dengan ID akun Anda. Setelah mengganti teks, jalankan perintah yang dimodifikasi untuk membuat `aws-load-balancer-controller-service-account.yaml` file.

   ```
   cat >aws-load-balancer-controller-service-account.yaml <<EOF
   apiVersion: v1
   kind: ServiceAccount
   metadata:
     labels:
       app.kubernetes.io/component: controller
       app.kubernetes.io/name: aws-load-balancer-controller
     name: aws-load-balancer-controller
     namespace: kube-system
     annotations:
       eks.amazonaws.com/role-arn: arn:aws: iam::111122223333:role/AmazonEKSLoadBalancerControllerRole
   EOF
   ```

1. Buat akun layanan Kubernetes di klaster Anda. Akun layanan Kubernetes diberi `aws-load-balancer-controller` anotasi dengan peran IAM yang Anda buat bernama. *AmazonEKSLoadBalancerControllerRole*

   ```
   kubectl apply -f aws-load-balancer-controller-service-account.yaml
   ```

## Langkah 2: Instal `cert-manager`
<a name="lbc-cert"></a>

Instal `cert-manager` menggunakan salah satu metode berikut untuk menyuntikkan konfigurasi sertifikat ke dalam webhooks. Untuk informasi selengkapnya, lihat [Memulai](https://cert-manager.io/docs/installation/#getting-started) di *Dokumentasi manajer sertifikat*.

Kami merekomendasikan menggunakan registri `quay.io` kontainer untuk menginstal`cert-manager`. Jika node Anda tidak memiliki akses ke registri `quay.io` kontainer, Instal `cert-manager` menggunakan Amazon ECR (lihat di bawah).

**Example**  

1. Jika node Anda memiliki akses ke registri `quay.io` kontainer, instal `cert-manager` untuk menyuntikkan konfigurasi sertifikat ke dalam webhooks.

   ```
   kubectl apply \
       --validate=false \
       -f https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
   ```

1. Instal `cert-manager` menggunakan salah satu metode berikut untuk menyuntikkan konfigurasi sertifikat ke dalam webhooks. Untuk informasi selengkapnya, lihat [Memulai](https://cert-manager.io/docs/installation/#getting-started) di *Dokumentasi manajer sertifikat*.

1. Unduh manifes.

   ```
   curl -Lo cert-manager.yaml https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
   ```

1. Tarik gambar berikut dan dorong ke repositori yang dapat diakses oleh node Anda. Untuk informasi lebih lanjut tentang cara menarik, menandai, dan mendorong gambar ke repositori Anda sendiri, lihat. [Salin gambar kontainer dari satu repositori ke repositori lain](copy-image-to-repository.md)

   ```
   quay.io/jetstack/cert-manager-cainjector:v1.13.5
   quay.io/jetstack/cert-manager-controller:v1.13.5
   quay.io/jetstack/cert-manager-webhook:v1.13.5
   ```

1. Ganti `quay.io` dalam manifes untuk tiga gambar dengan nama registri Anda sendiri. Perintah berikut mengasumsikan bahwa nama repositori pribadi Anda sama dengan repositori sumber. Ganti *111122223333.dkr.ecr.region-code.amazonaws.com* dengan registri pribadi Anda.

   ```
   sed -i.bak -e 's|quay.io|111122223333.dkr.ecr.region-code.amazonaws.com|' ./cert-manager.yaml
   ```

1. Terapkan manifes.

   ```
   kubectl apply \
       --validate=false \
       -f ./cert-manager.yaml
   ```

## Langkah 3: Instal AWS Load Balancer Controller
<a name="lbc-install"></a>

1. Unduh spesifikasi pengendali. Untuk informasi selengkapnya tentang pengontrol, lihat [dokumentasi](https://kubernetes-sigs.github.io/aws-load-balancer-controller/) di GitHub.

   ```
   curl -Lo v2_14_1_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.14.1/v2_14_1_full.yaml
   ```

1. Lakukan pengeditan berikut ke file.

   1. Jika Anda mengunduh `v2_14_1_full.yaml` file, jalankan perintah berikut untuk menghapus `ServiceAccount` bagian dalam manifes. Jika Anda tidak menghapus bagian ini, anotasi yang diperlukan yang Anda buat ke akun layanan pada langkah sebelumnya akan ditimpa. Menghapus bagian ini juga mempertahankan akun layanan yang Anda buat pada langkah sebelumnya jika Anda menghapus pengontrol.

      ```
      sed -i.bak -e '764,772d' ./v2_14_1_full.yaml
      ```

      Jika Anda mengunduh versi file yang berbeda, buka file di editor dan hapus baris berikut.

      ```
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        labels:
          app.kubernetes.io/component: controller
          app.kubernetes.io/name: aws-load-balancer-controller
        name: aws-load-balancer-controller
        namespace: kube-system
      ---
      ```

   1. Ganti `your-cluster-name` di `Deployment` `spec` bagian file dengan nama cluster Anda dengan mengganti *my-cluster* dengan nama cluster Anda.

      ```
      sed -i.bak -e 's|your-cluster-name|my-cluster|' ./v2_14_1_full.yaml
      ```

   1. Jika node Anda tidak memiliki akses ke repositori gambar Amazon EKS Amazon ECR, maka Anda perlu menarik gambar berikut dan mendorongnya ke repositori yang dapat diakses oleh node Anda. Untuk informasi selengkapnya tentang cara menarik, menandai, dan mendorong gambar ke repositori Anda sendiri, lihat. [Salin gambar kontainer dari satu repositori ke repositori lain](copy-image-to-repository.md)

      ```
      public.ecr.aws/eks/aws-load-balancer-controller:v2.14.1
      ```

      Tambahkan nama registri Anda ke manifes. Perintah berikut mengasumsikan bahwa nama repositori pribadi Anda sama dengan repositori sumber dan menambahkan nama registri pribadi Anda ke file. Ganti *111122223333.dkr.ecr.region-code.amazonaws.com* dengan registri Anda. Baris ini mengasumsikan bahwa Anda menamai repositori pribadi Anda sama dengan repositori sumber. Jika tidak, ubah `eks/aws-load-balancer-controller` teks setelah nama registri pribadi Anda ke nama repositori Anda.

      ```
      sed -i.bak -e 's|public.ecr.aws/eks/aws-load-balancer-controller|111122223333.dkr.ecr.region-code.amazonaws.com/eks/aws-load-balancer-controller|' ./v2_14_1_full.yaml
      ```

   1. (Diperlukan hanya untuk Fargate atau IMDS Terbatas)

      Jika Anda menerapkan pengontrol ke EC2 node Amazon yang [membatasi akses ke layanan metadata EC2 instans Amazon (IMDS), atau jika Anda menerapkan ke Fargate atau Amazon EKS Hybrid Nodes, tambahkan bagian](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node) bawah. `following parameters` `- args:`

      ```
      [...]
      spec:
            containers:
              - args:
                  - --cluster-name=your-cluster-name
                  - --ingress-class=alb
                  - --aws-vpc-id=vpc-xxxxxxxx
                  - --aws-region=region-code
      
      
      [...]
      ```

1. Terapkan file.

   ```
   kubectl apply -f v2_14_1_full.yaml
   ```

1. Unduh `IngressClass` dan `IngressClassParams` manifes ke cluster Anda.

   ```
   curl -Lo v2.14.1_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.14.1/v2_14_1_ingclass.yaml
   ```

1. Menerapkan manifes ke klaster Anda.

   ```
   kubectl apply -f v2_14_1_ingclass.yaml
   ```

## Langkah 4: Verifikasi bahwa pengontrol diinstal
<a name="lbc-verify"></a>

1. Verifikasikan bahwa pengendali telah dipasang.

   ```
   kubectl get deployment -n kube-system aws-load-balancer-controller
   ```

   Contoh output adalah sebagai berikut.

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

   Anda menerima output sebelumnya jika Anda menerapkan menggunakan Helm. Jika Anda menggunakan manifes Kubernetes, Anda hanya memiliki satu replika.

1. Sebelum menggunakan pengontrol untuk menyediakan AWS sumber daya, klaster Anda harus memenuhi persyaratan tertentu. Lihat informasi yang lebih lengkap di [Rute aplikasi dan lalu lintas HTTP dengan Application Load Balancers](alb-ingress.md) dan [Rute lalu lintas TCP dan UDP dengan Network Load Balancers](network-load-balancing.md).

# Migrasikan aplikasi dari ALB Ingress Controller yang tidak digunakan lagi
<a name="lbc-remove"></a>

Topik ini menjelaskan cara bermigrasi dari versi pengontrol yang tidak digunakan lagi. Lebih khusus lagi, ini menjelaskan cara menghapus versi Load Balancer AWS Controller yang tidak digunakan lagi.
+ Versi usang tidak dapat ditingkatkan. Anda harus menghapusnya terlebih dahulu, dan kemudian menginstal versi saat ini.
+ Versi usang meliputi:
  +  AWS ALB Ingress Controller untuk Kubernetes (“Ingress Controller”), pendahulu dari Load Balancer Controller. AWS 
  + `0.1.x `Versi apa pun dari AWS Load Balancer Controller

## Hapus versi pengontrol yang tidak digunakan lagi
<a name="lbc-remove-desc"></a>

**catatan**  
Anda mungkin telah menginstal versi usang menggunakan Helm atau secara manual dengan manifes Kubernetes. Selesaikan prosedur menggunakan alat yang awalnya Anda instal.

1. Jika Anda menginstal bagan `incubator/aws-alb-ingress-controller` Helm, hapus instalannya.

   ```
   helm delete aws-alb-ingress-controller -n kube-system
   ```

1. Jika Anda memiliki versi `0.1.x ` `eks-charts/aws-load-balancer-controller` bagan yang diinstal, hapus instalannya. Pemutakhiran dari `0.1.x ` ke versi `1.0.0` tidak berfungsi karena ketidakcocokan dengan versi API webhook.

   ```
   helm delete aws-load-balancer-controller -n kube-system
   ```

1. Periksa untuk melihat apakah pengendali terpasang saat ini.

   ```
   kubectl get deployment -n kube-system alb-ingress-controller
   ```

   Ini adalah output jika controller tidak diinstal.

   ```
   Error from server (NotFound): deployments.apps "alb-ingress-controller" not found
   ```

   Ini adalah output jika pengontrol diinstal.

   ```
   NAME                   READY UP-TO-DATE AVAILABLE AGE
   alb-ingress-controller 1/1   1          1         122d
   ```

1. Masukkan perintah berikut untuk menghapus pengendali.

   ```
   kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/alb-ingress-controller.yaml
   kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/rbac-role.yaml
   ```

## Migrasi ke AWS Load Balancer Controller
<a name="lbc-migrate"></a>

Untuk melakukan migrasi dari ALB Ingress Controller untuk Kubernetes ke Load AWS Balancer Controller, Anda perlu:

1. Hapus ALB Ingress Controller (lihat di atas).

1.  [Instal AWS Load Balancer Controller.](aws-load-balancer-controller.md#lbc-overview) 

1. Tambahkan kebijakan tambahan ke Peran IAM yang digunakan oleh Pengontrol AWS Load Balancer. Kebijakan ini memungkinkan LBC untuk mengelola sumber daya yang dibuat oleh ALB Ingress Controller untuk Kubernetes.

1. Unduh kebijakan IAM. Kebijakan ini mengizinkan AWS Load Balancer Controller untuk mengelola sumber daya yang dibuat oleh ALB Ingress Controller untuk Kubernetes. Anda juga dapat [view the policy](https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_v1_to_v2_additional.json).

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy_v1_to_v2_additional.json
   ```

1. Jika cluster Anda berada di AWS Wilayah AWS GovCloud (AS-Timur) atau AWS GovCloud (AS-Barat), maka ganti ` arn:aws: ` dengan. `arn:aws-us-gov:`

   ```
   sed -i.bak -e 's|arn:aws:|arn:aws-us-gov:|' iam_policy_v1_to_v2_additional.json
   ```

1. Buat kebijakan IAM dan catat ARN yang dikembalikan.

   ```
   aws iam create-policy \
     --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy \
     --policy-document file://iam_policy_v1_to_v2_additional.json
   ```

1. Lampirkan kebijakan IAM ke peran IAM yang digunakan oleh Load AWS Balancer Controller. Ganti *your-role-name* dengan nama peran, seperti`AmazonEKSLoadBalancerControllerRole`.

   Jika Anda membuat peran menggunakan`eksctl`, maka untuk menemukan nama peran yang dibuat, buka [AWS CloudFormation konsol](https://console.aws.amazon.com/cloudformation) dan pilih tumpukan **eksctl- *my-cluster* - - addon-iamserviceaccount-kube-system**. aws-load-balancer-controller Pilih tab **Sumber Daya**. Nama peran ada di kolom **ID Fisik**.

   ```
   aws iam attach-role-policy \
     --role-name your-role-name \
     --policy-arn arn:aws: iam::111122223333:policy/AWSLoadBalancerControllerAdditionalIAMPolicy
   ```