IAM-Rolle und AWS Secret erstellen
Sie können Kubernetes-Pods für den Zugriff auf AWS-Ressourcen konfigurieren, indem Sie sich als AWS IAM-Rolle authentifizieren anstatt dafür explizite AWS-Anmeldedaten bereitstellen zu müssen.
|
Um sich mit einer AWS IAM-Rolle zu authentifizieren, müssen Sie über ein Kubernetes-Cluster mit EKS verfügen. |
Erstellen Sie den AWS Secret Manager-Schlüssel
Dieses Beispiel erstellt einen AWS Secret Manager-Schlüssel, um Trident-CSI-Anmeldedaten zu speichern:
aws secretsmanager create-secret --name trident-secret --description "Trident CSI credentials"\ --secret-string "{\"username\":\"vsadmin\",\"password\":\"<svmpassword>\"}""
IAM-Richtlinie erstellen
In den folgenden Beispielen wird eine IAM-Richtlinie über die AWS-CLI erstellt:
aws iam create-policy --policy-name AmazonFSxNCSIDriverPolicy --policy-document file://policy.json --description "This policy grants access to Trident CSI to FSxN and Secret manager"
Richtlinien-JSON-Datei:
policy.json: { "Statement": [ { "Action": [ "fsx:DescribeFileSystems", "fsx:DescribeVolumes", "fsx:CreateVolume", "fsx:RestoreVolumeFromSnapshot", "fsx:DescribeStorageVirtualMachines", "fsx:UntagResource", "fsx:UpdateVolume", "fsx:TagResource", "fsx:DeleteVolume" ], "Effect": "Allow", "Resource": "*" }, { "Action": "secretsmanager:GetSecretValue", "Effect": "Allow", "Resource": "arn:aws:secretsmanager:<aws-region>:<aws-account-id>:secret:<aws-secret-manager-name>*" } ], "Version": "2012-10-17" }
Erstellen Sie eine IAM-Rolle für das Dienstkonto
aws iam create-role --role-name trident-controller \ --assume-role-policy-document file://trust-relationship.json
Trust-Relationship.json-Datei:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::<account_id>:oidc-provider/<oidc_provider>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "<oidc_provider>:aud": "sts.amazonaws.com", "<oidc_provider>:sub": "system:serviceaccount:trident:trident-controller" } } } ] }
Aktualisieren Sie die folgenden Werte in der trust-relationship.json
Datei:
-
<account_id> - Ihre AWS-Konto-ID
-
<oidc_provider> - das OIDC Ihres EKS-Clusters. Sie können den oidc_Provider erhalten, indem Sie Folgendes ausführen:
aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer"\ --output text | sed -e "s/^https:\/\///"
Die IAM-Rolle mit der IAM-Richtlinie verknüpfen:
Nachdem die Rolle erstellt wurde, hängen Sie die Richtlinie (die im obigen Schritt erstellt wurde) mit diesem Befehl an die Rolle an:
aws iam attach-role-policy --role-name my-role --policy-arn <IAM policy ARN>
Verify OICD Provider is associated:
Vergewissern Sie sich, dass der OIDC-Anbieter dem Cluster zugeordnet ist. Sie können sie mit diesem Befehl überprüfen:
aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
Falls keine Ausgabe angezeigt wird, können Sie den folgenden Befehl verwenden, um IAM OIDC dem Cluster zuzuordnen:
eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve