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 Anda 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 apa pun 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 dari 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 berikut mencantumkan bidang yang dapat Anda tetapkan dalam IngressClassParams sumber daya. Pengaturan berlaku untuk semua Ingress yang menggunakan. IngressClass

Bidang Deskripsi Nilai contoh

scheme

Mendefinisikan apakah ALB bersifat internal atau menghadap ke internet

internet-facing

loadBalancerName

Menetapkan nama ALB. Nama bisa maksimal 32 karakter. Mengganti an alb.ingress.kubernetes.io/load-balancer-name otasi.

my-alb

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. Nilai yang valid adalah ipv4, dualstack, dan dualstack-without-public-ipv4.

dualstack

subnets.ids

Daftar ID subnet untuk penerapan ALB

subnet-xxxx, subnet-yyyy

subnets.matchTags

Filter tag untuk memilih subnet untuk ALB. Setiap filter memiliki daftar key dan daftarvalues.

key: Environment, values: [prod]

certificateARNs

ARN sertifikat SSL untuk digunakan

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

sslPolicy

Menetapkan kebijakan keamanan untuk pendengar HTTPS. Mengganti an alb.ingress.kubernetes.io/ssl-policy otasi.

ELBSecurityPolicy-TLS13-1-2-2021-06

inboundCIDRs

Blok CIDR yang diizinkan untuk mengakses ALB. Mengganti an alb.ingress.kubernetes.io/inbound-cidrs otasi.

10.0.0.0/16, 192.168.0.0/24

prefixListsIDs

ID daftar awalan terkelola yang diizinkan untuk mengakses ALB. Mengganti an alb.ingress.kubernetes.io/security-group-prefix-lists otasi.

pl-00000000, pl-11111111

targetType

Menetapkan jenis target untuk kelompok sasaran. Nilai yang valid adalah instance dan ip. Default adalah ip.

instance

tags

Tag kustom untuk AWS sumber daya

Environment: prod, Team: platform

loadBalancerAttributes

Atribut khusus penyeimbang beban

idle_timeout.timeout_seconds: 60

listeners

Menetapkan atribut pendengar pada pendengar yang ditentukan Ingresses Anda. Setiap entri cocok dengan pendengar oleh port dan protocol (HTTPatauHTTPS) dan daftar attributes sebagai key dan ber value pasangan. Bidang ini tidak membuat pendengar. Mengganti alb.ingress.kubernetes.io/listener-attributes.${Protocol}-${Port} anotasi untuk kunci atribut yang sama.

port: 443, protocol: HTTPS, attributes: routing.http.response.server.enabled: "false"

minimumLoadBalancerCapacity.capacityUnits

Mencadangkan kapasitas minimum untuk ALB, dalam unit kapasitas penyeimbang beban (LCU). Setel 0 ke untuk menghapus reservasi. Mengganti an alb.ingress.kubernetes.io/minimum-load-balancer-capacity otasi.

1000

ipamConfiguration.ipv4IPAMPoolId

ID kumpulan Amazon VPC IP Address Manager (IPAM) yang digunakan ALB yang menghadap ke internet untuk alamat IPv4 publiknya. Mengganti an alb.ingress.kubernetes.io/ipam-ipv4-pool-id otasi.

ipam-pool-0123456789abcdef0

Pertimbangan-pertimbangan

  • Anda tidak dapat menggunakan Anotasi pada IngressClass a untuk mengonfigurasi 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.*).

  • Untuk mengatur ListenerAttribute nilai untuk semua Ingress dalam sebuah IngressClass, gunakan listeners bidang di IngressClassParams. Untuk informasi selengkapnya, lihat IngressClassParams Referensi.

  • 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 Pengontrol Penyeimbang B AWS eban yang dikelola sendiri, 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 yang tidak digunakan lagi, 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

spec.listeners.attributes

Bidang berganti nama untuk atribut pendengar

spec.PrefixListsIDs

spec.prefixListsIDs

Hanya prefixListsIDs ejaan yang didukung

spec.sslRedirectPort

Tidak didukung

Gunakan alb.ingress.kubernetes.io/ssl-redirect anotasi pada objek Ingress

spec.wafv2AclArn

Tidak didukung

Gunakan alb.ingress.kubernetes.io/wafv2-acl-arn anotasi pada objek Ingress

spec.wafv2AclName

Tidak didukung

Gunakan alb.ingress.kubernetes.io/wafv2-acl-name anotasi pada objek Ingress

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/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

Didukung dengan RBAC tambahan

Berikan get akses pengontrol penyeimbang beban ke OID Secret C. Untuk informasi selengkapnya, lihat Berikan akses pengontrol penyeimbang beban Mode Otomatis EKS ke Rahasia tertentu.

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.