Aktualisieren eines Clusters - Amazon EKS

Aktualisieren eines Clusters

Sie können einen vorhandenen Amazon-EKS-Cluster auf eine neue Kubernetes-Version oder Secrets-Verschlüsselung für Ihren Cluster aktualisieren.

Aktualisieren einer Amazon-EKS-Cluster-Kubernetes-Version

Wenn eine neue Kubernetes-Version in Amazon EKS verfügbar ist, können Sie Ihren Amazon-EKS-Cluster auf die neueste Version aktualisieren.

Wichtig

Es wird empfohlen, dass Sie vor dem Aktualisieren auf eine neue Kubernetes-Version die Informationen in Amazon-EKS-Kubernetes-Versionen und in den Aktualisierungsschritten in diesem Thema sichten.

Neue Kubernetes-Versionen haben bedeutende Änderungen eingeführt. Daher empfehlen wir Ihnen, das Verhalten Ihrer Anwendungen mit einer neuen Kubernetes-Version zu testen, bevor Sie Ihre Produktionscluster aktualisieren. Hierzu erstellen Sie einen kontinuierlichen Integrations-Workflow, um das Verhalten Ihrer Anwendungen zu testen, bevor Sie auf eine neue Kubernetes-Version aktualisieren.

Der Aktualisierungsprozess besteht darin, dass Amazon EKS neue API-Serverknoten mit der aktualisierten Kubernetes-Version startet, um die vorhandenen zu ersetzen. Amazon EKS führt auf diesen neuen Knoten standardmäßige Infrastruktur- und Bereitschaftszustandsprüfungen für den Netzwerkverkehr durch, um sicherzustellen, dass sie wie erwartet funktionieren. Wenn eine dieser Prüfungen fehlschlägt, macht Amazon EKS die Infrastruktur-Bereitstellung rückgängig und der Cluster verbleibt in der vorherigen Kubernetes-Version. Laufende Anwendungen sind davon nicht betroffen und Ihr Cluster befindet sich nie in einem nicht deterministischen oder nicht wiederherstellbaren Zustand. Amazon EKS sichert regelmäßig alle verwalteten Cluster, und es gibt Mechanismen, um Cluster bei Bedarf wiederherzustellen. Wir evaluieren und verbessern unsere Verwaltungsprozesse für die Kubernetes-Infrastruktur laufend.

Um den Cluster zu aktualisieren, benötigt Amazon EKS zwei bis drei freie IP-Adressen aus den Subnetzen, die beim Erstellen des Clusters bereitgestellt wurden. Wenn für diese Subnetze keine IP-Adressen verfügbar sind, kann die Aktualisierung fehlschlagen. Wenn ein während der Cluster-Erstellung bereitgestelltes Subnetz oder eine Sicherheitsgruppe gelöscht wurde, kann das Aktualisieren des Clusters fehlschlagen.

Anmerkung

Obwohl Amazon EKS eine hochverfügbare Steuerebene ausführt, ist es möglich, dass während einer Aktualisierung geringfügige Service-Unterbrechungen auftreten. Beispiel: Wenn Sie versuchen, direkt vor oder nach seiner Beendigung und Ersetzung durch einen neuen API-Server mit der neuen Version von Kubernetes eine Verbindung mit einem API-Server herzustellen, können API-Aufruffehler oder Verbindungsprobleme auftreten. Wiederholen Sie in diesem Fall Ihre API-Operationen, bis sie erfolgreich sind.

So aktualisieren Sie die Kubernetes-Version für Ihren-Amazon EKS-Cluster

Aktualisieren der Kubernetes-Version für Ihren Cluster.

