Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
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 Container Storage Interface (CSI) de Amazon EFS
Consideraciones
-
El controlador CSI de Amazon EFS no es compatible con imágenes de contenedores basadas en Windows.
-
No se puede utilizar el aprovisionamiento dinámico
de volúmenes persistentes con los nodos de Fargate, pero sí se puede utilizar el aprovisonamiento estático . -
El aprovisionamiento dinámico
requiere la versión 1.2 del controlador o posterior. Puede utilizar el aprovisionamiento estático para volúmenes persistentes con la versión 1.1
del controlador en cualquier versión de clúster de Amazon EKS compatible (consulte Descripción del ciclo de vida de las versiones de Kubernetes en EKS). -
La versión 1.3.2
y posteriores de este controlador son compatibles con la arquitectura Arm64, incluidas las instancias basadas en Graviton de Amazon EC2. -
La versión 1.4.2
o posterior de este controlador admite el uso de FIPS para montar sistemas de archivos. -
Tome nota de las cuotas de recursos de Amazon EFS. Por ejemplo, hay una cuota de 1000 puntos de acceso que se pueden crear para cada sistema de archivos de Amazon EFS. Para obtener más información, consulte las cuotas de recursos de Amazon EFS que no puede cambiar.
-
A partir de la versión 2.0.0
, este controlador pasó de utilizar stunnel
aefs-proxy
para las conexiones TLS. Cuando se utilizaefs-proxy
, se abrirá una cantidad de subprocesos igual a uno más la cantidad de núcleos del nodo en el que se ejecuta. -
El controlador CSI de Amazon EFS no es compatible con los nodos híbridos de Amazon EKS.
Requisitos previos
-
Un proveedor existente de OpenID Connect (OIDC) de AWS Identity and Access Management (IAM) para su clúster. Para determinar si ya tiene un proveedor o para crear uno, consulte Crear un proveedor de OIDC de IAM para su clúster.
-
La versión
2.12.3
o posterior, o bien, la versión1.27.160
o posterior de la AWS interfaz de la línea de comandos (AWS CLI) instalada y configurada en su dispositivo o AWS CloudShell. Para comprobar su versión actual, utiliceaws --version | cut -d / -f2 | cut -d ' ' -f1
. Los administradores de paquetes, comoyum
,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 Instalación y Configuración rápida con aws configure en la Guía del usuario de la interfaz de la línea de comandos de AWS. 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 CLI de AWS en su directorio principal 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 es1.29
, puede usar la versión1.28
,1.29
o1.30
dekubectl
con él. Para instalar o actualizarkubectl
, consulte Configuración de kubectl y eksctl.
nota
Un pod que se ejecuta en Fargate monta automáticamente un sistema de archivos de Amazon EFS, sin necesidad de seguir pasos manuales para la instalación de controladores.
Paso 1: creación de 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. Para implementar este procedimiento, puede utilizar una de las siguientes herramientas:
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 Set up driver permission
eksctl
Ejecute los siguientes comandos para crear el rol de IAM con eksctl
. Reemplace my-cluster
por el nombre del clúster y AmazonEKS_EFS_CSI_DriverRole
por el nombre del 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
Ejecute lo siguiente para crear un rol de IAM con la AWS Management Console.
-
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación izquierdo, elija Roles.
-
En la página Roles, elija Crear rol.
-
En la página Seleccionar entidad de confianza, haga lo siguiente:
-
En la sección Tipo de entidad de confianza, elija Identidad web.
-
Para Identity provider (Proveedor de identidades), elija OpenID Connect provider URL (URL del proveedor de OpenID Connect) para el clúster, como se muestra en Overview (Resumen) en Amazon EKS.
-
En Audiencia, elija
sts.amazonaws.com
. -
Elija Siguiente.
-
-
En la página Agregar permisos, haga lo siguiente:
-
En el cuadro Filtrar políticas, escriba
AmazonEFSCSIDriverPolicy
. -
Seleccione la casilla situada a la izquierda de
AmazonEFSCSIDriverPolicy
en los resultados de la búsqueda. -
Elija Siguiente.
-
-
En la página Nombrar, revisar y crear, haga lo siguiente:
-
En Nombre del rol, ingrese un nombre único para su rol, por ejemplo,
AmazonEKS_EFS_CSI_DriverRole
. -
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.
-
Elija Creación de rol.
-
-
Una vez creado el rol, seleccione el rol en la consola para abrirlo y editarlo.
-
Elija la pestaña Relaciones de confianza y, a continuación, Editar política de confianza.
-
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. ReemplaceEXAMPLED539D4633E53DE1B71EXAMPLE
con el ID de proveedor de OIDC de su clúster."oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*",
-
Modifique el operador
Condition
de"StringEquals"
a"StringLike"
. -
Elija Actualizar política para terminar.
AWS CLI
Ejecute los siguientes comandos para crear un rol de IAM con la CLI de AWS.
-
Visualización de la URL del proveedor de OIDC de su clúster. Sustituya
my-cluster
por el nombre del clúster. Si la salida del comando esNone
, 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
-
Cree el rol de IAM que concede la acción
AssumeRoleWithWebIdentity
.-
Copie el siguiente contenido en un archivo denominado
aws-efs-csi-driver-trust-policy.json
. Reemplace111122223333
por el ID de su cuenta. ReemplaceEXAMPLED539D4633E53DE1B71EXAMPLE
yregion-code
por los valores que se devolvieron en el paso anterior.{ "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" } } } ] }
-
Creación del 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"
-
-
Asocie el comando requerido administrado por AWS al rol con el siguiente comando.
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 Cómo crear un complemento de Amazon EKS. Para obtener más información sobre los complementos, consulte Complementos de Amazon EKS. Si no puede utilizar 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 autoadministrada del controlador CSI de Amazon EFS, consulte Installation
Paso 3: creación de 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
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