Armazenar um sistema de arquivos elástico com o Amazon EFS - Amazon EKS

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

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 fornece uma interface CSI que permite que os clusters do Kubernetes executados na AWS gerenciem o ciclo de vida dos sistemas de arquivos do Amazon EFS. Este tópico mostra como implantar o driver da CSI do Amazon EFS no cluster do Amazon EKS.

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 usar efs-proxy para conexões TLS. Quando efs-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ão 1.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, use aws --version | cut -d / -f2 | cut -d ' ' -f1. Os gerenciadores de pacotes, como yum, 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 a 1.29, você poderá usar o kubectl versão 1.28, 1.29 ou 1.30 com ele. Para instalar ou atualizar o kubectl, 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 no GitHub.

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.

  1. Abra o console do IAM, em https://console.aws.amazon.com/iam/.

  2. No painel de navegação à esquerda, escolha Funções.

  3. Na página Roles (Funções), selecione Create role (Criar função).

  4. Na página Select trusted entity (Selecionar entidade confiável), faça o seguinte:

    1. Na seção Trusted entity type (Tipo de entidade confiável), escolha Web identity (Identidade da Web).

    2. Em Provedor de identidade, escolha URL do provedor OpenID Connect para o cluster (conforme mostrado na guia Visão geral do Amazon EKS).

    3. Para Audience (Público), escolha sts.amazonaws.com.

    4. Escolha Próximo.

  5. Na página Add permissions (Adicionar permissões), faça o seguinte:

    1. Na caixa Filtrar políticas, digite AmazonEFSCSIDriverPolicy.

    2. Marque a caixa de seleção à esquerda da AmazonEFSCSIDriverPolicy retornada na pesquisa.

    3. Escolha Próximo.

  6. Na página Name, review, and create (Nomear, revisar e criar), faça o seguinte:

    1. Em Nome do perfil, insira um nome exclusivo para o perfil, como AmazonEKS_EFS_CSI_DriverRole.

    2. 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.

    3. Selecione Criar perfil.

  7. Depois que a função for criada, escolha a função no console a fim de abri-la para edição.

  8. Escolha a guia Trust relationships (Relacionamentos de confiança) e, em seguida, escolha Edit trust policy (Editar política de confiança).

  9. 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. Substitua EXAMPLED539D4633E53DE1B71EXAMPLE pelo ID do provedor OIDC do cluster.

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

  11. Escolha Update Policy (Atualizar política) para concluir.

AWS CLI

Execute os seguintes comandos para criar um perfil IAM com a AWS CLI.

  1. Exiba a URL do provedor OIDC do cluster. Substitua my-cluster pelo nome do cluster. Se o resultado do comando for None, 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
  2. Crie um perfil do IAM que conceda a ação AssumeRoleWithWebIdentity.

    1. Copie o conteúdo a seguir em um arquivo chamado aws-efs-csi-driver-trust-policy.json``. Substitua 111122223333 pelo ID da sua conta. Substitua EXAMPLED539D4633E53DE1B71EXAMPLE e region-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" } } } ] }
    2. 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"
  3. 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 em GitHub.

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 no GitHub.

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 no GitHub.