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
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.
-
EKSCluster Amazon yang ada. Untuk menyebarkan satu, lihatMemulai dengan Amazon EKS.
-
AWS Identity and Access Management yang sudah ada (IAM) OpenID Connect (OIDC) penyedia untuk cluster Anda. Untuk menentukan apakah Anda sudah memiliki satu, atau harus membuat satu, lihat Buat sebuah IAM OIDC penyedia untuk klaster Anda.
-
Pastikan bahwa Anda Amazon VPC CNI plugin for Kubernetes,
kube-proxy
, dan CoreDNS add-on berada pada versi minimum yang tercantum dalam token akun Layanan. -
Keakraban dengan AWS Elastic Load Balancing. Untuk informasi selengkapnya, silakan lihat Panduan Pengguna Penyeimbang Beban Elastis.
-
Keakraban dengan layanan
Kubernetes dan sumber daya ingress.
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
-
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
-
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
-
-
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 gantiarn: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
-
-
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)
-
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.
-
Salin konten berikut ke perangkat Anda. Ganti
111122223333
dengan ID akun Anda. Gantiregion-code
dengan AWS Wilayah tempat cluster Anda berada. GantiEXAMPLED539D4633E53DE1B71EXAMPLE
dengan output dikembalikan pada langkah sebelumnya. Jika cluster Anda berada di AWS Wilayah AWS GovCloud (AS-Timur) atau AWS GovCloud (AS-Barat), maka gantiarn:aws:
dengan.arn:aws-us-gov:
Setelah mengganti teks, jalankan perintah yang dimodifikasi untuk membuatload-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
-
Buat IAM peran.
aws iam create-role \ --role-name AmazonEKSLoadBalancerControllerRole \ --assume-role-policy-document file://"load-balancer-role-trust-policy.json"
-
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
-
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 gantiarn:aws:
dengan.arn:aws-us-gov:
Setelah mengganti teks, jalankan perintah yang dimodifikasi untuk membuataws-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
-
Buat Kubernetes akun layanan di cluster Anda. Bagian Kubernetes nama akun layanan
aws-load-balancer-controller
dianotasi dengan IAM peran yang Anda buat bernamaAmazonEKSLoadBalancerControllerRole
.$ 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
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
-
-
Jika node Anda memiliki akses ke registri
quay.io
kontainer, instalcert-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
-
-
Instal
cert-manager
menggunakan salah satu metode berikut untuk menyuntikkan konfigurasi sertifikat ke dalam webhooks. Untuk informasi selengkapnya, lihat Memulaidi Dokumentasi manajer sertifikat. -
Unduh manifes.
curl -Lo cert-manager.yaml https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
-
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
-
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. Ganti111122223333.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
-
Terapkan manifes.
$ kubectl apply \ --validate=false \ -f ./cert-manager.yaml
-
Langkah 3: Instal AWS Load Balancer Controller
-
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
-
Lakukan pengeditan berikut ke file.
-
Jika Anda mengunduh
v2_7_2_full.yaml
file, jalankan perintah berikut untuk menghapusServiceAccount
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 ---
-
Ganti
your-cluster-name
diDeployment
spec
bagian file dengan nama cluster Anda dengan menggantimy-cluster
dengan nama cluster Anda.$ sed -i.bak -e 's|your-cluster-name|my-cluster|' ./v2_7_2_full.yaml
-
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, ubaheks/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
-
(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 [...]
-
-
Terapkan file.
$ kubectl apply -f v2_7_2_full.yaml
-
Unduh
IngressClass
danIngressClassParams
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
-
Menerapkan manifes ke klaster Anda.
$ kubectl apply -f v2_7_2_ingclass.yaml
Langkah 4: Verifikasi bahwa pengontrol diinstal
-
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.
-
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.