Anwendungen vom veralteten ALB Ingress Controller migrieren - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.

Anwendungen vom veralteten ALB Ingress Controller migrieren

In diesem Thema wird die Migration von veralteten Controller-Versionen beschrieben. Genauer gesagt wird beschrieben, wie Sie veraltete Versionen des AWS Load Balancer Controllers entfernen.

  • Veraltete Versionen können nicht aktualisiert werden. Sie müssen diese zuerst entfernen und dann eine aktuelle Version installieren.

  • Zu den veralteten Versionen gehören:

    • AWS ALB Ingress Controller für Kubernetes („Ingress Controller“), ein Vorgänger des AWS Load Balancer Controller.

    • Jede 0.1.x -Version des AWS Load Balancer Controllers

Veraltete Controller-Version entfernen

Anmerkung

Möglicherweise haben Sie die veraltete Version mit Helm oder manuell mit Kubernetes-Manifesten installiert. Führen Sie den Vorgang mit dem Tool aus, mit dem Sie ihn ursprünglich installiert haben.

  1. Wenn Sie das incubator/aws-alb-ingress-controller-Helm-Chart installiert haben, deinstallieren Sie es.

    helm delete aws-alb-ingress-controller -n kube-system
  2. Wenn Sie Version 0.1.x des eks-charts/aws-load-balancer-controller-Charts installiert haben, deinstallieren Sie es. Das Upgrade von 0.1.x auf Version 1.0.0 funktioniert nicht, da die Webhook-API-Version inkompatibel ist.

    helm delete aws-load-balancer-controller -n kube-system
  3. Überprüfen Sie, ob der Controller derzeit installiert ist.

    kubectl get deployment -n kube-system alb-ingress-controller

    Dies ist die Ausgabe, falls der Controller nicht installiert ist.

    Error from server (NotFound): deployments.apps "alb-ingress-controller" not found

    Dies ist die Ausgabe, falls der Controller installiert ist.

    NAME READY UP-TO-DATE AVAILABLE AGE alb-ingress-controller 1/1 1 1 122d
  4. Geben Sie die folgenden Befehle ein, um den Controller zu entfernen.

    kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/alb-ingress-controller.yaml kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/rbac-role.yaml

Migration zum AWS Load Balancer Controller

Um vom ALB Ingress Controller für Kubernetes zum AWS Load Balancer Controller zu migrieren, müssen Sie Folgendes tun:

  1. Entfernen Sie den ALB Ingress Controller (siehe oben).

  2. Installieren Sie den AWS Load Balancer Controller.

  3. Fügen Sie der vom AWS Load Balancer Controller verwendeten IAM-Rolle eine zusätzliche Richtlinie hinzu. Diese Richtlinie ermöglicht es dem LBC, die vom ALB Ingress Controller für Kubernetes erstellten Ressourcen zu verwalten.

  4. Laden Sie die IAM-Richtlinie herunter. Diese Richtlinie ermöglicht es dem AWS Load Balancer Controller, die vom ALB Ingress Controller für Kubernetes erstellten Ressourcen zu verwalten. Sie können auch die Richtlinie anzeigen.

    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.13.3/docs/install/iam_policy_v1_to_v2_additional.json
  5. Wenn sich Ihr Cluster in den arn:aws: AWS GovCloud (USA Ost) oder AWS GovCloud (USA West) befindet, ersetzen Sie AWS durch arn:aws-us-gov:.

    sed -i.bak -e 's|arn:aws:|arn:aws-us-gov:|' iam_policy_v1_to_v2_additional.json
  6. Erstellen Sie die IAM-Richtlinie und notieren Sie den zurückgegebenen ARN.

    aws iam create-policy \ --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy \ --policy-document file://iam_policy_v1_to_v2_additional.json
  7. Fügen Sie die IAM-Richtlinie der IAM-Rolle hinzu, die vom AWS Load Balancer Controller verwendet wird. Ersetzen Sie your-role-name durch den Namen der Rolle, z. B. AmazonEKSLoadBalancerControllerRole.

    Wenn Sie die Rolle mit eksctl erstellt haben, öffnen Sie zur Suche nach dem erstellten Rollennamen die AWS-CloudFormation-Konsole und wählen Sie den Stack eksctl-my-cluster-addon-iamserviceaccount-kube-system-aws-load-balancer-controller aus. Wählen Sie die Registerkarte für Resources (Ressourcen). Der Rollenname befindet sich in der Spalte Physische ID.

    aws iam attach-role-policy \ --role-name your-role-name \ --policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerAdditionalIAMPolicy