Cree un rol de IAM y AWS Secret
Puede configurar los pods de Kubernetes para acceder a los recursos de AWS mediante la autenticación como un rol de AWS IAM en lugar de proporcionar credenciales de AWS explícitas.
|
Para autenticarse mediante un rol de AWS IAM, debe tener un clúster de Kubernetes implementado mediante EKS. |
Crear secreto de AWS Secret Manager
En este ejemplo, se crea un secreto de AWS Secret Manager para almacenar las credenciales de Trident CSI:
aws secretsmanager create-secret --name trident-secret --description "Trident CSI credentials"\ --secret-string "{\"username\":\"vsadmin\",\"password\":\"<svmpassword>\"}"
Crear política de IAM
Los siguientes ejemplos crean una política de IAM mediante la CLI de AWS:
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"
Ejemplo de Política JSON:
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" }
Para habilitar la configuración de backend automática para Amazon FSx, agregue las siguientes acciones al policy.json
archivo mientras crea una política de IAM:
-
"fsx:CreateStorageVirtualMachine"
-
"fsx:DescribeStorageVirtualMachines"
-
"secretsmanager:CreateSecret"
-
"secretsmanager:DeleteSecret"
-
"secretsmanager:TagResource"
Ejemplo de archivo JSON de políticas para la configuración automática de backend:
policy.json: { "Statement": [ { "Action": [ "fsx:CreateStorageVirtualMachine", "fsx:DescribeFileSystems", "fsx:DescribeStorageVirtualMachines", "fsx:DescribeVolumes", "fsx:CreateVolume", "fsx:RestoreVolumeFromSnapshot", "fsx:DescribeStorageVirtualMachines", "fsx:UntagResource", "fsx:UpdateVolume", "fsx:TagResource", "fsx:DeleteVolume" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:CreateSecret", "secretsmanager:DeleteSecret", "secretsmanager:TagResource" ], "Effect": "Allow", "Resource": "arn:aws:secretsmanager:<aws-region>:<aws-account-id>:secret:*" } ], "Version": "2012-10-17" }
Cree un rol de IAM para la cuenta de servicio
aws iam create-role --role-name trident-controller \ --assume-role-policy-document file://trust-relationship.json
archivo trust-relationship.json:
{ "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" } } } ] }
Actualice los siguientes valores en el trust-relationship.json
archivo:
-
<account_id> - Su ID de cuenta de AWS
-
<oidc_provider> - El OIDC de su clúster EKS. Puede obtener oidc_provider ejecutando:
aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer"\ --output text | sed -e "s/^https:\/\///"
Adjuntar el rol de IAM con la política de IAM:
Una vez creado el rol, adjunte la política (que se creó en el paso anterior) al rol mediante este comando:
aws iam attach-role-policy --role-name my-role --policy-arn <IAM policy ARN>
Verificar que el proveedor de OICD está asociado:
Verifique que su proveedor de OIDC está asociado al clúster. Puede verificarlo con este comando:
aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
Utilice el siguiente comando para asociar IAM OIDC al cluster:
eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve