Ajudar a melhorar esta página
Quer contribuir para este guia do usuário? Escolha o link Editar esta página no GitHub, disponível no painel direito de cada página. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.
Armazenar um sistema de arquivos elástico com o Amazon EFS
O Amazon Elastic File System (Amazon EFS) fornece armazenamento de arquivos sem servidor e totalmente elástico para que você possa compartilhar dados de arquivos sem provisionar ou gerenciar a capacidade e a performance do armazenamento. O driver Container Storage Interface (CSI) do Amazon EFS
Considerações
-
O driver da CSI do Amazon EFS não é compatível com imagens de contêiner baseadas no Windows.
-
Você não pode usar o provisionamento dinâmico
de volumes persistentes com nós do Fargate, mas pode usar o provisionamento estático . -
O provisionamento dinâmico
requer a versão 1.2 ou posterior do driver. Você pode usar o provisionamento estático para volumes persistentes usando a versão 1.1
do driver em qualquer versão de cluster do Amazon EKS compatível (consulte Compreeender o ciclo de vida da versão do Kubernetes no EKS). -
A versão 1.3.2
ou superior deste driver é compatível com a arquitetura Arm64, inclusive instâncias baseadas no Graviton do Amazon EC2. -
A versão 1.4.2
ou posterior desse driver suporta o uso de FIPS para montagem de sistemas de arquivos. -
Anote as cotas de recursos do Amazon EFS. Por exemplo, há uma cota de 1000 pontos de acesso que podem ser criados para cada sistema de arquivos do Amazon EFS. Para obter mais informações, consulte Cotas de recursos do Amazon EFS que não podem ser alteradas.
-
A partir da versão 2.0.0
, esse driver deixou de usar stunnel
e passou a usarefs-proxy
para conexões TLS. Quandoefs-proxy
é usado, ele abre um número de threads igual a um mais o número de núcleos do nó em que está sendo executado. -
O driver CSI do Amazon EFS não é compatível com o Amazon EKS Hybrid Nodes.
Pré-requisitos
-
Um provedor existente do AWS Identity and Access Management (IAM) OpenID Connect (OIDC) para o cluster. Para determinar se você tem ou para criar uma, consulte Criar um provedor OIDC do IAM para o cluster.
-
Versão
2.12.3
ou posterior ou versão1.27.160
ou posterior da AWS Command Line Interface (AWS CLI) instalada e configurada no seu dispositivo ou no AWS CloudShell. Para verificar sua versão atual, useaws --version | cut -d / -f2 | cut -d ' ' -f1
. Os gerenciadores de pacotes, comoyum
,apt-get
ou Homebrew para macOS, geralmente estão várias versões atrás da versão mais recente da AWS CLI. Para instalar a versão mais recente, consulte Instalar e Configuração rápida com aws configure, no Guia do usuário da AWS Command Line Interface. A versão da AWS CLI instalada no AWS CloudShell também pode estar várias versões atrás da versão mais recente. Para atualizá-lo, consulte Instalar a AWS CLI no seu diretório pessoal, no Guia do usuário do AWS CloudShell. -
A ferramenta da linha de comando
kubectl
está instalada no seu dispositivo ou no AWS CloudShell. A versão pode ser idêntica ou até uma versão secundária anterior ou posterior à versão Kubernetes do seu cluster. Por exemplo, se a versão do cluster for a1.29
, você poderá usar okubectl
versão1.28
,1.29
ou1.30
com ele. Para instalar ou atualizar okubectl
, consulte Configurar o kubectl e o eksctl.
nota
Um Pod em execução no Fargate automaticamente monta um sistema de arquivos do Amazon EFS sem precisar das etapas de instalação manual do driver.
Etapa 1: Criar uma função do IAM
O driver da CSI do Amazon EFS exige permissões do IAM para interagir com seu sistema de arquivos. Crie um perfil do IAM de cluster e associe a política gerenciada do AWS a ele. Para implementar esse procedimento, você pode usar uma das seguintes ferramentas:
nota
As etapas específicas desse procedimento foram escritas para usar o driver como um complemento do Amazon EKS. Para obter detalhes sobre instalações autogerenciadas, consulte Set up driver permission
eksctl
Execute os seguintes comandos para criar um perfil IAM com o eksctl
. Substitua my-cluster
pelo nome do seu cluster e AmazonEKS_EFS_CSI_DriverRole
pelo nome do seu perfil.
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
Execute o seguinte para criar um perfil IAM com AWS Management Console.
-
Abra o console do IAM, em https://console.aws.amazon.com/iam/
. -
No painel de navegação à esquerda, escolha Funções.
-
Na página Roles (Funções), selecione Create role (Criar função).
-
Na página Select trusted entity (Selecionar entidade confiável), faça o seguinte:
-
Na seção Trusted entity type (Tipo de entidade confiável), escolha Web identity (Identidade da Web).
-
Em Provedor de identidade, escolha URL do provedor OpenID Connect para o cluster (conforme mostrado na guia Visão geral do Amazon EKS).
-
Para Audience (Público), escolha
sts.amazonaws.com
. -
Escolha Próximo.
-
-
Na página Add permissions (Adicionar permissões), faça o seguinte:
-
Na caixa Filtrar políticas, digite
AmazonEFSCSIDriverPolicy
. -
Marque a caixa de seleção à esquerda da
AmazonEFSCSIDriverPolicy
retornada na pesquisa. -
Escolha Próximo.
-
-
Na página Name, review, and create (Nomear, revisar e criar), faça o seguinte:
-
Em Nome do perfil, insira um nome exclusivo para o perfil, como
AmazonEKS_EFS_CSI_DriverRole
. -
Em Adicionar tags (Opcional), adicione metadados ao perfil anexando tags como pares chave-valor. Para obter mais informações sobre o uso de tags no IAM, consulte Marcar recursos do IAM no Guia do usuário do IAM.
-
Selecione Criar perfil.
-
-
Depois que a função for criada, escolha a função no console a fim de abri-la para edição.
-
Escolha a guia Trust relationships (Relacionamentos de confiança) e, em seguida, escolha Edit trust policy (Editar política de confiança).
-
Encontre a linha semelhante à seguinte:
"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"
Adicione a seguinte linha acima da linha anterior. Substitua
region-code
pela região da AWS em que seu cluster se encontra. SubstituaEXAMPLED539D4633E53DE1B71EXAMPLE
pelo ID do provedor OIDC do cluster."oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*",
-
Modifique o operador
Condition
de"StringEquals"
para"StringLike"
. -
Escolha Update Policy (Atualizar política) para concluir.
AWS CLI
Execute os seguintes comandos para criar um perfil IAM com a AWS CLI.
-
Exiba a URL do provedor OIDC do cluster. Substitua
my-cluster
pelo nome do cluster. Se o resultado do comando forNone
, revise os Pré-requisitos.aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text
Veja um exemplo de saída abaixo.
https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
-
Crie um perfil do IAM que conceda a ação
AssumeRoleWithWebIdentity
.-
Copie o conteúdo a seguir em um arquivo chamado
aws-efs-csi-driver-trust-policy
.json``. Substitua111122223333
pelo ID da sua conta. SubstituaEXAMPLED539D4633E53DE1B71EXAMPLE
eregion-code
pelos valores retornados na etapa 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" } } } ] }
-
Crie a função. Você pode alterar o
AmazonEKS_EFS_CSI_DriverRole
para um nome diferente, mas, se fizer isso, certifique-se de alterá-lo também nas etapas posteriores.aws iam create-role \ --role-name AmazonEKS_EFS_CSI_DriverRole \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy.json"
-
-
Anexe a política gerenciada pela AWS necessária à função com o comando a seguir.
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --role-name AmazonEKS_EFS_CSI_DriverRole
Etapa 2: obter o driver de CSI do Amazon EFS
Recomendamos que você instale o driver da CSI do Amazon EFS por meio do complemento Amazon EKS. Para adicionar um complemento do Amazon EKS ao cluster, consulte Criar um complemento do Amazon EKS. Para obter mais informações sobre complementos, consulte Complementos do Amazon EKS. Se você não conseguir usar o complemento do Amazon EKS, recomendamos que você envie um problema sobre o motivo pelo qual não pode usar o repositório GitHub para roteiro de contêineres
Como alternativa, se quiser uma instalação autogerenciada do driver da CSI do Amazon EFS, consulte Instalação
Etapa 3: criar um sistema de arquivos do Amazon EFS
Para criar um sistema de arquivos do Amazon EFS, consulte Criar um sistema de arquivos do Amazon EFS para o Amazon EKS
Etapa 4: implantar uma aplicação de exemplo
Você pode implantar toda uma variedade de aplicações de exemplo e modificá-las conforme necessário. Para obter mais informações, consulte Exemplos de