New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Wie richte ich einen Application Load Balancer durch den AWS Load Balancer Controller auf einer Amazon EC2-Knotengruppe in Amazon EKS ein?
Ich möchte einen Application Load Balancer durch den AWS Load Balancer Controller auf einer Amazon Elastic Compute Cloud (Amazon EC2)-Knotengruppe in Amazon Elastic Kubernetes Service (Amazon EKS) einrichten.
Kurzbeschreibung
Verbinden Sie den AWS Load Balancer Controller mit einem der folgenden AWS-Serviceendpunkte:
- AWS Identity and Access Management (IAM)
- Amazon EC2
- AWS Certificate Manager (ACM)
- Elastic Load Balancing (ELB)
- Amazon Cognito
- AWS WAF
- AWS Shield
Damit der AWS Load Balancer Controller funktioniert, müssen Sie über eine ausgehende Internetverbindung verfügen. Weitere Informationen finden Sie unter Wie konfiguriere ich meine Subnetze für einen Amazon EKS-Cluster?
Informationen zur Bereitstellung des AWS Load Balancer Controllers auf AWS Fargate finden Sie unter Wie richte ich den AWS Load Balancer Controller auf einem Amazon EKS-Cluster für Fargate ein und stelle das 2048-Spiel bereit?
Behebung
Subnetze markieren, um die automatische Erkennung zu ermöglichen
Markieren Sie die Amazon Virtual Private Cloud (Amazon VPC) -Subnetze in Ihrem Amazon EKS-Cluster. Dadurch kann Ihr AWS Load Balancer Controller automatisch Subnetze erkennen, wenn Sie die Application Load Balancer-Ressource erstellen.
Für öffentliche Application Load Balancers müssen Sie in der VPC des Clusters mindestens zwei öffentliche Subnetze mit den folgenden Markierungen haben:
kubernetes.io/role/elb
Für interne Application Load Balancers müssen Sie in der VPC des Clusters mindestens zwei private Subnetze mit den folgenden Markierungen haben:
kubernetes.io/role/internal-elb
Erstellen eines OIDC-Identitätsanbieters für den Cluster
Verwenden Sie entweder eksctl oder die AWS-Managementkonsole, um einen OpenID Connect (OIDC)-Identitätsanbieter zu erstellen, der mit IAM-Rollen für Dienstkonten verwendet werden kann.
**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.
Oder verwenden Sie die AWSL CLI, um einen OIDC-Identitätsanbieter für den Cluster zu erstellen. Zum Beispiel:
ISSUER_URL=$(aws eks describe-cluster --name cluster-name \ --query "cluster.identity.oidc.issuer" --region region-name --output text) aws iam create-open-id-connect-provider \ --url ${ISSUER_URL} \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region region-name
Hinweis: Ersetzen Sie cluster-name durch den Namen Ihres Clusters, region-name durch Ihre AWS-Region und ca-thumbprint durch den Fingerabdruck Ihres von der Stammzertifizierungsstelle ausgestellten Zertifikats. Sie können den Fingerabdruck des Zertifikats der Stammzertifizierungsstelle, das Ihr Cluster verwendet, mit oidc.eks.region-name.amazonaws.com abrufen.
Erstellen einer IAM-Richtlinie für den AWS Load Balancer Controller
Die Amazon EKS-Richtlinie, die Sie erstellen, ermöglicht es dem AWS Load Balancer Controller, Aufrufe an AWS-APIs zu tätigen. Wenn Sie Zugriff auf AWS-APIs gewähren, ist es eine bewährte Praxis, AWS IAM-Rollen für Servicekonten zu verwenden.
-
Laden Sie eine IAM-Richtlinie für den AWS Load Balancer Controller von GitHub herunter. Führen Sie einen der folgenden Befehle für Ihre Region aus.
Alle Regionen außer den Regionen Chinas:ISSUER_URL=$(aws eks describe-cluster --name cluster-name \ --query "cluster.identity.oidc.issuer" --region region-name --output text) aws iam create-open-id-connect-provider \ --url ${ISSUER_URL} \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region region-name
Peking und Ningxia, Regionen Chinas:
curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_cn.json
-
Führen Sie den folgenden Befehl aus, um eine IAM-Richtlinie mit dem Namen AWSLoadBalancerControllerIAMPolicy für das Worker-Knoten-Instanceprofil zu erstellen:
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam-policy.json
-
Notieren Sie sich den ARN der Richtlinie, der in der Ausgabe zurückgegeben wird.
-
Verwenden Sie die vorhandene IAM-Rolle oder erstellen Sie eine neue IAM-Rolle für den AWS Load Balancer Controller.
Hinweis: Um mit eksctl eine IAM-Rolle zu erstellen, verwenden Sie den Parameter -attach-policy-am mit dem ARN der IAM-Richtlinie AWSLoadBalancerControllerIAMPolicy. -
Führen Sie den folgenden Befehl aus, um AWSLoadBalancerControllerIAMPolicy anzuhängen:
aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --role-name role-name
Hinweis: Ersetzen Sie 111122223333 durch die AWS-Konto-ID und role-name durch den Namen Ihrer IAM-Rolle.
Bereitstellen des AWS Load Balancer Controllers
-
Stellen Sie sicher, dass Sie über die erforderlichen Markierungen für den Load Balancer verfügen, der Ihren Subnetzen zugeordnet ist.
-
Installieren Sie cert-manager, damit Sie die Zertifikatskonfiguration in die Webhooks einfügen können. Verwenden Sie Kubernetes 1.16 oder höher, um den folgenden Befehl auszuführen:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/$VERSION/cert-manager.yaml
-
Führen Sie in der Manifestdatei, die Sie von GitHub heruntergeladen haben, den folgenden Befehl aus:
curl -Lo ingress-controller.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/$VERSION/v2_6_2_full.yaml
Hinweis: Ersetzen Sie $VERSION durch die AWS Load Balancer Controller-Version, die Sie bereitstellen möchten, und ändern Sie den Dateinamen, z. B. v2_6_2_full.yaml für v2.6.2. Weitere Informationen finden Sie unter Das Kubernetes-Repository auf GitHub.
-
Bearbeiten Sie cluster-name für Ihren Cluster. Zum Beispiel:
spec: containers: - args: - --cluster-name=your-cluster-name # edit the cluster name - --ingress-class=alb
-
Aktualisieren Sie nur den Abschnitt ServiceAccount der Datei. Zum Beispiel:
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller annotations: # Add the annotations line eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/role-name # Add the IAM role name: aws-load-balancer-controller namespace: kube-system
Hinweis: Ersetzen Sie 111122223333 durch die AWS-Konto-ID und role-name durch den Namen Ihrer IAM-Rolle.
-
Führen Sie den folgenden Befehl aus, um den AWS Load Balancer Controller bereitzustellen:
kubectl apply -f ingress-controller.yaml
Stellen Sie eine Beispielanwendung bereit, um den AWS Load Balancer Controller zu testen
Stellen Sie eine Beispielanwendung bereit, um zu prüfen, ob der AWS Load Balancer Controller aufgrund des Eingangsobjekts einen öffentlichen Application Load Balancer erstellt.
- Führen Sie den folgenden Befehl aus, um ein Spiel namens 2048 als Beispielanwendung bereitzustellen:
Hinweis: Ersetzen Sie $VERSION durch die Version (von der GitHub-Website von Kubernetes SIGs) des AWS Load Balancer Controllers, den Sie bereitstellen möchten.kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$VERSION/docs/examples/2048/2048_full.yaml
- Warten Sie einige Minuten, um zu prüfen, ob die Eingangsressource erstellt wurde, und führen Sie dann den folgenden Befehl aus:
Sie erhalten eine Ausgabe, die der folgenden ähnelt:kubectl get ingress/ingress-2048 -n game-2048
NAME CLASS HOSTS ADDRESS PORTS AGEingress-2048 <none> * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com 80 2m32s
- Wenn der Eingang nach einigen Minuten Wartezeit nicht erstellt wurde, führen Sie den folgenden Befehl aus, um die Protokolle des AWS Load Balancer Controllers einzusehen:
Hinweis: In den Protokollen des AWS Load Balancer Controllers werden oft Fehlermeldungen angezeigt, die Ihnen bei der Behebung von Problemen mit Ihrer Bereitstellung helfen können.kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller
- Um die Beispielanwendung zu sehen, öffnen Sie einen Webbrowser und wechseln Sie dann in Schritt 2 zur URL-Adresse aus der Ausgabe.
- Führen Sie den folgenden Befehl aus, um die Beispielanwendung zu bereinigen:
Hinweis: Ersetzen Sie $VERSION durch die Version (von der GitHub-Website von Kubernetes SIGs) des AWS Load Balancer Controllers, den Sie bereitstellen möchten.kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$VERSION/docs/examples/2048/2048_full.yaml
Ähnliche Informationen

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr