Bereitstellung des CSI-Treibers für Mountpoint für Amazon S3 - 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.

Bereitstellung des CSI-Treibers für Mountpoint für Amazon S3

Mit dem Mountpoint für Amazon S3 Container Storage Interface (CSI)-Treiber können Ihre Kubernetes-Anwendungen über eine Dateisystemschnittstelle auf Amazon-S3-Objekte zugreifen und so einen hohen Gesamtdurchsatz erzielen, ohne dass Änderungen am Anwendungscode erforderlich sind.

Dieses Verfahren zeigt Ihnen, wie Sie den CSI-Amazon-EKS-Treiber für Mountpoint für Amazon S3 bereitstellen. Lesen Sie sich die Hinweise durch, bevor Sie fortfahren.

Voraussetzungen

  • Ein vorhandener Anbieter für AWS Identity and Access Management (IAM) OpenID Connect (OIDC) für Ihren Cluster. Informationen zum Feststellen, ob Sie bereits über einen verfügen oder einen erstellen müssen, finden Sie unter Erstellen Sie einen IAM-OIDC-Anbieter für Ihren Cluster.

  • Version 2.12.3 oder höher der AWS-CLI auf Ihrem Gerät oder in AWS CloudShell installiert und konfiguriert.

  • Das kubectl-Befehlszeilen-Tool ist auf Ihrem Gerät oder in AWS CloudShell installiert. Die Version kann mit der Kubernetes-Version Ihres Clusters identisch sein oder bis zu einer Nebenversion älter oder neuer sein. Wenn Ihre Clusterversion beispielsweise 1.29 ist, können Sie kubectl-Version 1.28, 1.29, oder 1.30 damit verwenden. Informationen zum Installieren oder Aktualisieren von kubectl finden Sie unter kubectl und eksctl einrichten.

Schritt 1: Erstellen einer IAM-Richtlinie

Der CSI-Treiber für Mountpoint für Amazon S3 erfordert Amazon-S3-Berechtigungen, um mit Ihrem Dateisystem zu interagieren. In diesem Abschnitt wird erläutert, wie Sie eine IAM-Richtlinie erstellen, die die erforderlichen Berechtigungen gewährt.

Die folgende Beispielrichtlinie richtet sich nach den IAM-Berechtigungsempfehlungen für Mountpoint. Alternativ können Sie auch die von AWS verwaltete Richtlinie AmazonS3FullAccess verwenden, aber diese verwaltete Richtlinie gewährt mehr Berechtigungen, als für Mountpoint erforderlich sind.

Weitere Informationen zu den empfohlenen Berechtigungen für Mountpoint finden Sie unter Mountpoint-IAM-Berechtigungen auf GitHub.

  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im linken Navigationsbereich die Option Policies aus.

  3. Wählen Sie auf der Seite Richtlinien die Option Richtlinie erstellen.

  4. Wählen Sie für Richtlinien-Editor die Option JSON aus.

  5. Kopieren Sie unter Richtlinien-Editor Folgendes und fügen Sie es ein:

    Wichtig

    Ersetzen Sie amzn-s3-demo-bucket1 durch den Namen Ihres eigenen Amazon-S3-Bucket.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MountpointFullBucketAccess", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "MountpointFullObjectAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] } ] }

    Verzeichnis-Buckets, die mit der Speicherklasse für Amazon S3 Express One Zone eingeführt wurden, verwenden einen anderen Authentifizierungs-Mechanismus als allgemeine Buckets. Anstatt s3:*-Aktionen zu verwenden, sollten Sie die s3express:CreateSession-Aktion verwenden. Informationen zu Verzeichnis-Buckets finden Sie unter Verzeichnis-Buckets im Amazon-S3-Benutzerhandbuch.

    Nachfolgend finden Sie ein Beispiel für eine Richtlinie mit geringsten Berechtigungen, die Sie für einen Verzeichnis-Bucket verwenden würden.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3express:CreateSession", "Resource": "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket1--usw2-az1--x-s3" } ] }
  6. Wählen Sie Weiter aus.

  7. Geben Sie Ihrer Richtlinie auf der Seite Überprüfen und erstellen einen Namen. In dieser Beispielanleitung wird der Name AmazonS3CSIDriverPolicy verwendet.

  8. Wählen Sie Richtlinie erstellen aus.

Schritt 2: Erstellen einer IAM-Rolle

Der CSI-Treiber für Mountpoint für Amazon S3 erfordert Amazon-S3-Berechtigungen, um mit Ihrem Dateisystem zu interagieren. In diesem Abschnitt wird erläutert, wie Sie eine IAM-Rolle erstellen, mit der Sie diese Berechtigungen delegieren. Um diese Rolle zu erstellen, können Sie eines der folgenden Tools verwenden:

Anmerkung

Die IAM-Richtlinie AmazonS3CSIDriverPolicy wurde im vorherigen Abschnitt erstellt.

eksctl

So erstellen Sie Ihre IAM-Rolle für CSI-Treiber für Mountpoint für Amazon S3 mit eksctl

Führen Sie die folgenden Befehle aus, um die IAM-Rolle und das Kubernetes-Servicekonto zu erstellen. Über diese Befehle wird außerdem die AmazonS3CSIDriverPolicy IAM-Richtlinie an die Rolle angefügt, das Kubernetes-Servicekonto (s3-csi-controller-sa) mit dem Amazon-Ressourcennamen (ARN) der IAM-Rolle versehen und der Name des Kubernetes-Servicekontos zur Vertrauensrichtlinie für die IAM-Rolle hinzugefügt.

CLUSTER_NAME=my-cluster REGION=region-code ROLE_NAME=AmazonEKS_S3_CSI_DriverRole POLICY_ARN=AmazonEKS_S3_CSI_DriverRole_ARN eksctl create iamserviceaccount \ --name s3-csi-driver-sa \ --namespace kube-system \ --cluster $CLUSTER_NAME \ --attach-policy-arn $POLICY_ARN \ --approve \ --role-name $ROLE_NAME \ --region $REGION \ --role-only

AWS-Managementkonsole

  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im linken Navigationsbereich Roles aus.

  3. Klicken Sie auf der Seite Roles (Rollen) auf Create role (Rolle erstellen).

  4. Gehen Sie auf der Seite Select trusted entity (Vertrauenswürdige Entität auswählen) wie folgt vor:

    1. Wählen Sie im Abschnitt Trusted entity type (Typ der vertrauenswürdigen Entität) die Option Web identity (Web-Identität) aus.

    2. Wählen Sie für Identity provider (Identitätsanbieter) die Option OpenID Connect provider URL (OpenID-Connect-Anbieter-URL) für Ihren Cluster aus (wie unter Overview (Übersicht) in Amazon EKS gezeigt).

      Wenn keine URLs angezeigt werden, überprüfen Sie die Voraussetzungen.

    3. Wählen Sie für Audience (Zielgruppe) sts.amazonaws.com.

    4. Wählen Sie Weiter aus.

  5. Gehen Sie auf der Seite Berechtigungen hinzufügen wie folgt vor:

    1. Geben Sie im Feld Filterrichtlinien AmazonS3CSIDriverPolicy ein.

      Anmerkung

      Diese Richtlinie wurde im vorherigen Abschnitt erstellt.

    2. Aktivieren Sie das Kontrollkästchen links neben dem Ergebnis für AmazonS3CSIDriverPolicy, das bei der Suche zurückgegeben wurde.

    3. Wählen Sie Weiter aus.

  6. Gehen Sie auf der Seite Name, review, and create (Benennen, überprüfen und erstellen) wie folgt vor:

    1. Geben Sie unter Rollenname einen eindeutigen Namen für Ihre Rolle ein, beispielsweise AmazonEKS_S3_CSI_DriverRole.

    2. Fügen Sie der Rolle unter Tags hinzufügen (optional) Metadaten hinzu, indem Sie Tags als Schlüssel-Wert-Paare anfügen. Weitere Informationen zur Verwendung von Tags in IAM finden Sie unter Markieren von IAM-Ressourcen im IAM-Benutzerhandbuch.

    3. Wählen Sie Create role (Rolle erstellen) aus.

  7. Nachdem die Rolle erstellt wurde, wählen Sie die Rolle in der Konsole aus, um sie zur Bearbeitung zu öffnen.

  8. Wählen Sie die Registerkarte Trust Relationships (Vertrauensstellungen) und dann Edit trust policy (Vertrauensrichtlinie bearbeiten) aus.

  9. Suchen Sie die Zeile, die wie folgt aussieht:

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"

    Fügen Sie am Ende der vorherigen Zeile ein Komma und anschließend die folgende Zeile hinzu. Ersetzen Sie den region-code durch die AWS-Region, in der sich Ihr Cluster befindet. Ersetzen Sie EXAMPLED539D4633E53DE1B71EXAMPLE mit der OIDC-Anbieter-ID Ihres Clusters.

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:s3-csi-driver-sa"
  10. Stellen Sie sicher, dass der Condition-Operator auf "StringEquals" eingestellt ist.

  11. Wählen Sie Update Policy (Richtlinie aktualisieren) aus, um den Vorgang abzuschließen.

