Skip to main content
Hay disponible una nueva versión de este producto.
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Cree un rol de IAM y AWS Secret

Colaboradores netapp-aruldeepa

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.

Nota 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"

Policy JSON archivo:

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"
}

Cree un rol de IAM para la cuenta de servicio

CLI DE AWS
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
eksctl

En el siguiente ejemplo, se crea un rol de IAM para la cuenta de servicio en EKS:

eksctl create iamserviceaccount --name trident-controller --namespace trident \
  --cluster <my-cluster> --role-name <AmazonEKS_FSxN_CSI_DriverRole> --role-only \
  --attach-policy-arn <IAM-Policy ARN> --approve