Anforderungen an private Cluster - Amazon EKS

Anforderungen an private Cluster

In diesem Thema wird beschrieben, wie Sie einen privaten Amazon-EKS-Cluster ohne ausgehenden Internetzugang bereitstellen. Wenn Sie mit dem Amazon-EKS-Netzwerk nicht vertraut sind, finden Sie unter Entmystifizierung von Cluster-Netzwerken für Amazon EKS-Worker-Knoten.

Voraussetzungen

Die folgenden Anforderungen müssen erfüllt sein, um Amazon EKS in einem privaten Cluster ohne ausgehenden Internetzugang auszuführen.

  • Ein Container-Image muss sich in Amazon Elastic Container Registry (Amazon ECR) oder in eine Registry innerhalb der VPC befinden oder in diese kopiert werden, um abgerufen zu werden. Weitere Informationen finden Sie unter Erstellen lokaler Kopien von Container-Abbildern.

  • Der Endpunkt für privaten Zugriff ist erforderlich, damit sich Knoten beim Cluster-Endpunkt registrieren können. Der Endpunkt für öffentlichen Zugriff ist optional. Weitere Informationen finden Sie unter Zugriffskontrolle für den Amazon-EKS-Cluster-Endpunkt.

  • Für Linux- und Windows-Knoten müssen Sie Bootstrap-Argumente einfügen, wenn Sie selbstverwaltete Knoten starten. Dieser Text umgeht die Amazon-EKS-Introspektion und erfordert keinen Zugriff auf die Amazon-EKS-API innerhalb der VPC. Ersetzen Sie api-server-endpoint und certificate-authority durch die Werte aus Ihrem Amazon-EKS-Cluster.

    • Für Linux-Knoten:

      --apiserver-endpoint api-server-endpoint --b64-cluster-ca certificate-authority

      Weitere Argumente finden Sie im Bootstrap-Skript auf GitHub.

    • Für Windows-Knoten:

      -APIServerEndpoint api-server-endpoint -Base64ClusterCA certificate-authority

      Weitere Argumente finden Sie unter Amazon-EKS-optimiertes Windows-AMI.

  • Die aws-auth-ConfigMap muss in der VPC erstellt werden. Weitere Informationen zum Erstellen der aws-auth-ConfigMap finden Sie unter Aktivieren des IAM-Benutzer- und Rollenzugriffs auf Ihren Cluster.

Überlegungen

Im Folgenden sind einige Dinge zu beachten, wenn Sie Amazon EKS in einem privaten Cluster ohne ausgehenden Internetzugang ausführen.

  • Viele AWS-Services unterstützen private Cluster, Sie müssen jedoch einen -VPC-Endpunkt verwenden. Weitere Informationen finden Sie unter VPC-Endpunkte. Dies sind einige der häufig verwendeten Services und Endpunkte:

    Service Endpunkt
    Amazon Elastic Container Registry com.amazonaws.region-code.ecr.api und com.amazonaws.region-code.ecr.dkr und der Amazon-S3-Gateway-Endpunkt
    Application Load Balancer und Network Load Balancer com.amazonaws.region-code.elasticloadbalancing
    AWS X-Ray com.amazonaws.region-code.xray
    Amazon CloudWatch Logs com.amazonaws.region-code.logs
    IAM-Rollen für Servicekonten

    com.amazonaws.region-code.sts

    App Mesh

    • Der App-Mesh-Sidecar-Injector für Kubernetes wird unterstützt. Weitere Informationen finden Sie unter App-Mesh-Sidecar-Injector auf GitHub.

    • Der App-Mesh-Controller für Kubernetes wird nicht unterstützt. Weitere Informationen finden Sie unter App-Mesh-Controller auf GitHub.

    • Cluster Autoscaler wird unterstützt. Stellen Sie beim Bereitstellen von Cluster-Autoscaler-Pods sicher, dass die Befehlszeile --aws-use-static-instance-list=true enthält. Weitere Informationen finden Sie unter Verwenden der statischen Instance-Liste auf GitHub. Die Worker-Knoten-VPC muss auch den STS-VPC-Endpunkt und den Auto-Scaling-VPC-Endpunkt enthalten.

    com.amazonaws.region-code.appmesh-envoy-management
  • Vor der Bereitstellung von Amazon EFS-CSI-Treiber muss die Datei kustomization.yaml so geändert werden, dass die Container-Images dieselbe AWS-Region wie der Amazon-EKS-Cluster nutzen.

  • Selbstverwaltete und verwaltete Knoten werden unterstützt. Die Instances für Knoten müssen Zugriff auf die VPC-Endpunkte haben. Wenn Sie eine verwaltete Knotengruppe erstellen, muss die VPC-Endpunkt-Sicherheitsgruppe CIDR für die Subnetze zulassen, oder Sie müssen die erstellte Knoten-Sicherheitsgruppe zur VPC-Endpunkt-Sicherheitsgruppe hinzufügen.

  • Das Amazon FSx for Lustre-CSI-Treiber wird nicht unterstützt.

  • AWS-Fargate wird bei privaten Clustern unterstützt. Sie können AWS Load Balancer Controller verwenden, um AWS Application Load Balancer (ALBs) und Network Load Balancer bereitzustellen. Der Controller unterstützt Network Load Balancer mit IP-Zielen, die für die Verwendung mit Fargate erforderlich sind. Weitere Informationen finden Sie unter Application Load Balancing auf Amazon EKS und Erstellen eines Network Load Balancers.

  • Installieren des AWS Load Balancer Controller-Add-ons wird unterstützt. Während der Installation sollten Sie jedoch Befehlszeilen-Flags verwenden, um enable-shield, enable-waf und enable-wafv2 auf false zu setzen. Außerdem wird die Zertifikatserkennung mit Hostnamen aus den Ingress-Objekten nicht unterstützt. Dies liegt daran, dass der Controller ACM erreichen muss, das keinen VPC-Endpunkt hat.

  • Einige Container-Softwareprodukte verwenden API-Aufrufe, die auf den AWS-Marketplace-Metering-Service zugreifen, um die Nutzung zu überwachen. Private Cluster lassen diese Aufrufe nicht zu, daher können diese Containertypen nicht für private Cluster verwendet werden.