AWS-CLI

  1. Zeigen Sie die OIDC-Anbieter-URL Ihres Clusters an. Ersetzen Sie my-cluster durch den Namen Ihres Clusters. Wenn die Ausgabe des Befehls None ist, überprüfen Sie die Voraussetzungen.

    aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text

    Eine Beispielausgabe sieht wie folgt aus.

    https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
  2. Erstellen Sie die IAM-Rolle und weisen Sie dem Kubernetes-Dienstkonto die AssumeRoleWithWebIdentity-Aktion zu.

    1. Kopieren Sie den folgenden Inhalt in eine Datei namens aws-s3-csi-driver-trust-policy.json. Ersetzen Sie 111122223333 durch Ihre Konto-ID. Ersetzen Sie EXAMPLED539D4633E53DE1B71EXAMPLE und region-code durch den im vorherigen Schritt zurückgegebenen Werte.

      { "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:sub": "system:serviceaccount:kube-system:s3-csi-driver-sa", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
    2. Erstellen Sie die -Rolle. Sie können AmazonEKS_S3_CSI_DriverRole in einen anderen Namen ändern. In diesem Fall ist es jedoch wichtig, dass Sie die Änderung auch in den nachfolgenden Schritten vornehmen.

      aws iam create-role \ --role-name AmazonEKS_S3_CSI_DriverRole \ --assume-role-policy-document file://"aws-s3-csi-driver-trust-policy.json"
  3. Hängen Sie die zuvor erstellte IAM-Richtlinie mit dem folgenden Befehl an die Rolle an.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonS3CSIDriverPolicy \ --role-name AmazonEKS_S3_CSI_DriverRole
    Anmerkung

    Die IAM-Richtlinie AmazonS3CSIDriverPolicy wurde im vorherigen Abschnitt erstellt.

  4. Überspringen Sie diesen Schritt, wenn Sie den Treiber als Amazon-EKS-Add-On installieren. Für selbstverwaltete Installationen des Treibers erstellen Sie Kubernetes-Servicekonten, die mit der ARN der von Ihnen erstellten IAM-Rolle vermerkt sind.

    1. Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen mountpoint-s3-service-account.yaml. Ersetzen Sie 111122223333 durch Ihre Konto-ID.

      --- apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-mountpoint-s3-csi-driver name: mountpoint-s3-csi-controller-sa namespace: kube-system annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole
    2. Erstellen Sie das Kubernetes-Servicekonto in Ihrem Cluster. Das Kubernetes- Servicekonto (mountpoint-s3-csi-controller-sa) ist mit der von Ihnen erstellten IAM-Rolle mit dem Namen AmazonEKS_S3_CSI_DriverRole vermerkt.

      kubectl apply -f mountpoint-s3-service-account.yaml
      Anmerkung

      Wenn Sie das Plugin in diesem Verfahren bereitstellen, wird es erstellt und für die Verwendung eines Servicekontos mit dem Namen s3-csi-driver-sa konfiguriert.

Schritt 3: CSI-Treiber für Mountpoint für Amazon S3 installieren

Sie können den CSI-Treiber für Mountpoint für Amazon S3 über das Amazon-EKS-Add-On installieren. Sie können die folgenden Tools verwenden, um das Add-On zu Ihrem Cluster hinzuzufügen:

Alternativ können Sie den CSI-Treiber für Mountpoint für Amazon S3 als selbstverwaltete Installation installieren. Anweisungen zur Durchführung einer selbstverwalteten Installation finden Sie unter Installation auf GitHub.

Ab Version v1.8.0 können Sie Taints konfigurieren, die für die Pods des CSI-Treibers toleriert werden sollen. Geben Sie dazu entweder einen benutzerdefinierten Satz von Taints an, die mit node.tolerations toleriert werden sollen, oder tolerieren Sie alle Taints mit node.tolerateAllTaints. Weitere Informationen finden Sie unter Taints und Toleranzen in der Kubernetes-Dokumentation.

eksctl

So fügen Sie das CSI-Add-On von Amazon S3 mit eksctl hinzu

Führen Sie den folgenden Befehl aus. Ersetzen Sie my-cluster durch den Namen Ihres Clusters, 111122223333 durch Ihre Konto-ID und AmazonEKS_S3_CSI_DriverRole durch den Namen der zuvor erstellten IAM-Rolle.

eksctl create addon --name aws-mountpoint-s3-csi-driver --cluster my-cluster \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole --force

Wenn Sie die Option --force entfernen und eine der Amazon-EKS-Add-On-Einstellungen mit Ihren vorhandenen Einstellungen in Konflikt steht, schlägt die Aktualisierung des Amazon-EKS-Add-Ons fehl und Sie erhalten eine Fehlermeldung, die Sie bei der Lösung des Konflikts unterstützt. Stellen Sie vor der Angabe dieser Option sicher, dass das Amazon-EKS-Add-On keine Einstellungen verwaltet, die Sie verwalten müssen, da diese Einstellungen mit dieser Option überschrieben werden. Weitere Informationen zu anderen Optionen für diese Einstellung finden Sie unter Add-Ons in der eksctl-Dokumentation. Weitere Informationen zur Amazon-EKS-Kubernetes-Feldverwaltung finden Sie unter Felder für die Anpassung von Amazon-EKS-Add-On festlegen.

Sie können eksctl über Konfigurationsdateien anpassen. Weitere Informationen finden Sie unter Arbeiten mit Konfigurationswerten in der eksctl-Dokumentation. Das folgende Beispiel zeigt, wie alle Taints toleriert werden.

# config.yaml ... addons: - name: aws-mountpoint-s3-csi-driver serviceAccountRoleARN: arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole configurationValues: |- node: tolerateAllTaints: true

AWS-Managementkonsole

  1. Öffnen Sie die Amazon-EKS-Konsole.

  2. Wählen Sie im linken Navigationsbereich Cluster aus.

  3. Wählen Sie den Namen des Clusters, für den Sie den CSI-Treiber für Mountpoint für Amazon S3 konfigurieren möchten.

  4. Wählen Sie die Registerkarte Add-ons.

  5. Wählen Sie Weitere Add-Ons erhalten.

  6. Führen Sie auf der Seite Add-Ons auswählen die folgenden Schritte aus:

    1. Aktivieren Sie im Abschnitt Amazon-EKS-Add-Ons das Kontrollkästchen CSI-Treiber für Mountpoint für Amazon S3.

    2. Wählen Sie Weiter aus.

  7. Gehen Sie auf der Seite Konfigurieren ausgewählter Add-Ons-Einstellungen wie folgt vor:

    1. Wählen Sie die Version aus, die Sie verwenden möchten.

    2. Wählen Sie für IAM-Rolle auswählen den Namen einer IAM-Rolle aus, an die Sie die IAM-Richtlinie „CSI-Treiber für Mountpoint für Amazon S3“ angefügt haben.

    3. (Optional) Aktualisieren Sie die Methode zur Konfliktlösung, nachdem Sie die Optionalen Konfigurationseinstellungen erweitert haben Wenn Sie Überschreiben auswählen, können eine oder mehrere Einstellungen für das vorhandene Add-On mit den Amazon-EKS-Add-On-Einstellungen überschrieben werden. Wenn Sie diese Option nicht aktivieren und ein Konflikt mit Ihren vorhandenen Einstellungen vorliegt, schlägt der Vorgang fehl. Sie können die sich daraus ergebende Fehlermeldung heranziehen, um den Konflikt zu beheben. Stellen Sie vor der Auswahl dieser Option sicher, dass das Amazon-EKS-Add-On keine Einstellungen verwaltet, die Sie selbst verwalten müssen.

    4. (Optional) Konfigurieren Sie Toleranzen im Feld Konfigurationswerte, nachdem Sie die Optionalen Konfigurationseinstellungen erweitert haben.

    5. Wählen Sie Weiter aus.

  8. Wählen Sie auf der Seite Überprüfen und hinzufügen die Option Erstellen aus. Nachdem die Installation der Add-Ons abgeschlossen ist, wird Ihr installiertes Add-On angezeigt.

AWS-CLI

So fügen Sie den Mountpoint für das Amazon-S3-CSI-Add-On mit der AWS-CLI hinzu

Führen Sie den folgenden Befehl aus. Ersetzen Sie my-cluster durch den Namen Ihres Clusters, 111122223333 durch Ihre Konto-ID und AmazonEKS_S3_CSI_DriverRole durch den Namen der zuvor erstellten Rolle.

aws eks create-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole

Sie können den Befehl mit dem --configuration-values-Flag anpassen. Das folgende alternative Beispiel veranschaulicht, wie alle Taints toleriert werden.

aws eks create-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole \ --configuration-values '{"node":{"tolerateAllTaints":true}}'

Schritt 4: Mountpoint für Amazon S3 konfigurieren

In den meisten Fällen können Sie Mountpoint für Amazon S3 mit lediglich einem Bucket-Namen konfigurieren. Anweisungen zur Konfiguration von Mountpoint für Amazon S3 finden Sie unter Konfiguration von Mountpoint für Amazon S3 auf GitHub.

Schritt 5: Beispielanwendung bereitstellen

Sie können die statische Bereitstellung des Treibers in einem vorhandenen Amazon S3-Bucket einsetzen. Weitere Informationen finden Sie unter Statische Bereitstellung auf GitHub.