Buat IngressClass untuk mengonfigurasi Penyeimbang Beban Aplikasi - Amazon EKS

View a markdown version of this page

Buat IngressClass untuk mengonfigurasi Penyeimbang Beban Aplikasi - Amazon EKS

Bantu meningkatkan 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 GitHub tautan Edit halaman ini di 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.

Buat IngressClass untuk mengonfigurasi Penyeimbang Beban Aplikasi

Mode Otomatis EKS mengotomatiskan tugas rutin untuk penyeimbangan beban, termasuk mengekspos aplikasi cluster ke internet.

AWS menyarankan menggunakan Application Load Balancers (ALB) untuk melayani lalu lintas HTTP dan HTTPS. Application Load Balancers dapat merutekan permintaan berdasarkan konten permintaan. Untuk informasi selengkapnya tentang Penyeimbang Beban Aplikasi, lihat Apa itu Elastic Load Balancing?

Mode Otomatis EKS membuat dan mengonfigurasi Penyeimbang Beban Aplikasi (ALB). Misalnya, Mode Otomatis EKS membuat penyeimbang beban saat Anda membuat objek Ingress Kubernetes dan mengonfigurasinya untuk merutekan lalu lintas ke beban kerja cluster Anda.

Gambaran umum

  1. Buat beban kerja yang ingin Anda ekspos ke internet.

  2. Buat IngressClassParams sumber daya, menentukan nilai konfigurasi AWS tertentu seperti sertifikat yang akan digunakan untuk SSL/TLS dan Subnets VPC.

  3. Buat IngressClass sumber daya, tentukan bahwa Mode Otomatis EKS akan menjadi pengontrol untuk sumber daya.

  4. Buat Ingress sumber daya yang mengaitkan jalur HTTP dan port dengan beban kerja cluster.

Mode Otomatis EKS akan membuat Application Load Balancer yang menunjuk ke beban kerja yang ditentukan dalam Ingress sumber daya, menggunakan konfigurasi penyeimbang beban yang ditentukan dalam sumber daya. IngressClassParams

Prasyarat

  • Mode Otomatis EKS Diaktifkan di Cluster Amazon EKS

  • Kubectl dikonfigurasi untuk terhubung ke cluster Anda

    • Anda dapat menggunakan kubectl apply -f <filename> untuk menerapkan file konfigurasi YAML sampel di bawah ini ke cluster Anda.

catatan

Mode Otomatis EKS memerlukan tag subnet untuk mengidentifikasi subnet publik dan pribadi.

Jika Anda membuat cluster denganeksctl, Anda sudah memiliki tag ini.

Pelajari cara Tag subnet untuk Mode Otomatis EKS.

Langkah 1: Buat beban kerja

Untuk memulai, buat beban kerja yang ingin Anda ekspos ke internet. Ini bisa berupa sumber daya Kubernetes yang melayani lalu lintas HTTP, seperti Deployment atau Service.

Contoh ini menggunakan layanan HTTP sederhana service-2048 yang disebut yang mendengarkan pada port80. Buat layanan ini dan penerapannya dengan menerapkan manifes berikut,2048-deployment-service.yaml:

--- apiVersion: apps/v1 kind: Deployment metadata: name: deployment-2048 spec: selector: matchLabels: app.kubernetes.io/name: app-2048 replicas: 2 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 --- apiVersion: v1 kind: Service metadata: name: service-2048 spec: ports: - port: 80 targetPort: 80 protocol: TCP type: NodePort selector: app.kubernetes.io/name: app-2048

Terapkan konfigurasi ke cluster Anda:

kubectl apply -f 2048-deployment-service.yaml

Sumber daya yang tercantum di atas akan dibuat di namespace default. Anda dapat memverifikasi ini dengan menjalankan perintah berikut:

kubectl get all -n default

Langkah 2: Buat IngressClassParams

Buat IngressClassParams objek untuk menentukan opsi konfigurasi AWS tertentu untuk Application Load Balancer. Dalam contoh ini, kita membuat IngressClassParams sumber daya bernama alb (yang akan Anda gunakan pada langkah berikutnya) yang menentukan skema penyeimbang beban seperti internet-facing dalam file yang disebutalb-ingressclassparams.yaml.

