Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Installieren AWS Load Balancer Controller mit Manifesten
In diesem Thema wird beschrieben, wie der Controller durch Herunterladen und Anwenden installiert wird Kubernetes Manifestiert. Die vollständige Dokumentation
Ersetzen Sie in den folgenden Schritten example values
durch deine eigenen Werte.
Voraussetzungen
Bevor Sie mit diesem Tutorial beginnen, müssen Sie die folgenden Tools und Ressourcen installieren und konfigurieren, die Sie zum Erstellen und Verwalten eines EKS Amazon-Clusters benötigen.
-
Ein vorhandener EKS Amazon-Cluster. Informationen zum Bereitstellen finden Sie unter Erste Schritte mit Amazon EKS.
-
Ein bestehendes AWS Identity and Access Management (IAM) OpenID Connect (OIDC) Anbieter für Ihren Cluster. Informationen zum Feststellen, ob Sie bereits über einen verfügen oder einen erstellen müssen, finden Sie unter Erstelle eine IAM OIDC Anbieter für Ihren Cluster.
-
Stellen Sie sicher, dass Ihr Amazon VPC CNI plugin for Kubernetes,
kube-proxy
, und CoreDNS Bei den Add-Ons handelt es sich um die Mindestversionen, die unter Dienstkonto-Tokens aufgeführt sind. -
Vertrautheit mit AWS Elastic Load Balancing Weitere Informationen finden Sie im Elastic Load Balancing-Benutzerhandbuch.
-
Vertrautheit mit Kubernetes- Service
und Ingress -Ressourcen.
Schritt 1: Konfigurieren IAM
Anmerkung
Sie müssen nur eine Rolle für das erstellen AWS Load Balancer Controller eine pro AWS Konto. Prüfen Sie, ob in der IAMKonsole AmazonEKSLoadBalancerControllerRole
-
Laden Sie eine IAM Richtlinie für das herunter AWS Load Balancer Controller das ermöglicht es, in AWS APIs Ihrem Namen Anrufe zu tätigen.
- AWS
-
**
$ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy.json
- AWS GovCloud (USA)
-
**
$ 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
-
Erstellen Sie eine IAM Richtlinie mit der Richtlinie, die Sie im vorherigen Schritt heruntergeladen haben.
$ aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json
Anmerkung
Wenn Sie sich die Richtlinie in ansehen AWS Management Console, werden in der Konsole Warnungen für den ELBDienst angezeigt, nicht jedoch für den Dienst ELBv2. Das liegt daran, dass einige der Aktionen in der Richtlinie für ELBVersion 2 existieren, aber nicht für ELB. Sie können die Warnungen für ignorieren ELB.
- eksctl
-
-
Ersetzen
my-cluster
mit dem Namen Ihres Clusters111122223333
mit Ihrer Konto-ID und führen Sie dann den Befehl aus. Wenn sich Ihr Cluster in den AWS Regionen AWS GovCloud (USA-Ost) oder AWS GovCloud (US-West) befindet, ersetzen Sie ihn durcharn:aws:
.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 CLIund kubectl
-
-
Rufen Sie die Ihres Clusters ab OIDC Anbieter-ID und speichern Sie sie in einer Variablen.
oidc_id=$(aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
-
Stellen Sie fest, ob ein IAM OIDC Der Anbieter mit der ID Ihres Clusters ist bereits in Ihrem Konto enthalten. Sie benötigen OIDC konfiguriert sowohl für den Cluster als auchIAM.
aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
Wenn die Ausgabe zurückgegeben wird, haben Sie bereits eine IAM OIDC Anbieter für Ihren Cluster. Wenn keine Ausgabe zurückgegeben wird, müssen Sie eine erstellen IAM OIDC Anbieter für Ihren Cluster. Weitere Informationen finden Sie unter Erstelle eine IAM OIDC Anbieter für Ihren Cluster.
-
Kopieren Sie den folgenden Inhalt auf Ihr Gerät. Ersetzen
111122223333
mit Ihrer Konto-ID. Ersetzenregion-code
mit der AWS Region, in der sich Ihr Cluster befindet. ErsetzenEXAMPLED539D4633E53DE1B71EXAMPLE
mit der Ausgabe, die im vorherigen Schritt zurückgegeben wurde. Wenn sich Ihr Cluster in den AWS Regionen AWS GovCloud (USA-Ost) oder AWS GovCloud (US-West) befindet, ersetzen Sie ihn durcharn:aws:
.arn:aws-us-gov:
Nachdem Sie den Text ersetzt haben, führen Sie den geänderten Befehl aus, um die Dateiload-balancer-role-trust-policy.json
zu erstellen.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
-
Erstellen Sie die RolleIAM.
aws iam create-role \ --role-name AmazonEKSLoadBalancerControllerRole \ --assume-role-policy-document file://"load-balancer-role-trust-policy.json"
-
Hängen Sie die erforderliche von Amazon EKS verwaltete IAM Richtlinie an die IAM Rolle an. Ersetzen
111122223333
mit Ihrer Konto-ID.aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --role-name AmazonEKSLoadBalancerControllerRole
-
Kopieren Sie den folgenden Inhalt auf Ihr Gerät. Ersetzen
111122223333
mit Ihrer Konto-ID. Wenn sich Ihr Cluster in den AWS Regionen AWS GovCloud (USA-Ost) oder AWS GovCloud (US-West) befindet, ersetzen Sie ihn durcharn:aws:
.arn:aws-us-gov:
Nachdem Sie den Text ersetzt haben, führen Sie den geänderten Befehl aus, um die Dateiaws-load-balancer-controller-service-account.yaml
zu erstellen.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
-
Erstellen Sie den Kubernetes Dienstkonto auf Ihrem Cluster. Das Tool Kubernetes Das Dienstkonto mit dem Namen
aws-load-balancer-controller
ist mit der IAM Rolle versehen, die Sie mit dem Namen erstellt habenAmazonEKSLoadBalancerControllerRole
.$ kubectl apply -f aws-load-balancer-controller-service-account.yaml
-
Schritt 2: Installieren cert-manager
Installieren Sie cert-manager
mit einer der beiden folgenden Methoden, um die Zertifikatskonfiguration in die Webhooks einzufügen. Weitere Informationen finden Sie unter Erste Schritte
Wir empfehlen, für die Installation die quay.io
Container-Registry zu verwenden. cert-manager
Wenn Ihre Knoten keinen Zugriff auf die quay.io
Container-Registry haben, installieren Sie die Installation cert-manager
über Amazon ECR (siehe unten).
- Quay.io
-
-
Wenn die Knoten Zugriff auf die
quay.io
-Container-Registry haben, installieren Siecert-manager
, um die Zertifikatskonfiguration in die Webhooks einzufügen.$ kubectl apply \ --validate=false \ -f https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
-
- Amazon ECR
-
-
Installieren Sie
cert-manager
mit einer der beiden folgenden Methoden, um die Zertifikatskonfiguration in die Webhooks einzufügen. Weitere Informationen finden Sie unter Erste Schrittein der cert-manager-Dokumentation. -
Laden Sie das Manifest herunter.
curl -Lo cert-manager.yaml https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
-
Rufen Sie die folgenden Images ab und verschieben Sie sie in ein Repository, auf das die Knoten Zugriff haben. Weitere Informationen zum Abrufen, Markieren und Verschieben der Images in ein eigenes Repository finden Sie unter Kopieren eines Container-Images von einem Repository in ein anderes.
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
-
Ersetzen Sie
quay.io
im Manifest für die drei Images durch den Namen Ihrer eigenen Registrierung. Der folgende Befehl geht davon aus, dass der Name Ihres privaten Repositorys mit dem Namen des Quell-Repositorys identisch ist. Ersetzen111122223333.dkr.ecr.region-code.amazonaws.com
mit Ihrer privaten Registrierung.$ sed -i.bak -e 's|quay.io|111122223333.dkr.ecr.region-code.amazonaws.com|' ./cert-manager.yaml
-
Das Manifest anwenden.
$ kubectl apply \ --validate=false \ -f ./cert-manager.yaml
-
Schritt 3: Installieren AWS Load Balancer Controller
-
Laden Sie die Controller-Spezifikation herunter. Weitere Informationen zum Controller finden Sie in der Dokumentation
unter 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
-
Nehmen Sie die folgenden Änderungen an der Datei vor.
-
Wenn Sie die Datei
v2_7_2_full.yaml
heruntergeladen haben, führen Sie den folgenden Befehl aus, um den AbschnittServiceAccount
im Manifest zu entfernen. Wenn Sie diesen Abschnitt nicht entfernen, wird die erforderliche Anmerkung, die Sie in einem vorherigen Schritt zum Dienstkonto gemacht haben, überschrieben. Außerdem wird durch das Entfernen dieses Abschnitts das in einem vorherigen Schritt erstellte Servicekonto beibehalten, wenn Sie den Controller löschen.$ sed -i.bak -e '612,620d' ./v2_7_2_full.yaml
Wenn Sie eine andere Dateiversion heruntergeladen haben, öffnen Sie die Datei in einem Editor und entfernen Sie die folgenden Zeilen.
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 ---
-
Ersetzen Sie
your-cluster-name
denDeployment
spec
Abschnitt der Datei durch den Namen Ihres Clusters, indem Siemy-cluster
mit dem Namen Ihres Clusters.$ sed -i.bak -e 's|your-cluster-name|my-cluster|' ./v2_7_2_full.yaml
-
Wenn Ihre Knoten keinen Zugriff auf die EKS Amazon ECR Amazon-Image-Repositorys haben, müssen Sie das folgende Image abrufen und in ein Repository übertragen, auf das Ihre Knoten Zugriff haben. Weitere Informationen zum Abrufen, Markieren und Verschieben von Images in ein eigenes Repository finden Sie unter Kopieren eines Container-Images von einem Repository in ein anderes.
public.ecr.aws/eks/aws-load-balancer-controller:v2.7.2
Fügen Sie dem Manifest den Namen Ihrer Registrierung hinzu. Der folgende Befehl geht davon aus, dass der Name Ihres privaten Repositorys mit dem Namen des Quell-Repositorys übereinstimmt, und fügt der Datei den Namen Ihrer privaten Registrierung hinzu. Ersetzen
111122223333.dkr.ecr.region-code.amazonaws.com
mit Ihrer Registrierung. In dieser Zeile wird davon ausgegangen, dass Sie Ihr privates Repository genauso benannt haben wie das Quell-Repository. Andernfalls ändern Sie den Texteks/aws-load-balancer-controller
nach den Namen Ihrer privaten Registrierung in den Namen Ihres Repositorys.$ 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
-
(Nur für Fargate oder Restricted IMDS erforderlich)
Wenn Sie den Controller auf EC2 Amazon-Knoten bereitstellen, die eingeschränkten Zugriff auf den EC2 Amazon-Instance-Metadatenservice (IMDS)
haben, oder wenn Sie ihn auf Fargate bereitstellen, fügen Sie das following parameters
unter- args:
hinzu.[...] spec: containers: - args: - --cluster-name=your-cluster-name - --ingress-class=alb - --aws-vpc-id=vpc-xxxxxxxx - --aws-region=region-code [...]
-
-
Wenden Sie die Datei an.
$ kubectl apply -f v2_7_2_full.yaml
-
Laden Sie das
IngressClass
- undIngressClassParams
-Manifest in Ihren Cluster herunter.$ 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
-
Wenden Sie das Manifest auf Ihren Cluster an.
$ kubectl apply -f v2_7_2_ingclass.yaml
Schritt 4: Stellen Sie sicher, dass der Controller installiert ist
-
Stellen Sie sicher, dass der Controller installiert ist.
$ kubectl get deployment -n kube-system aws-load-balancer-controller
Eine Beispielausgabe sieht wie folgt aus.
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s
Sie erhalten die vorherige Ausgabe, wenn Sie mit Helm bereitgestellt haben. Wenn Sie die Bereitstellung mit dem Kubernetes Manifest, Sie haben nur ein Replikat.
-
Bevor Sie den Controller zur Bereitstellung von AWS Ressourcen verwenden können, muss Ihr Cluster bestimmte Anforderungen erfüllen. Weitere Informationen erhalten Sie unter Weiterleiten von Anwendungen und HTTP Datenverkehr mit Application Load Balancers und Route TCP und UDP Verkehr mit Network Load Balancers.