

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

# Migrasikan Pengontrol Ingress NGINX saat mengaktifkan Mode Otomatis Amazon EKS
<a name="migrate-nginx-ingress-controller-eks-auto-mode"></a>

*Olawale Olaleye dan Shamanth Devagari, Amazon Web Services*

## Ringkasan
<a name="migrate-nginx-ingress-controller-eks-auto-mode-summary"></a>

[Mode Otomatis EKS](https://docs.aws.amazon.com/eks/latest/userguide/automode.html) untuk Amazon Elastic Kubernetes Service (Amazon EKS) dapat mengurangi overhead operasional menjalankan beban kerja Anda di klaster Kubernetes. Mode ini memungkinkan AWS untuk juga mengatur dan mengelola infrastruktur atas nama Anda. Ketika Anda mengaktifkan Mode Otomatis EKS pada cluster yang ada, Anda harus hati-hati merencanakan migrasi konfigurasi [NGINX Ingress](https://docs.nginx.com/nginx-ingress-controller/overview/about/) Controller. Ini karena transfer langsung Network Load Balancers tidak dimungkinkan.

Anda dapat menggunakan strategi blue/green penerapan untuk memigrasikan instans NGINX Ingress Controller saat Anda mengaktifkan Mode Otomatis EKS EKS di klaster Amazon EKS yang ada.

## Prasyarat dan batasan
<a name="migrate-nginx-ingress-controller-eks-auto-mode-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS
+ [Cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) yang menjalankan Kubernetes versi 1.29 atau yang lebih baru
+ Pengaya Amazon EKS yang menjalankan versi [minimum](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html#auto-addons-required)
+ Versi terbaru dari [kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html#kubectl-install-update)
+ Instance [NGINX Ingress](https://kubernetes.github.io/ingress-nginx/deploy/#aws) Controller yang ada
+ (Opsional) [Zona yang dihosting](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-working-with.html) di Amazon Route 53 untuk perpindahan lalu lintas berbasis DNS

## Arsitektur
<a name="migrate-nginx-ingress-controller-eks-auto-mode-architecture"></a>

Penerapan *biru/hijau adalah strategi penyebaran* di mana Anda membuat dua lingkungan yang terpisah namun identik. Blue/green deployment menyediakan kemampuan rilis downtime dan rollback mendekati nol. Ide dasarnya adalah untuk menggeser lalu lintas antara dua lingkungan identik yang menjalankan versi berbeda dari aplikasi Anda.

Gambar berikut menunjukkan migrasi Network Load Balancers dari dua instance NGINX Ingress Controller yang berbeda saat mengaktifkan Mode Otomatis EKS. Anda menggunakan blue/green penyebaran untuk mengalihkan lalu lintas antara dua Network Load Balancers.

![\[Menggunakan strategi blue/green penerapan untuk memigrasikan instance NGINX Ingress Controller.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/57e8c14f-cb50-4027-8ef6-ce8ea3f2db25/images/211a029a-90d8-4c92-8200-19e54062f936.png)


Namespace asli adalah namespace *biru*. Di sinilah layanan dan instance NGINX Ingress Controller asli berjalan, sebelum Anda mengaktifkan Mode Otomatis EKS. Layanan dan instance asli terhubung ke Network Load Balancer yang memiliki nama DNS yang dikonfigurasi di Route 53. [AWS Load Balancer Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.11/) menggunakan Network Load Balancer ini di target virtual private cloud (VPC).

Diagram menunjukkan alur kerja berikut untuk menyiapkan lingkungan untuk blue/green penerapan:

1. *Instal dan konfigurasikan instance NGINX Ingress Controller lain di namespace yang berbeda, namespace hijau.*

1. Di Route 53, konfigurasikan nama DNS untuk Network Load Balancer baru.

## Alat
<a name="migrate-nginx-ingress-controller-eks-auto-mode-tools"></a>

**Layanan AWS**
+ [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.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) mendistribusikan lalu lintas aplikasi atau jaringan yang masuk ke beberapa target. Misalnya, Anda dapat mendistribusikan lalu lintas di seluruh instans, container, dan alamat IP Amazon Elastic Compute Cloud (Amazon EC2) di satu atau beberapa Availability Zone.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) adalah layanan web DNS yang sangat tersedia dan dapat diskalakan.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) membantu Anda meluncurkan AWS sumber daya ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur yang dapat diskalakan. AWS

**Alat lainnya**
+ [Helm](https://helm.sh/) adalah pengelola paket open source untuk Kubernetes yang membantu Anda menginstal dan mengelola aplikasi di klaster Kubernetes Anda.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) adalah antarmuka baris perintah yang membantu Anda menjalankan perintah terhadap klaster Kubernetes.
+ [NGINX Ingress Controller](https://docs.nginx.com/nginx-ingress-controller/overview/about/) menghubungkan aplikasi dan layanan Kubernetes dengan penanganan permintaan, auth, sumber daya kustom swalayan, dan debugging.

## Epik
<a name="migrate-nginx-ingress-controller-eks-auto-mode-epics"></a>

### Tinjau lingkungan yang ada
<a name="review-the-existing-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konfirmasikan bahwa instans NGINX Ingress Controller asli beroperasi. | Masukkan perintah berikut untuk memverifikasi bahwa sumber daya di `ingress-nginx` namespace beroperasi. Jika Anda telah menerapkan NGINX Ingress Controller di namespace lain, perbarui nama namespace dalam perintah ini.<pre>kubectl get all -n ingress-nginx</pre>Pada output, konfirmasikan bahwa pod NGINX Ingress Controller dalam status berjalan. Berikut ini adalah contoh output:<pre>NAME                                           READY   STATUS      RESTARTS      AGE<br />pod/ingress-nginx-admission-create-xqn9d       0/1     Completed   0             88m<br />pod/ingress-nginx-admission-patch-lhk4j        0/1     Completed   1             88m<br />pod/ingress-nginx-controller-68f68f859-xrz74   1/1     Running     2 (10m ago)   72m<br /><br />NAME                                         TYPE           CLUSTER-IP       EXTERNAL-IP                                                                     PORT(S)                      AGE<br />service/ingress-nginx-controller             LoadBalancer   10.100.67.255    k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com   80:30330/TCP,443:31462/TCP   88m<br />service/ingress-nginx-controller-admission   ClusterIP      10.100.201.176   <none>                                                                          443/TCP                      88m<br /><br />NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE<br />deployment.apps/ingress-nginx-controller   1/1     1            1           88m<br /><br />NAME                                                 DESIRED   CURRENT   READY   AGE<br />replicaset.apps/ingress-nginx-controller-68f68f859   1         1         1       72m<br />replicaset.apps/ingress-nginx-controller-d8c96cf68   0         0         0       88m<br /><br />NAME                                       STATUS     COMPLETIONS   DURATION   AGE<br />job.batch/ingress-nginx-admission-create   Complete   1/1           4s         88m<br />job.batch/ingress-nginx-admission-patch    Complete   1/1           5s         88m</pre> | DevOps insinyur | 

### Menerapkan HTTPd beban kerja sampel untuk menggunakan NGINX Ingress Controller
<a name="deploy-a-sample-httpd-workload-to-use-the-nginx-ingress-controller"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat sumber daya Kubernetes. | Masukkan perintah berikut untuk membuat contoh deployment, service, dan ingress Kubernetes:<pre>kubectl create deployment demo --image=httpd --port=80</pre><pre>kubectl expose deployment demo</pre><pre> kubectl create ingress demo --class=nginx \<br />  --rule nginxautomode.local.dev/=demo:80</pre> | DevOps insinyur | 
| Tinjau sumber daya yang digunakan. | Masukkan perintah berikut untuk melihat daftar sumber daya yang digunakan:<pre>kubectl get all,ingress</pre>Pada output, konfirmasikan bahwa HTTPd pod sampel berada dalam status berjalan. Berikut ini adalah contoh output:<pre>NAME                        READY   STATUS    RESTARTS   AGE<br />pod/demo-7d94f8cb4f-q68wc   1/1     Running   0          59m<br /><br />NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE<br />service/demo         ClusterIP   10.100.78.155   <none>        80/TCP    59m<br />service/kubernetes   ClusterIP   10.100.0.1      <none>        443/TCP   117m<br /><br />NAME                   READY   UP-TO-DATE   AVAILABLE   AGE<br />deployment.apps/demo   1/1     1            1           59m<br /><br />NAME                              DESIRED   CURRENT   READY   AGE<br />replicaset.apps/demo-7d94f8cb4f   1         1         1       59m<br /><br />NAME                             CLASS   HOSTS                                  ADDRESS                                                                         PORTS   AGE<br />ingress.networking.k8s.io/demo   nginx   nginxautomode.local.dev                k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com                 80      56m</pre> | DevOps insinyur | 
| Konfirmasikan bahwa layanan dapat dijangkau. | Masukkan perintah berikut untuk mengonfirmasi bahwa layanan dapat dijangkau melalui nama DNS Network Load Balancer:<pre>curl -H "Host: nginxautomode.local.dev" http://k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com</pre>Berikut ini adalah output yang diharapkan:<pre><html><body><h1>It works!</h1></body></html></pre> | DevOps insinyur | 
| (Opsional) Buat catatan DNS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | DevOps insinyur, AWS DevOps | 

### Aktifkan Mode Otomatis EKS pada cluster yang ada
<a name="enable-eks-auto-mode-on-the-existing-cluster"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Aktifkan Mode Otomatis EKS. | Ikuti petunjuk di [Aktifkan Mode Otomatis EKS pada klaster yang ada](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html) (dokumentasi Amazon EKS). | AWS DevOps | 

### Instal Pengontrol Ingress NGINX baru
<a name="install-a-new-nginx-ingress-controller"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konfigurasikan instance NGINX Ingress Controller baru. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | DevOps insinyur | 
| Menerapkan instance NGINX Instance Controller baru. | Masukkan perintah berikut untuk menerapkan file manifes yang dimodifikasi:<pre>kubectl apply -f deploy.yaml</pre> | DevOps insinyur | 
| Konfirmasikan penerapan yang berhasil. | Masukkan perintah berikut untuk memverifikasi bahwa sumber daya di `ingress-nginx-v2` namespace beroperasi:<pre>kubectl get all -n ingress-nginx-v2</pre>Pada output, konfirmasikan bahwa pod NGINX Ingress Controller berada dalam keadaan berjalan. Berikut ini adalah contoh output:<pre>NAME                                            READY   STATUS      RESTARTS   AGE<br />pod/ingress-nginx-admission-create-7shrj        0/1     Completed   0          24s<br />pod/ingress-nginx-admission-patch-vkxr5         0/1     Completed   1          24s<br />pod/ingress-nginx-controller-757bfcbc6d-4fw52   1/1     Running     0          24s<br /><br />NAME                                         TYPE           CLUSTER-IP       EXTERNAL-IP                                                                     PORT(S)                      AGE<br />service/ingress-nginx-controller             LoadBalancer   10.100.208.114   k8s-ingressn-ingressn-2e5e37fab6-848337cd9c9d520f.elb.eu-west-1.amazonaws.com   80:31469/TCP,443:30658/TCP   24s<br />service/ingress-nginx-controller-admission   ClusterIP      10.100.150.114   <none>                                                                          443/TCP                      24s<br /><br />NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE<br />deployment.apps/ingress-nginx-controller   1/1     1            1           24s<br /><br />NAME                                                  DESIRED   CURRENT   READY   AGE<br />replicaset.apps/ingress-nginx-controller-757bfcbc6d   1         1         1       24s<br /><br />NAME                                       STATUS     COMPLETIONS   DURATION   AGE<br />job.batch/ingress-nginx-admission-create   Complete   1/1           4s         24s<br />job.batch/ingress-nginx-admission-patch    Complete   1/1           5s         24s</pre> | DevOps insinyur | 
| Buat ingress baru untuk beban HTTPd kerja sampel. | Masukkan perintah berikut untuk membuat ingress baru untuk beban HTTPd kerja sampel yang ada:<pre>kubectl create ingress demo-new --class=nginx-v2 \<br />  --rule nginxautomode.local.dev/=demo:80</pre> | DevOps insinyur | 
| Konfirmasikan bahwa ingress baru berfungsi. | Masukkan perintah berikut untuk mengonfirmasi bahwa ingress baru berfungsi:<pre>curl -H "Host: nginxautomode.local.dev" k8s-ingressn-ingressn-2e5e37fab6-848337cd9c9d520f.elb.eu-west-1.amazonaws.com</pre>Berikut ini adalah output yang diharapkan:<pre><html><body><h1>It works!</h1></body></html></pre> | DevOps insinyur | 

### Potong
<a name="cut-over"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Potong ke namespace baru. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | AWS DevOps, DevOps insinyur | 
| Tinjau dua masuknya. | Masukkan perintah berikut untuk meninjau dua ingress yang dibuat untuk beban kerja sampel HTTPd :<pre>kubectl get ingress</pre>Berikut ini adalah contoh output:<pre>NAME       CLASS      HOSTS                                  ADDRESS                                                                         PORTS   AGE<br />demo       nginx      nginxautomode.local.dev   k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com                              80      95m<br />demo-new   nginx-v2   nginxautomode.local.dev   k8s-ingressn-ingressn-2e5e37fab6-848337cd9c9d520f.elb.eu-west-1.amazonaws.com                80      33s</pre> | DevOps insinyur | 

## Sumber daya terkait
<a name="migrate-nginx-ingress-controller-eks-auto-mode-resources"></a>
+ [Aktifkan Mode Otomatis EKS pada klaster yang ada](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html) (dokumentasi Amazon EKS)
+ [Memecahkan masalah load balancer yang dibuat oleh service controller Kubernetes di Amazon EKS (Re:Post Knowledge](https://repost.aws/knowledge-center/eks-load-balancers-troubleshooting) Center)AWS 
+ [NGINX Ingress Controller](https://docs.nginx.com/nginx-ingress-controller/) (dokumentasi NGINX)