Aktualisieren der Kubernetes-Version für Ihren Cluster

  1. Vergleichen Sie die Kubernetes-Version Ihrer Cluster-Steuerebene mit der Kubernetes-Version Ihrer Knoten.

    • Rufen Sie die Kubernetes-Version Ihrer Cluster-Steuerebene mit dem folgenden Befehl ab.

      kubectl version --short
    • Rufen Sie die Kubernetes-Version Ihrer Knoten mit dem folgenden Befehl ab. Dieser Befehl gibt alle selbstverwalteten und verwalteten Amazon-EC2- und Fargate-Knoten zurück. Jeder Fargate-Pod wird als eigener Knoten aufgeführt.

      kubectl get nodes

    Die Kubernetes-Nebenversion der verwalteten und Fargate-Knoten in Ihrem Cluster muss mit der Version der aktuellen Version Ihrer Steuerebene übereinstimmen, bevor Sie Ihre Steuerebene auf eine neue Kubernetes-Version aktualisieren. Wenn auf Ihrer Steuerebene beispielsweise Version 1.20 und auf einem Ihrer Knoten Version 1.19 ausgeführt wird, aktualisieren Sie Ihre Knoten auf Version 1.20, bevor Sie die Kubernetes-Version Ihrer Steuerebene auf 1.21 aktualisieren. Wir empfehlen außerdem, dass Sie Ihre selbstverwalteten Knoten auf dieselbe Version wie Ihre Steuerebene aktualisieren, bevor Sie die Steuerebene aktualisieren. Weitere Informationen erhalten Sie unter Aktualisieren einer verwalteten Knotengruppe und Aktualisierungen des selbstverwalteten Worker-Knotens. Um die Version eines Fargate-Knotens zu aktualisieren, löschen Sie den Pod, der durch den Knoten repräsentiert wird, und stellen Sie den Pod erneut bereit, nachdem Sie Ihre Steuerebene aktualisiert haben.

  2. Der Zugangscontroller für die Pod-Sicherheitsrichtlinie ist auf Amazon-EKS-Clustern standardmäßig aktiviert. Stellen Sie vor der Aktualisierung Ihres Clusters sicher, dass die richtigen Pod-Sicherheitsrichtlinien vorhanden sind, bevor Sie die Aktualisierung durchführen, um Probleme zu vermeiden. Sie können die Standardrichtlinie mit dem folgenden Befehl überprüfen.

    kubectl get psp eks.privileged

    Wenn Sie die folgende Fehlermeldung erhalten, lesen Sie die Standard-Pod-Sicherheitsrichtlinie, bevor Sie fortfahren.

    Error from server (NotFound): podsecuritypolicies.extensions "eks.privileged" not found
  3. Wenn Sie Ihren Cluster ursprünglich auf Kubernetes 1.17 oder früher bereitgestellt haben, müssen Sie möglicherweise einen eingestellten Begriff aus Ihrem CoreDNS-Manifest entfernen.

    1. Überprüfen Sie, ob Ihr CoreDNS-Manifest eine Zeile enthält, die nur das Wort upstream enthält.

      kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream

      Wenn keine Ausgabe zurückgegeben wird, enthält Ihr Manifest die Zeile nicht und Sie können mit dem nächsten Schritt fortfahren, um Ihren Cluster zu aktualisieren. Wenn das Wort upstream zurückgegeben wird, müssen Sie die Zeile entfernen.

    2. Bearbeiten Sie die Konfigurationskarte und entfernen Sie die Zeile am oberen Rand der Datei, die nur das Wort upstream enthält. Ändern Sie sonst nichts in der Datei. Nachdem die Zeile entfernt wurde, speichern Sie die Änderungen.

      kubectl edit configmap coredns -n kube-system -o yaml
  4. Aktualisieren Sie Ihren Cluster mit eksctl, AWS Management Console oder AWS CLI.

    Wichtig
    • Da Amazon EKS eine hoch verfügbare Steuerebene ausführt, dürfen Sie jeweils nur um eine Unterversion aktualisieren. Die Gründe dafür finden Sie unter Kubernetes Version and Version Skew Support Policy. Wenn Ihre aktuelle Version 1.19 ist und Sie auf 1.21 aktualisieren möchten, müssen Sie daher zuerst Ihren Cluster auf 1.20 und dann von 1.20 auf 1.21 aktualisieren.

    • Stellen Sie vor der Aktualisierung sicher, dass das kubelet auf Ihren verwalteten und Fargate-Knoten dieselbe Kubernetes-Version wie Ihre Steuerebene aufweist. Wir empfehlen auch, dass Ihre selbstverwalteten Knoten dieselbe Version wie die Steuerebene aufweisen, obwohl sie bis zu einer Version hinter der aktuellen Version der Steuerebene liegen können.

    • Das Aktualisieren eines Clusters von 1.16 auf 1.17 schlägt fehl, wenn Sie AWS-Fargate-Pods mit einer kubelet-Nebenversion vor 1.16 haben. Bevor Sie Ihren Cluster von 1.16 auf 1.17 aktualisieren, müssen Sie Ihre Fargate-Pods recyceln, sodass ihr kubelet 1.16 ist, bevor Sie versuchen, den Cluster auf 1.17 zu aktualisieren.

    • Möglicherweise müssen Sie einige Ihrer bereitgestellten Ressourcen aktualisieren, bevor Sie ein Upgrade auf 1.16 vornehmen können. Weitere Informationen finden Sie unter Voraussetzungen für die Aktualisierung auf Kubernetes 1.16.

    • Das Aktualisieren Ihres Clusters auf eine neuere Version könnte benutzerdefinierte Konfigurationen überschreiben.

    eksctl

    Für diesen Vorgang ist eksctl Version 0.67.0 oder höher erforderlich. Sie können Ihre Version mit dem folgenden Befehl überprüfen:

    eksctl version

    Weitere Informationen über das Installieren oder Aktualisieren von eksctl finden Sie unter Installieren oder Aktualisieren von eksctl.

    Aktualisieren Sie die Kubernetes-Version Ihrer Amazon-EKS-Steuerungsebene um eine Nebenversion nach der aktuellen Version mit dem folgenden Befehl. Ersetzen Sie <my-cluster> (einschließlich <>) durch Ihren Clusternamen.

    eksctl upgrade cluster --name <my-cluster> --approve

    Die Aktualisierung dauert einige Minuten.

    AWS Management Console
    1. Öffnen Sie die Amazon-EKS-Konsole unter https://console.aws.amazon.com/eks/home#/clusters.

    2. Wählen Sie den Namen des zu aktualisierenden Amazon-EKS-Clusters aus und klicken Sie dann auf Cluster-Version aktualisieren.

    3. Wählen Sie für Kubernetes version (Kubernetes-Version) die Version aus, auf die Sie den Cluster aktualisieren möchten, und klicken Sie auf Update (Aktualisieren).

    4. Geben Sie als Cluster name (Clustername) den Namen Ihres Clusters ein und klicken Sie auf Confirm (Bestätigen).

      Die Aktualisierung dauert einige Minuten.

    AWS CLI
    1. Aktualisieren Sie Ihren Amazon-EKS-Cluster mit dem AWS CLI-Befehl. Ersetzen Sie <example-values> (einschließlich <>) durch Ihre eigenen Werte.

      aws eks update-cluster-version \ --region <region-code> \ --name <my-cluster> \ --kubernetes-version <1.21>

      Ausgabe:

      { "update": { "id": "<b5f0ba18-9a87-4450-b5a0-825e6e84496f>", "status": "InProgress", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.21" }, { "type": "PlatformVersion", "value": "eks.1" } ], ... "errors": [] } }
    2. Überwachen Sie den Status Ihres Cluster-Updates mit dem folgenden Befehl. Verwenden Sie den Clusternamen und die Update-ID, die der vorherige Befehl zurückgegeben hat. Ihre Aktualisierung ist abgeschlossen, wenn als Status angezeigt wird Successful. Die Aktualisierung dauert einige Minuten.

      aws eks describe-update \ --region <region-code> \ --name <my-cluster> \ --update-id <b5f0ba18-9a87-4450-b5a0-825e6e84496f>

      Ausgabe:

      { "update": { "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", "status": "Successful", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.21" }, { "type": "PlatformVersion", "value": "eks.1" } ], ... "errors": [] } }
  5. Nachdem Ihre Cluster-Aktualisierung abgeschlossen wurde, aktualisieren Sie Ihre Knoten auf dieselbe Kubernetes-Nebenversion wie Ihr aktualisierter Cluster. Weitere Informationen finden Sie unter Aktualisierungen des selbstverwalteten Worker-Knotens oder Aktualisieren einer verwalteten Knotengruppe. Alle neuen Pods, die auf Fargate gestartet werden, verfügen über eine kubelet-Version, die Ihrer Cluster-Version entspricht. Bestehende Fargate-Pods werden nicht geändert.

  6. (Optional) Wenn Sie den Kubernetes Cluster Autoscaler in Ihrem Cluster bereitgestellt haben, bevor Sie den Cluster aktualisiert haben, aktualisieren Sie den Cluster Autoscaler auf die neueste Version, die der Kubernetes-Haupt- und Nebenversion entspricht, auf die Sie aktualisiert haben.

    1. Öffnen Sie die Seite Cluster Autoscaler releases in einem Webbrowser und suchen Sie die neuste Cluster Autoscaler-Version, die der Haupt- und Nebenversion Ihres Kubernetes-Clusters entspricht. Wenn beispielsweise die Kubernetes-Version Ihres Clusters 1.21 lautet, suchen Sie die neueste Cluster-Autoscaler-Version, die mit 1.21 beginnt. Notieren Sie sich die semantische Versionsnummer (<1.21.n>) für diese Version, die Sie im nächsten Schritt benötigen.

    2. Legen Sie das Cluster Autoscaler-Abbild-Tag mit dem folgenden Befehl auf die Version fest, die Sie im vorherigen Schritt notiert haben. Ersetzen Sie ggf. 1.21.n durch Ihren eigenen Wert.

      kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=k8s.gcr.io/autoscaling/cluster-autoscaler:v1.21.n
  7. (Nur Cluster mit GPU-Knoten) Wenn Ihr Cluster über Knoten-Gruppen mit GPU-Unterstützung (z. B. p3.2xlarge) verfügt, müssen Sie den DaemonSet NVIDIA-Geräte-Plug-in für Kubernetes auf Ihrem Cluster mit folgendem Befehl aktualisieren.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.9.0/nvidia-device-plugin.yml
  8. Aktualisieren Sie die VPC-CNI-, CoreDNS- und kube-proxy-Add-ons.

Voraussetzungen für die Aktualisierung auf Kubernetes 1.16

Wie im Änerungsverlauf von Kubernetes 1.15 und im Dokument veraltete APIs in 1.16 entfernt: Hier ist, was Sie wissen müssen angemerkt: Wenn Sie über einen vorhandenen Cluster verfügen, sind API-Änderungen für die folgenden bereitgestellten Ressourcen erforderlich, bevor Sie einen Cluster auf 1.16 aktualisieren.

Warnung

Wenn Sie diese APIs vor der Aktualisierung auf 1.16 nicht ändern, schlagen Workloads nach Abschluss der Aktualisierung fehl.

  • NetworkPolicy-Ressourcen werden in Version 1.16 nicht mehr über extensions/v1beta1 bereitgestellt. Migrieren Sie die Verwendung zur networking.k8s.io/v1-API, die seit Version 1.8 verfügbar ist. Bestehende persistente Daten können über die networking.k8s.io/v1-API abgerufen werden.

  • PodSecurityPolicy-Ressourcen werden in Version 1.16 nicht mehr über extensions/v1beta1 bereitgestellt. Migrieren Sie zur policy/v1beta1-API, die seit Version 1.10 verfügbar ist. Bestehende persistente Daten können über die policy/v1beta1-API abgerufen werden.

  • DaemonSet-, Bereitstellungs-, StatefulSet- und ReplicaSet-Ressourcen werden in Version 1.16 nicht mehr über extensions/v1beta1, apps/v1beta1 oder apps/v1beta2 bereitgestellt. Migrieren Sie zur apps/v1-API, die seit Version 1.9 verfügbar ist. Bestehende persistente Daten können über die apps/v1-API abgerufen werden. Geben Sie beispielsweise den folgenden Befehl ein, um eine Bereitstellung zu konvertieren, die derzeit apps/v1beta1 verwendet.

    kubectl convert -f ./<my-deployment.yaml> --output-version apps/v1
    Anmerkung

    Der vorherige Befehl verwendet möglicherweise andere Standardwerte als die in der aktuellen Manifestdatei festgelegten Werte. Weitere Informationen zu einer spezifischen Ressource finden Sie in der Kubernetes-API-Referenz.

Wenn Sie ursprünglich einen Amazon-EKS-Cluster mit Kubernetes Version 1.11 oder früher erstellt und die Markierung --resource-container nicht aus dem DaemonSet kube-proxy entfernt haben, führt die Aktualisierung auf Kubernetes 1.16 zu kube-proxy-Fehlern. Dieses Markierung wird in Kubernetes 1.16 nicht mehr unterstützt. Weitere Informationen finden Sie unter kube-proxy in Veraltete und entfernte Funktionen in Kubernetes 1.16. Sie müssen diese Markierung vor der Aktualisierung auf Kubernetes 1.16 entfernen.

Was Sie vor der Aktualisierung auf 1.16 tun müssen

  • Ändern Sie Ihre YAML-Dateien so, dass sie auf die neuen APIs verweisen.

  • Aktualisieren Sie benutzerdefinierte Integrationen und Controller so, dass sie die neuen APIs aufrufen.

  • Stellen Sie sicher, dass Sie eine aktualisierte Version aller Drittanbieter-Tools wie Ingress-Controller, Systeme für kontinuierliche Bereitstellungen und andere Werkzeuge verwenden, die die neuen APIs aufrufen.

    Um Ihren Cluster ganz einfach auf die Verwendung nicht mehr verwendeter APIs zu überprüfen, stellen Sie sicher, dass das audit Steuerebenen-Protokoll aktiviert ist, und geben Sie v1beta als Filter für die Ereignisse an. Alle Ersatz-APIs befinden sich in Kubernetes-Versionen, die älter als 1.10 sind. Anwendungen auf unterstützten Versionen von Amazon EKS können jetzt die aktualisierten APIs verwenden.

  • Entfernen Sie das --resource-container=""-Flag aus Ihrem kube-proxy-DaemonSet, wenn Ihr Cluster ursprünglich mit Kubernetes 1.11 oder früher bereitgestellt wurde, oder verwenden Sie eine kube-proxy-Konfigurationsdatei (empfohlen). Geben Sie den folgenden Befehl ein, um festzustellen, ob Ihre aktuelle Version von kube-proxy der Markierung hat.

    kubectl get daemonset kube-proxy --namespace kube-system -o yaml | grep 'resource-container='

    Wenn Sie keine Ausgaben erhalten, müssen Sie nichts entfernen. Wenn Sie eine Ausgabe ähnlich wie --resource-container="" erhalten, müssen Sie die Markierung entfernen. Geben Sie den folgenden Befehl ein, um Ihre aktuelle kube-proxy-Konfiguration zu bearbeiten.

    kubectl edit daemonset kube-proxy --namespace kube-system

    Entfernen Sie bei geöffnetem Editor die --resource-container=""-Linie und speichern Sie die Datei. Wir empfehlen Ihnen stattdessen, eine kube-proxy-Konfigurationsdatei zu verwenden. Laden Sie dafür das folgende Manifest herunter.

    curl -o kube-proxy-daemonset.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/2020-06-10/kube-proxy-daemonset.yaml

    Bestimmen Sie den Endpunkt Ihres Clusters mit folgendem Befehl.

    aws eks describe-cluster \ --name <cluster-name> \ --region <region-code> \ --query 'cluster.endpoint' \ --output text

    Die Ausgabe sieht wie folgt aus:

    https://<A89DBB2140C8AC0C2F920A36CCC6E18C>.sk1.<region-code>.eks.amazonaws.com

    Bearbeiten Sie die heruntergeladene kube-proxy-daemonset.yaml-Datei. Ersetzen Sie in Ihrem Editor <MASTER_ENDPOINT> (einschließlich <>) durch die Ausgabe des vorherigen Befehls. Ersetzen Sie <REGION> durch die Region Ihres Clusters. Ersetzen Sie in derselben Zeile bei Bedarf die Version durch die Version Ihres Clusters. Wenden Sie die Datei mit dem folgenden Befehl an.

    kubectl apply -f kube-proxy-daemonset.yaml

Aktivieren der Secrest-Verschlüsselung in einem vorhandenen Cluster

Wenn Sie die Secrets-Verschlüsselung aktivieren, werden die Kubernetes-Secrets mit dem von Ihnen ausgewählten AWS KMS key verschlüsselt. Der KMS-Schlüssel muss symmetrisch sein und in der gleichen Region wie der Cluster erstellt werden. Wenn der KMS-Schlüssel in einem anderen Konto erstellt wurde, muss der Benutzer über einen Zugriff auf den KMS-Schlüssel verfügen. Weitere Informationen finden Sie unter Benutzern in anderen Konten die Verwendung eines KMS-Schlüssels erlauben im AWS Key Management Service-Developerhandbuch.

Warnung

Sie können die Verschlüsselung von Geheimnissen nicht deaktivieren, nachdem Sie sie aktiviert haben. Diese Aktion ist unumkehrbar.

eksctl

Sie können die Verschlüsselung auf zwei Arten aktivieren:

  • Fügen Sie Ihrem Cluster mit einem einzigen Befehl Verschlüsselung hinzu.

    Um Ihre Geheimnisse automatisch neu zu verschlüsseln:

    eksctl utils enable-secrets-encryption / --cluster <my-cluster> / --key-arn arn:aws:kms:<Region-code>:<account>:key/<key>

    Um die automatische Neuverschlüsselung Ihrer Geheimnisse erneut zu deaktivieren:

    eksctl utils enable-secrets-encryption --cluster <my-cluster> / --key-arn arn:aws:kms:<Region-code>:<account>:key/<key> / --encrypt-existing-secrets=false
  • Fügen Sie Ihrem Cluster eine Verschlüsselung mit einer .yaml-Datei hinzu.

    # cluster.yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: <my-cluster> region: <Region-code> secretsEncryption: keyARN: arn:aws:kms:<Region-code>:<account>:key/<key>

    Um Ihre Geheimnisse automatisch neu zu verschlüsseln:

    eksctl utils enable-secrets-encryption -f kms-cluster.yaml

    Um die automatische Neuverschlüsselung Ihrer Geheimnisse erneut zu deaktivieren:

    eksctl utils enable-secrets-encryption -f kms-cluster.yaml --encrypt-existing-secrets=false
AWS Management Console
  1. Öffnen Sie die Amazon-EKS-Konsole unter https://console.aws.amazon.com/eks/home#/clusters.

  2. Wählen Sie den Cluster aus, dem Sie die KMS-Verschlüsselung hinzufügen möchten.

  3. Klicken Sie auf die Registerkarte Konfiguration.

  4. Scrollen Sie nach unten zum Abschnitt Secrets-Verschlüsselung und klicken Sie auf die Schaltfläche Aktivieren.

  5. Wählen Sie einen Schlüssel aus dem Dropdown-Menü aus und klicken Sie auf die Schaltfläche Aktivieren. Wenn keine Schlüssel aufgeführt sind, müssen Sie zuerst einen erstellen. Weitere Informationen finden Sie unter Erstellen von Schlüsseln

  6. Klicken Sie auf die Schaltfläche Bestätigen, um den ausgewählten Schlüssel zu verwenden.

AWS CLI
  1. Ordnen Sie Ihrem Cluster mit dem folgenden Befehl AWS CLI die Secrets-Verschlüsselungs-Konfiguration zu. Ersetzen Sie <example-values> (einschließlich <>) durch Ihre eigenen Werte.

    aws eks associate-encryption-config \ --cluster-name <my-cluster> \ --encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"arn:aws:kms:<Region-code>:<account>:key/<key>"}}]'

    Ausgabe:

    {   "update": {     "id": "<3141b835-8103-423a-8e68-12c2521ffa4d>",     "status": "InProgress",     "type": "AssociateEncryptionConfig",     "params": [       {         "type": "EncryptionConfig",         "value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:<Region-code>:<account>:key/<key>\"}}]"       }     ],     "createdAt": <1613754188.734>,     "errors": []   } }
  2. Sie können den Status Ihrer Verschlüsselungsaktualisierung mit dem folgenden Befehl überwachen. Verwenden Sie den cluster name und update ID, die in der Ausgabe des obigen Schritts zurückgegeben wurden. Ihre Aktualisierung ist abgeschlossen, wenn als Status angezeigt wird Successful.

    aws eks describe-update \ --region <Region-code> \ --name <my-cluster> \ --update-id <3141b835-8103-423a-8e68-12c2521ffa4d>

    Ausgabe:

    {   "update": {     "id": "<3141b835-8103-423a-8e68-12c2521ffa4d>",     "status": "Successful",     "type": "AssociateEncryptionConfig",     "params": [       {         "type": "EncryptionConfig",         "value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:<region-code>:<account>:key/<key>\"}}]"       }     ],     "createdAt": <1613754188.734>,     "errors": []   } }
  3. Führen Sie den Befehl describe-cluster aus, um zu überprüfen, ob die Verschlüsselung in Ihrem Cluster aktiviert ist. Die Antwort wird EncryptionConfig enthalten.

    aws eks describe-cluster --region <Region-code> --name <my-cluster>

Nachdem Sie die Verschlüsselung in Ihrem Cluster aktiviert haben, müssen Sie alle vorhandenen Secrets mit dem neuen Schlüssel verschlüsseln:

Anmerkung

Wenn Sie eksctl verwenden, müssen Sie den folgenden Befehl nicht ausführen, es sei denn, Sie haben sich gegen die automatische Neuverschlüsselung Ihrer Secrets entschieden.

kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - kms-encryption-timestamp="<time value>"
Warnung

Wenn Sie die Secrets-Verschlüsselung für einen vorhandenen Cluster aktivieren und der von Ihnen verwendete KMS-Schlüssel jemals gelöscht wird, gibt es keinen Wiederherstellungspfad für den Cluster. Durch das Löschen des KMS-Schlüssels wird der Cluster dauerhaft auf einen degradierten Zustand festgelegt. Weitere Informationen finden Sie unter Löschen von AWS-KMS-Schlüsseln.

Anmerkung

Standardmäßig erstellt der create-key-Befehl einen symmetrischen Schlüssel mit einer Schlüsselrichtlinie, die dem Root-Administrator des Kontos Zugriff auf AWS KMS-Aktionen und -Ressourcen gewährt. Wenn Sie die Berechtigungen begrenzen möchten, müssen Sie sicherstellen, dass die Aktionen kms:DescribeKey und kms:CreateGrant für die Richtlinie für den Prinzipal zulässig sind, der die API create-cluster aufrufen wird.

Amazon EKS unterstützt die Richtlinienbedingung kms:GrantIsForAWSResource nicht. Das Erstellen eines Clusters funktioniert nicht, wenn sich diese Aktion in der KMS-Schlüsselrichtlinienanweisung befindet.