

 **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.

# Menerapkan Beban Kerja Load Balancer Sampel ke Mode Otomatis EKS
<a name="auto-elb-example"></a>

Panduan ini memandu Anda melalui penerapan versi kontainer dari game 2048 di Amazon EKS, lengkap dengan penyeimbangan beban dan aksesibilitas internet.

## Prasyarat
<a name="_prerequisites"></a>
+ Kluster Mode Otomatis EKS
+  `kubectl`dikonfigurasi untuk berinteraksi dengan cluster Anda
+ Izin IAM yang sesuai untuk membuat sumber daya ALB

## Langkah 1: Buat Namespace
<a name="_step_1_create_the_namespace"></a>

Pertama, buat namespace khusus untuk aplikasi game 2048.

Buat file bernama `01-namespace.yaml`:

```
apiVersion: v1
kind: Namespace
metadata:
  name: game-2048
```

Terapkan konfigurasi namespace:

```
kubectl apply -f 01-namespace.yaml
```

## Langkah 2: Menyebarkan Aplikasi
<a name="_step_2_deploy_the_application"></a>

Aplikasi ini menjalankan beberapa replika dari kontainer game 2048.

Buat file bernama `02-deployment.yaml`:

```
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: game-2048
  name: deployment-2048
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: app-2048
  replicas: 5
  template:
    metadata:
      labels:
        app.kubernetes.io/name: app-2048
    spec:
      containers:
        - image: public.ecr.aws/l6m2t8p7/docker-2048:latest
          imagePullPolicy: Always
          name: app-2048
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: "0.5"
```

**catatan**  
Jika Anda menerima kesalahan saat memuat gambar`public.ecr.aws/l6m2t8p7/docker-2048:latest`, konfirmasikan peran IAM Node Anda memiliki izin yang cukup untuk menarik gambar dari ECR. Untuk informasi selengkapnya, lihat [IAM role simpul](auto-learn-iam.md#auto-learn-node-iam-role). Juga, `docker-2048` gambar dalam contoh adalah `x86_64` gambar dan tidak akan berjalan pada arsitektur lain.

 **Komponen kunci:** 
+ Menyebarkan 5 replika aplikasi
+ Menggunakan gambar ECR publik
+ Meminta 0,5 inti CPU per pod
+ Mengekspos port 80 untuk lalu lintas HTTP

Terapkan penyebaran:

```
kubectl apply -f 02-deployment.yaml
```

## Langkah 3: Buat Layanan
<a name="_step_3_create_the_service"></a>

Layanan mengekspos penyebaran ke jaringan cluster.

Buat file bernama `03-service.yaml`:

```
apiVersion: v1
kind: Service
metadata:
  namespace: game-2048
  name: service-2048
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app.kubernetes.io/name: app-2048
```

 **Komponen kunci:** 
+ Menciptakan NodePort layanan
+ Memetakan port 80 ke port kontainer 80
+ Menggunakan pemilih label untuk menemukan pod

Terapkan layanan:

```
kubectl apply -f 03-service.yaml
```

## Langkah 4: Konfigurasikan Load Balancing
<a name="_step_4_configure_load_balancing"></a>

Anda akan mengatur ingress untuk mengekspos aplikasi ke internet.

Pertama, buat`IngressClass`. Buat file bernama `04-ingressclass.yaml`:

```
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  labels:
    app.kubernetes.io/name: LoadBalancerController
  name: alb
spec:
  controller: eks.amazonaws.com/alb
```

**catatan**  
Mode Otomatis EKS memerlukan tag subnet untuk mengidentifikasi subnet publik dan pribadi.  
Jika Anda membuat cluster Anda dengan`eksctl`, Anda sudah memiliki tag ini.  
Pelajari cara [Tag subnet untuk Mode Otomatis EKS](tag-subnets-auto.md).

Kemudian buat sumber daya Ingress. Buat file bernama `05-ingress.yaml`:

```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: game-2048
  name: ingress-2048
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: service-2048
                port:
                  number: 80
```

 **Komponen kunci:** 
+ Menciptakan ALB yang menghadap ke internet
+ Menggunakan tipe target IP untuk routing pod langsung
+ Rutekan semua lalu lintas (/) ke layanan game

Terapkan konfigurasi ingress:

```
kubectl apply -f 04-ingressclass.yaml
kubectl apply -f 05-ingress.yaml
```

## Langkah 5: Verifikasi Deployment
<a name="_step_5_verify_the_deployment"></a>

1. Periksa apakah semua pod berjalan:

   ```
   kubectl get pods -n game-2048
   ```

1. Verifikasi layanan dibuat:

   ```
   kubectl get svc -n game-2048
   ```

1. Dapatkan titik akhir ALB:

   ```
   kubectl get ingress -n game-2048
   ```

Bidang ADDRESS pada keluaran ingress akan menampilkan endpoint ALB Anda. Tunggu 2-3 menit hingga ALB menyediakan dan mendaftarkan semua target.

## Langkah 6: Akses Game
<a name="_step_6_access_the_game"></a>

Buka browser web Anda dan telusuri URL endpoint ALB dari langkah sebelumnya. Anda akan melihat antarmuka game 2048.

## Langkah 7: Pembersihan
<a name="_step_7_cleanup"></a>

Untuk menghapus semua sumber daya yang dibuat dalam tutorial ini:

```
kubectl delete namespace game-2048
```

Ini akan menghapus semua sumber daya di namespace, termasuk penerapan, layanan, dan sumber daya ingress.

## Apa yang Terjadi Di Balik Layar
<a name="_whats_happening_behind_the_scenes"></a>

1. Deployment menciptakan 5 pod yang menjalankan game 2048

1. Layanan ini menyediakan akses jaringan yang stabil ke pod ini

1. Mode Otomatis EKS:
   + Membuat Application Load Balancer di AWS 
   + Mengonfigurasi grup target untuk pod
   + Menyiapkan aturan perutean untuk mengarahkan lalu lintas ke layanan

## Pemecahan Masalah
<a name="auto-elb-troubleshooting"></a>

Jika game tidak dimuat:
+ Pastikan semua pod berjalan: `kubectl get pods -n game-2048` 
+ Periksa status masuknya: `kubectl describe ingress -n game-2048` 
+ Verifikasi pemeriksaan kesehatan ALB: Periksa kesehatan grup target di Konsol AWS 