apiVersion: eks.amazonaws.com/v1 kind: IngressClassParams metadata: name: alb spec: scheme: internet-facing

Terapkan konfigurasi ke cluster Anda:

kubectl apply -f alb-ingressclassparams.yaml

Langkah 3: Buat IngressClass

Buat IngressClass yang mereferensi AWS kan nilai konfigurasi tertentu yang ditetapkan dalam IngressClassParams sumber daya dalam file bernamaalb-ingressclass.yaml. Perhatikan namaIngressClass. Dalam contoh ini, keduanya IngressClass dan IngressClassParams diberi namaalb.

Gunakan an is-default-class otasi untuk mengontrol apakah Ingress sumber daya harus menggunakan kelas ini secara default.

apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb annotations: # Use this annotation to set an IngressClass as Default # If an Ingress doesn't specify a class, it will use the Default ingressclass.kubernetes.io/is-default-class: "true" spec: # Configures the IngressClass to use EKS Auto Mode controller: eks.amazonaws.com/alb parameters: apiGroup: eks.amazonaws.com kind: IngressClassParams # Use the name of the IngressClassParams set in the previous step name: alb

Untuk informasi selengkapnya tentang opsi konfigurasi, lihatIngressClassParams Referensi.

Terapkan konfigurasi ke cluster Anda:

kubectl apply -f alb-ingressclass.yaml

Langkah 4: Buat Ingress

Buat Ingress sumber daya dalam file bernamaalb-ingress.yaml. Tujuan sumber daya ini adalah untuk mengaitkan jalur dan port pada Application Load Balancer dengan beban kerja di cluster Anda. Untuk contoh ini, kita membuat Ingress sumber daya bernama 2048-ingress yang merutekan lalu lintas ke layanan bernama service-2048 pada port 80.

Untuk informasi selengkapnya tentang mengkonfigurasi sumber daya ini, lihat Ingress di Dokumentasi Kubernetes.

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: 2048-ingress spec: # this matches the name of IngressClass. # this can be omitted if you have a default ingressClass in cluster: the one with ingressclass.kubernetes.io/is-default-class: "true" annotation ingressClassName: alb rules: - http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: service-2048 port: number: 80

Terapkan konfigurasi ke cluster Anda:

kubectl apply -f alb-ingress.yaml

Langkah 5: Periksa Status

Gunakan kubectl untuk menemukan statusIngress. Diperlukan beberapa menit agar penyeimbang beban tersedia.

Gunakan nama sumber Ingress daya yang Anda tetapkan pada langkah sebelumnya. Contoh:

kubectl get ingress 2048-ingress

Setelah sumber daya siap, ambil nama domain penyeimbang beban.

kubectl get ingress 2048-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'

Untuk melihat layanan di browser web, tinjau port dan jalur yang ditentukan dalam Ingress sumber daya.

Langkah 6: Pembersihan

Untuk membersihkan penyeimbang beban, gunakan perintah berikut:

kubectl delete ingress 2048-ingress kubectl delete ingressclass alb kubectl delete ingressclassparams alb

Mode Otomatis EKS akan secara otomatis menghapus penyeimbang beban terkait di AWS akun Anda.

IngressClassParams Referensi

Tabel di bawah ini adalah referensi cepat untuk opsi konfigurasi yang umum digunakan.

Bidang Deskripsi Nilai contoh

scheme

Mendefinisikan apakah ALB bersifat internal atau menghadap ke internet

internet-facing

namespaceSelector

Membatasi ruang nama mana yang dapat menggunakan ini IngressClass

environment: prod

group.name

Mengelompokkan beberapa Ingress untuk berbagi satu ALB

retail-apps

ipAddressType

Menetapkan jenis alamat IP untuk ALB

dualstack

subnets.ids

Daftar ID subnet untuk penerapan ALB

subnet-xxxx, subnet-yyyy

subnets.tags

Filter tag untuk memilih subnet untuk ALB

Environment: prod

certificateARNs

ARN sertifikat SSL untuk digunakan

arn:aws: acm:region:account:certificate/id

tags

Tag kustom untuk AWS sumber daya

Environment: prod, Team: platform

loadBalancerAttributes

Atribut khusus penyeimbang beban

idle_timeout.timeout_seconds: 60