Erstellen lokaler Kopien von Container-Abbildern

Da ein privater Cluster keinen ausgehenden Internetzugang besitzt, können Container-Images nicht aus externen Quellen wie Docker Hub abgerufen werden. Stattdessen müssen Container-Abbilder lokal in Amazon ECR oder in eine alternative Registrierung kopiert werden, auf die in der VPC zugegriffen werden kann. Ein Container-Image kann von außerhalb der privaten VPC in Amazon ECR kopiert werden. Der private Cluster greift über die Amazon-ECR-VPC-Endpunkte auf das Amazon-ECR-Repository zu. Sie müssen Docker und die AWS CLI auf der Workstation installiert haben, die Sie zum Erstellen der lokalen Kopie verwenden.

So erstellen Sie eine lokale Kopie eines Container-Abbildes

  1. Erstellen Sie ein Amazon-ECR-Repository. Weitere Informationen finden Sie unter Erstellen eines Repositorys.

  2. Rufen Sie das Container-Abbild aus der externen Registrierung mit docker pull ab.

  3. Markieren Sie Ihr Image mit der Kombination aus Amazon-ECR-Registry, Repository und dem optionalen Image-Tag-Namen mithilfe von docker tag.

  4. Authentifizieren Sie sich bei der Registrierung. Weitere Informationen finden Sie unter Registrierungsauthentifizierung.

  5. Verschieben Sie das Abbild zu Amazon ECR mithilfe von docker push.

    Anmerkung

    Achten Sie darauf, Ihre Ressourcenkonfiguration zu aktualisieren, um den neuen Speicherort des Images zu verwenden.

    Im folgenden Beispiel wird das Image amazon/aws-node-termination-handler mithilfe des Tags v1.3.1-linux-amd64 aus Docker Hub abgerufen und eine lokale Kopie in Amazon ECR erstellt.

    aws ecr create-repository --repository-name amazon/aws-node-termination-handler docker pull amazon/aws-node-termination-handler:v1.3.1-linux-amd64 docker tag amazon/aws-node-termination-handler 111122223333.dkr.ecr.region-code.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64 aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.com docker push 111122223333.dkr.ecr.region-code.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64

AWS STS-Endpunkte für IAM-Rollen für Servicekonten

Pods konfiguriert mit IAM-Rollen für Servicekonten erwerben Anmeldeinformationen von einem AWS Security Token Service (AWS STS)-API-Aufruf. Wenn kein ausgehender Internetzugang vorhanden ist, müssen Sie einen AWS STS-VPC-Endpunkt in Ihrer VPC erstellen und verwenden. Die meisten AWS-v1-SDKs verwenden standardmäßig den globalen AWS STS-Endpunkt (sts.amazonaws.com), der nicht den AWS STS-VPC-Endpunkt benutzt. Um den AWS STS-VPC-Endpunkt zu verwenden, müssen Sie das SDK möglicherweise für die Verwendung des regionalen AWS STS-Endpunkts konfigurieren (sts.region-code.amazonaws.com). Dazu stellen Sie die Umgebungsvariable AWS_STS_REGIONAL_ENDPOINTS mit dem Wert regional und der AWS-Region ein.

Zum Beispiel in einer Pod-Spezifikation:

... containers: - env: - name: AWS_REGION value: region-code - name: AWS_STS_REGIONAL_ENDPOINTS value: regional ... ```

Ersetzen Sie den region-code durch die AWS-Region, in der sich Ihr Cluster befindet.