Instal AWS Load Balancer Controller dengan manifes - Amazon EKS

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.

Instal AWS Load Balancer Controller dengan manifes

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.

Topik ini menjelaskan cara menginstal controller dengan mengunduh dan menerapkan manifes Kubernetes. Anda dapat melihat dokumentasi lengkap untuk pengontrol aktif GitHub.

Pada langkah-langkah berikut, ganti example values dengan nilai-nilai Anda sendiri.

Prasyarat

Sebelum memulai tutorial ini, Anda harus menginstal dan mengonfigurasi alat-alat dan sumber daya yang Anda butuhkan berikut untuk membuat dan mengelola sebuah klaster Amazon EKS.

Langkah 1: Konfigurasikan IAM

catatan

Anda hanya perlu membuat peran untuk AWS Load Balancer Controller satu per AWS akun. Periksa apakah AmazonEKSLoadBalancerControllerRole ada di Konsol IAM. Jika peran ini ada, lewati ke Langkah 2: Instal cert-manager.

catatan

Contoh di bawah ini mengacu pada versi rilis AWS Load Balancer Controller v2.11.0. Untuk informasi selengkapnya tentang semua rilis, lihat Halaman Rilis AWS Load Balancer Controller di. GitHub

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

    AWS
    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/install/iam_policy.json
    AWS GovCloud (US)
    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/install/iam_policy_us-gov.json
    mv iam_policy_us-gov.json iam_policy.json
  2. 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 AWS Management Console, 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.

eksctl
  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
AWS CLI and kubectl
  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)
  2. 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.

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

    cat >load-balancer-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws: iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-load-balancer-controller" } } } ] } EOF
  4. Buat peran IAM.

    aws iam create-role \ --role-name AmazonEKSLoadBalancerControllerRole \ --assume-role-policy-document file://"load-balancer-role-trust-policy.json"
  5. 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
  6. 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
  7. 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

Instal cert-manager menggunakan salah satu metode berikut untuk menyuntikkan konfigurasi sertifikat ke dalam webhook. Untuk informasi selengkapnya, lihat Memulai di Dokumentasi manajer sertifikat.

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

Quay.io
  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
Amazon ECR
  1. Instal cert-manager menggunakan salah satu metode berikut untuk menyuntikkan konfigurasi sertifikat ke dalam webhook. Untuk informasi selengkapnya, lihat Memulai di Dokumentasi manajer sertifikat.

  2. Unduh manifes.

    curl -Lo cert-manager.yaml https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
  3. 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

    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
  4. 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
  5. Terapkan manifes.

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

Langkah 3: Instal AWS Load Balancer Controller

  1. Unduh spesifikasi pengendali. Untuk informasi selengkapnya tentang pengontrol, lihat dokumentasi di GitHub.

    curl -Lo v2_11_0_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.11.0/v2_11_0_full.yaml
  2. Lakukan pengeditan berikut ke file.

    1. Jika Anda mengunduh v2_11_0_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 '690,698d' ./v2_11_0_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 ---
    2. 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_11_0_full.yaml
    3. 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

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

      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_11_0_full.yaml
    4. (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 bawah. following parameters - args:

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

    kubectl apply -f v2_11_0_full.yaml
  4. Unduh IngressClass dan IngressClassParams manifes ke cluster Anda.

    curl -Lo v2_11_0_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.11.0/v2_11_0_ingclass.yaml
  5. Menerapkan manifes ke klaster Anda.

    kubectl apply -f v2_11_0_ingclass.yaml

Langkah 4: Verifikasi bahwa pengontrol diinstal

  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.

  2. Sebelum menggunakan pengontrol untuk menyediakan AWS sumber daya, klaster Anda harus memenuhi persyaratan tertentu. Untuk informasi selengkapnya, silakan lihat Rute aplikasi dan lalu lintas HTTP dengan Application Load Balancers dan Rute lalu lintas TCP dan UDP dengan Network Load Balancers.