Pertimbangan-pertimbangan

  • Anda tidak dapat menggunakan Anotasi pada IngressClass a untuk mengkonfigurasi penyeimbang beban dengan Mode Otomatis EKS. IngressClass Konfigurasi harus dilakukan melalui IngressClassParams. Namun, Anda dapat menggunakan anotasi pada sumber daya Ingress individual untuk mengonfigurasi perilaku penyeimbang beban (seperti alb.ingress.kubernetes.io/security-group-prefix-lists ataualb.ingress.kubernetes.io/conditions.*).

  • Anda tidak dapat mengatur ListenerAttribute dengan Mode Otomatis EKS.

  • Anda harus memperbarui Peran IAM Cluster untuk mengaktifkan propagasi tag dari Kubernetes ke AWS sumber daya Load Balancer. Untuk informasi selengkapnya, lihat Khusus AWS tag untuk EKS Sumber daya otomatis.

  • Untuk informasi tentang mengaitkan sumber daya dengan Mode Otomatis EKS atau Load Balancer Controller yang dikelola sendiri AWS , lihat. Referensi migrasi

  • Untuk informasi tentang memperbaiki masalah dengan penyeimbang beban, lihatMemecahkan Masalah Mode Otomatis EKS.

  • Untuk pertimbangan lebih lanjut tentang menggunakan kemampuan penyeimbangan beban Mode Otomatis EKS, lihatPenyeimbangan beban.

Tabel berikut memberikan perbandingan rinci perubahan, anotasi Ingress IngressClassParams, dan TargetGroupBinding konfigurasi untuk Mode Otomatis EKS. Tabel ini menyoroti perbedaan utama antara kemampuan penyeimbangan beban Mode Otomatis EKS dan pengontrol penyeimbang beban sumber terbuka, termasuk perubahan versi API, fitur usang, dan nama parameter yang diperbarui.

IngressClassParams

Sebelumnya Baru Deskripsi

elbv2.k8s.aws/v1beta1

eks.amazonaws.com/v1

Perubahan versi API

spec.certificateArn

spec.certificateARNs

Dukungan untuk beberapa ARN sertifikat

spec.subnets.tags

spec.subnets.matchTags

Skema pencocokan subnet yang diubah

spec.listeners.listenerAttributes

Tidak didukung

Belum didukung oleh Mode Otomatis EKS

Anotasi Ingress

Sebelumnya Baru Deskripsi

kubernetes.io/ingress.class

Tidak didukung

Gunakan spec.ingressClassName pada objek Ingress

alb.ingress.kubernetes.io/group.name

Tidak didukung

Tentukan grup IngressClass hanya

alb.ingress.kubernetes.io/waf-acl-id

Tidak didukung

Gunakan WAF v2 sebagai gantinya

alb.ingress.kubernetes.io/web-acl-id

Tidak didukung

Gunakan WAF v2 sebagai gantinya

alb.ingress.kubernetes.io/wafv2-acl-name

Tidak didukung

Segera datang

alb.ingress.kubernetes.io/dry-run-plan

Tidak didukung

Dry-run paket saat ini tidak didukung

alb.ingress.kubernetes.io/create-acm-cert

Tidak didukung

Pembuatan sertifikat ACM saat ini tidak didukung

alb.ingress.kubernetes.io/acm-pca-arn

Tidak didukung

ACM PCA ARN saat ini tidak didukung

alb.ingress.kubernetes.io/auth-type: oidc

Tidak didukung

Jenis Auth OIDC saat ini tidak didukung

TargetGroupBinding

Sebelumnya Baru Deskripsi

elbv2.k8s.aws/v1beta1

eks.amazonaws.com/v1

Perubahan versi API

spec.targetTypeopsional

spec.targetTypediperlukan

Spesifikasi tipe target eksplisit

spec.networking.ingress.from

Tidak didukung

Tidak lagi mendukung NLB tanpa grup keamanan

Untuk menggunakan TargetGroupBinding fitur kustom, Anda harus menandai grup target dengan tag eks: eks-cluster-name dengan nama cluster untuk memberikan pengontrol izin IAM yang diperlukan. Ketahuilah bahwa pengontrol akan menghapus grup target ketika TargetGroupBinding sumber daya atau cluster dihapus.