Ir para o conteúdo

Como posso atualizar minhas credenciais de repositório privado em um agente de contêiner do Amazon ECS?

5 minuto de leitura
0

Quero atualizar minhas credenciais de repositório privado em um agente de contêiner do Amazon Elastic Container Service (Amazon ECS) fornecido por meio do AWS Secrets Manager ou de variáveis de ambiente.

Breve descrição

Para fornecer credenciais de repositório privado para o agente de contêiner do Amazon ECS use o Secrets Manager em sua definição de tarefa ou variáveis de ambiente.

Observação: não é uma prática recomendada de segurança armazenar credenciais em texto simples em instâncias de contêiner. A menos que haja uma dependência arquitetônica direta no armazenamento de credenciais de registro na instância de contêiner, use o Secrets Manager.

Resolução

Atualizar suas credenciais de repositório privado com o Secrets Manager

Conclua as etapas a seguir:

  1. Abra o console do Secrets Manager.
  2. Escolha seu segredo e, em seguida, escolha Recuperar valor secreto.
  3. Escolha Editar.
  4. Atualize as credenciais armazenadas para seu registro privado e escolha Salvar.
  5. Conclua as etapas na seção Testar suas credenciais atualizadas do repositório privado.

Atualizar suas credenciais de repositório privado com variáveis de ambiente

Conclua as etapas a seguir:

  1. Conecte-se à sua instância de contêiner.
  2. Para analisar como você está fornecendo credenciais do Docker para seu agente de contêiner do ECS, execute o seguinte comando:
    $ cat /etc/ecs/ecs.config
    Esse comando retorna o conteúdo do arquivo /etc/ecs/ecs.config.

Se a variável ECS_ENGINE_AUTH_TYPE estiver definida como docker, você estará passando diretamente suas credenciais do Docker por texto simples para o agente de contêiner do ECS. No entanto, não é uma prática recomendada usar essa abordagem. Em vez disso, use o Secrets Manager. Ou use a abordagem de formato dockercfg na seção Obter um novo valor de autenticação do Docker.

Se a variável ECS_ENGINE_AUTH_TYPE estiver definida como dockercfg, você estará passando suas credenciais do Docker por meio de um valor de autenticação gerado pelo Docker que o comando docker login gerou. Se você usar essa abordagem, conclua as etapas na seção Obter um novo valor de autenticação do Docker.

Obter um novo valor de autenticação do Docker

Conclua as etapas a seguir:

  1. Para fazer login localmente em sua conta do Docker, execute o seguinte comando e insira suas novas credenciais:

    $ docker login
  2. Para concatenar seu arquivo config.json, execute o comando a seguir e copie o valor da chave de autenticação gerada pelo Docker:

    $ cat ~/.docker/config.json
  3. Para atualizar a variável ECS_ENGINE_AUTH_DATA, execute o seguinte comando:

    $ sudo vi /etc/ecs/ecs.config
  4. No editor vi, atualize o valor da variável ECS_ENGINE_AUTH_DATA para o valor da chave de autenticação do Docker. Exemplo:

    ECS_CLUSTER=TestECSCluster
    ECS_ENGINE_AUTH_TYPE=dockercfg
    ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"a2vpdGhhd3M6UGFzc3dvcmQ=","email":"email@example.com"}}
  5. Conclua as etapas na seção Reiniciar seu agente de contêiner do ECS.

Reiniciar seu agente de contêiner do ECS

Conclua as etapas a seguir:

  1. Para reiniciar seu agente de contêiner do ECS, execute um dos seguintes comandos com base nas imagens de máquina da Amazon (AMIs) nas quais suas instâncias de contêiner estão sendo executadas.
    AMIs otimizadas para ECS do Amazon Linux 2:
    $ sudo systemctl restart ecs
    Observação: O Amazon Linux 1 chegou ao fim de sua vida útil em 31 de dezembro de 2023. O Amazon Linux AMI não receberá mais nenhuma atualização de segurança ou correção de erros. Para obter mais informações, consulte Atualização sobre o fim da vida útil do Amazon Linux AMI.
    AMIs otimizadas para Amazon Linux ECS:
    $ sudo stop ecs && sudo start ecs
    Observação: para atualizar o arquivo /etc/ecs/ecs.config em outras instâncias de contêiner em seu cluster ECS, consulte Atualizar suas credenciais de repositório privado com variáveis de ambiente. Em seguida, siga o processo de atualização para cada instância de contêiner.
  2. Conclua as etapas na seção Testar suas credenciais atualizadas do repositório privado.

Testar suas credenciais atualizadas do repositório privado

Observação: no exemplo de teste a seguir, uma imagem atualizada é implantada em um cluster.

Conclua as etapas a seguir:

  1. Abra o console do Amazon ECS.
  2. No painel de navegação, escolha Clusters e selecione seu cluster.
  3. Selecione seu serviço e escolha Atualizar.
  4. Marque a caixa de seleção Forçar nova implantação.
  5. Escolha Atualizar.
  6. Na guia Implantações, revise a nova implantação. O Amazon ECS interrompe gradualmente as tarefas da implantação anterior. Em seguida, o Amazon ECS reinicia as tarefas na nova implantação enquanto o ECS tenta obter uma nova imagem.
    Observação: se você usar tarefas do tipo de inicialização do EC2, seu cluster deverá ter recursos suficientes para executar com êxito um tipo de implantação de atualização contínua.
  7. Escolha a guia Tarefas e, em seguida, verifique cada tarefa individual e seu status.

Se o status da tarefa estiver definido como Em execução, o serviço atualizou essa tarefa com êxito sem erros.

Se o último status da nova tarefa estiver definido como Interrompida | Falha ao iniciar a tarefa, o serviço atualizou essa tarefa e encontrou um erro. O agente de contêiner do ECS não consegue extrair uma nova imagem de contêiner e está usando a antiga imagem em cache. Verifique se suas credenciais foram atualizadas e, em seguida, execute outra atualização de implantação do serviço.

Observação: para exibir todos os detalhes da sua tarefa e ver o erro “pull access denied”, escolha o ID da tarefa que falhou. Na página Descrição, em Contêineres, selecione Interrompido.

Exemplo de mensagem de erro:

“CannotPullContainerError: Error response from daemon: pull access denied for user/reponame, repository does not exist or may require ‘docker login’”

Informações relacionadas

Configuração do agente de contêiner do Amazon ECS

Formatos de autenticação

AWS OFICIALAtualizada há 2 anos