Menginstal AWS Load Balancer Controller dengan manifes - Amazon EKS

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

Menginstal AWS Load Balancer Controller dengan manifes

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

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

Prasyarat

Sebelum memulai tutorial ini, Anda harus menginstal dan mengkonfigurasi alat dan sumber daya berikut yang Anda butuhkan untuk membuat dan mengelola EKS cluster Amazon.

Langkah 1: Konfigurasikan IAM

catatan

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

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

    AWS

    **

$ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy.json
AWS GovCloud (AS)

**

$ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy_us-gov.json
$ mv iam_policy_us-gov.json iam_policy.json
  1. Buat IAM kebijakan menggunakan kebijakan yang diunduh pada 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 ELBlayanan, tetapi tidak untuk layanan ELBv2. Ini terjadi karena beberapa tindakan dalam kebijakan ada untuk ELBv2, 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. Jika cluster Anda berada di AWS Wilayah AWS GovCloud (AS-Timur) atau AWS GovCloud (AS-Barat), maka ganti arn:aws: dengan. arn:aws-us-gov:

      $ 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 CLIdan kubectl
    1. Ambil klaster Anda OIDC ID penyedia dan menyimpannya 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 IAM OIDC penyedia dengan ID klaster Anda sudah ada di akun Anda. Anda membutuhkan OIDC dikonfigurasi untuk cluster danIAM.

      aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4

      Jika output dikembalikan, maka Anda sudah memiliki IAM OIDC penyedia untuk cluster Anda. Jika tidak ada output yang dikembalikan, maka Anda harus membuat IAM OIDC penyedia untuk cluster Anda. Untuk informasi selengkapnya, lihat Buat sebuah IAM OIDC penyedia 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 dikembalikan pada langkah sebelumnya. Jika cluster Anda berada di AWS Wilayah AWS GovCloud (AS-Timur) atau AWS GovCloud (AS-Barat), maka ganti arn:aws: dengan. arn:aws-us-gov: Setelah mengganti teks, jalankan perintah yang dimodifikasi untuk membuat load-balancer-role-trust-policy.json file.

      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 IAM peran.

      aws iam create-role \ --role-name AmazonEKSLoadBalancerControllerRole \ --assume-role-policy-document file://"load-balancer-role-trust-policy.json"
    5. Lampirkan IAM kebijakan EKS terkelola Amazon yang diperlukan ke IAM peran tersebut. 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. Jika cluster Anda berada di AWS Wilayah AWS GovCloud (AS-Timur) atau AWS GovCloud (AS-Barat), maka ganti arn:aws: dengan. arn:aws-us-gov: 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 Kubernetes akun layanan di cluster Anda. Bagian Kubernetes nama akun layanan aws-load-balancer-controller dianotasi dengan IAM peran 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 webhooks. 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 webhooks. 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_7_2_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_full.yaml
  2. Lakukan pengeditan berikut ke file.

    1. Jika Anda mengunduh v2_7_2_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 '612,620d' ./v2_7_2_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_7_2_full.yaml
    3. Jika node Anda tidak memiliki akses ke repositori ECR gambar EKS Amazon Amazon, 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.7.2

      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_7_2_full.yaml
    4. (Diperlukan hanya untuk Fargate atau Dibatasi) IMDS

      Jika Anda menerapkan pengontrol ke EC2 node Amazon yang membatasi akses ke layanan metadata EC2 instans Amazon (IMDS), atau jika Anda menerapkan ke Fargate, 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_7_2_full.yaml
  4. Unduh IngressClass dan IngressClassParams manifes ke cluster Anda.

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

    $ kubectl apply -f v2_7_2_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 menerapkan menggunakan Kubernetes manifes, 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 HTTP lalu lintas dengan Application Load Balancers dan Rute TCP dan UDP lalu lintas dengan Network Load Balancers.