Almacenamiento de un sistema de archivos elástico con Amazon EFS - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Almacenamiento de un sistema de archivos elástico con Amazon EFS

Amazon Elastic File System (Amazon EFS) proporciona un almacenamiento de archivos totalmente elástico y sin servidor para que pueda compartir datos de archivos sin aprovisionar ni administrar la capacidad de almacenamiento ni el rendimiento. El controlador de la interfaz de almacenamiento de contenedores (CSI) de Amazon EFS proporciona una interfaz CSI que permite a los clústeres de Kubernetes que se ejecutan en AWS administrar el ciclo de vida de los sistemas de archivos de Amazon EFS. En este tema se muestra cómo implementar el controlador CSI de Amazon EFS en su clúster de Amazon EKS.

Consideraciones

Requisitos previos

  • Un proveedor OpenID Connect (OIDC) de AWS Identity and Access Management (IAM) existente para el clúster. Para determinar si ya tiene un proveedor o para crear uno, consulte Creación de un proveedor de OIDC de IAM para su clúster.

  • La versión 2.12.3 o posterior, o bien, la versión 1.27.160 o posterior de la AWS Command Line Interface (AWS CLI) instalada y configurada en su dispositivo o AWS CloudShell. Para comprobar su versión actual, utilice aws --version | cut -d / -f2 | cut -d ' ' -f1. Los administradores de paquetes tales como yum, apt-get o Homebrew para macOS suelen estar atrasados varias versiones respecto de la versión de la AWS CLI más reciente. Para instalar la versión más reciente, consulte Instalar, actualizar y desinstalar la AWS CLI y Configuración rápida con aws configure en la Guía del usuario de AWS Command Line Interface. La versión de AWS CLI instalada en AWS CloudShell también puede estar atrasada varias versiones respecto de la versión más reciente. Para actualizarla, consulte Instalación de la AWS CLI en el directorio de inicio en la Guía del usuario de AWS CloudShell.

  • La herramienta de línea de comandos de kubectl está instalada en su dispositivo o AWS CloudShell. La versión puede ser la misma o hasta una versión secundaria anterior o posterior a la versión de Kubernetes de su clúster. Por ejemplo, si la versión del clúster es 1.29, puede usar la versión 1.28, 1.29 o 1.30 de kubectl con él. Para instalar o actualizar kubectl, consulte Configuración de kubectl y eksctl.

Paso 1: Crear un rol de IAM

El controlador CSI de Amazon EFS requiere permisos de IAM para interactuar con el sistema de archivos. Cree un rol de IAM y adjúntelo a la política administrada de AWS requerida. Puede utilizar la eksctl, la AWS Management Console o la AWS CLI.

nota

Los pasos específicos de este procedimiento están diseñados para usar el controlador como complemento de Amazon EKS. Para obtener más información sobre las instalaciones autoadministradas, consulte Configurar el permiso del controlador en GitHub.

eksctl

Para crear el rol de IAM del controlador CSI de Amazon EFS con eksctl

Ejecute los siguientes comandos para crear el rol de IAM. Reemplace my-cluster con el nombre del clúster y reemplace AmazonEKS_EFS_CSI_DriverRole con el nombre para su rol.

export cluster_name=my-cluster export role_name=AmazonEKS_EFS_CSI_DriverRole eksctl create iamserviceaccount \ --name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $role_name \ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --approve TRUST_POLICY=$(aws iam get-role --role-name $role_name --query 'Role.AssumeRolePolicyDocument' | \ sed -e 's/efs-csi-controller-sa/efs-csi-*/' -e 's/StringEquals/StringLike/') aws iam update-assume-role-policy --role-name $role_name --policy-document "$TRUST_POLICY"
AWS Management Console
Cómo crear el rol de IAM del controlador CSI de Amazon EFS con la AWS Management Console
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación izquierdo, seleccione Roles.

  3. En la página Roles, elija Crear rol.

  4. En la página Seleccionar entidad de confianza, haga lo siguiente:

    1. En la sección Tipo de entidad de confianza, elija Identidad web.

    2. En Identity provider (Proveedor de identidades), elija la URL del proveedor de OpenID Connect para su clúster (como se muestra en Overview [Información general] en Amazon EKS).

    3. En Audiencia, elija sts.amazonaws.com.

    4. Elija Siguiente.

  5. En la página Agregar permisos, haga lo siguiente:

    1. En el cuadro Filtrar políticas, escriba AmazonEFSCSIDriverPolicy.

    2. Marque la casilla situada a la izquierda del nombre de la AmazonEFSCSIDriverPolicy que obtuvo en la búsqueda.

    3. Elija Siguiente.

  6. En la página Nombrar, revisar y crear, haga lo siguiente:

    1. En Nombre del rol, ingrese un nombre único para su rol, por ejemplo, AmazonEKS_EFS_CSI_DriverRole.

    2. En Agregar etiquetas (Opcional), de manera opcional, agregue metadatos al rol asociando etiquetas como pares de clave-valor. Para obtener más información sobre el uso de etiquetas en IAM, consulte Etiquetado de recursos de IAM en la Guía de usuario de IAM.

    3. Elija Crear rol.

  7. Una vez creado el rol, seleccione el rol en la consola para abrirlo y editarlo.

  8. Elija la pestaña Relaciones de confianza y, a continuación, Editar política de confianza.

  9. Busque la línea que se parezca a la siguiente:

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

    Añada la siguiente línea por encima de la línea anterior. Reemplace region-code por la Región de AWS en la que se encuentra el clúster. Reemplace EXAMPLED539D4633E53DE1B71EXAMPLE con el ID del proveedor OIDC del clúster.

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*",
  10. Modifique el operador Condition de "StringEquals" a "StringLike".

  11. Elija Actualizar política para terminar.

AWS CLI
Para crear el rol de IAM del controlador CSI de Amazon EFS con la AWS CLI
  1. Vea la URL del proveedor de OIDC de su clúster. Reemplace my-cluster por el nombre de su clúster. Si la salida del comando es None, revise los Requisitos previos.

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

    Un ejemplo de salida sería el siguiente.

    https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
  2. Cree el rol de IAM que concede la acción AssumeRoleWithWebIdentity.

    1. Copie el siguiente contenido en un archivo denominado aws-efs-csi-driver-trust-policy.json. Reemplace 111122223333 por su ID de cuenta. Reemplace EXAMPLED539D4633E53DE1B71EXAMPLE y region-code por los valores que se devolvieron en el paso anterior. Si su clúster está en las Regiones de AWS AWS GovCloud (Este de EE. UU.) o AWS GovCloud (Oeste de EE. UU.), reemplace arn:aws: con arn:aws-us-gov:.

      { "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": { "StringLike": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
    2. Cree el rol. Puede cambiar el nombre de AmazonEKS_EFS_CSI_DriverRole, pero si lo hace, asegúrese de cambiarlo también en los pasos posteriores.

      aws iam create-role \ --role-name AmazonEKS_EFS_CSI_DriverRole \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy.json"
  3. Asocie el comando requerido administrado por AWS al rol con el siguiente comando. Si su clúster está en las Regiones de AWS AWS GovCloud (Este de EE. UU.) o AWS GovCloud (Oeste de EE. UU.), reemplace arn:aws: con arn:aws-us-gov:.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --role-name AmazonEKS_EFS_CSI_DriverRole

Paso 2: obtención del controlador de CSI de Amazon EFS

Le recomendamos que instale el controlador CSI de Amazon EFS a través del complemento Amazon EKS. Para agregar un complemento de Amazon EKS al clúster, consulte Creación de un complemento de Amazon EKS. Para obtener más información sobre los complementos, consulte Complementos de Amazon EKS. Si no puede usar el complemento de Amazon EKS, le recomendamos que envíe una pregunta sobre los motivos por los que no puede hacerlo al repositorio de GitHub de la hoja de ruta de contenedores.

Como alternativa, si desea una instalación autogestionada del controlador CSI de Amazon EFS, consulte Instalación en GitHub.

Paso 3: Crear un sistema de archivos de Amazon EFS

nota

Este paso no es necesario para AWS Fargate. Un Pod que se ejecuta en Fargate monta automáticamente un sistema de archivos de Amazon EFS.

Para crear un sistema de archivos de Amazon EFS, consulte Crear un sistema de archivos de Amazon EFS para Amazon EKS en GitHub.

Paso 4: implementación de una aplicación de muestra

Puede implementar una variedad de aplicaciones de muestra y modificarlas según sea necesario. Para obtener más información, consulte Ejemplos en GitHub.