Atualizar manualmente o agente de contêiner do Amazon ECS (para AMIs não otimizadas para Amazon ECS) - Serviço Amazon Elastic Container

Atualizar manualmente o agente de contêiner do Amazon ECS (para AMIs não otimizadas para Amazon ECS)

Para atualizar manualmente o agente de contêiner do Amazon ECS (para AMIs não otimizadas para Amazon ECS)
nota

As atualizações de agente não se aplicam a instâncias de contêiner do Windows. É recomendável executar novas instâncias de contêiner para atualizar a versão do agente nos clusters do Windows.

  1. Faça login em sua instância de contêiner via SSH.

  2. Verifique se o seu agente usa a variável de ambiente ECS_DATADIR para salvar seu estado.

    ubuntu:~$ docker inspect ecs-agent | grep ECS_DATADIR

    Resultado:

    "ECS_DATADIR=/data",
    Importante

    Se o comando anterior não retornar a variável de ambiente ECS_DATADIR, você deverá interromper todas as tarefas em execução nessa instância de contêiner antes de atualizar seu agente. Agentes mais novos com a variável de ambiente ECS_DATADIR salvam seu estado, e você pode atualizá-los enquanto as tarefas são executadas sem problemas.

  3. Interrompa o agente de contêiner do Amazon ECS.

    ubuntu:~$ docker stop ecs-agent
  4. Exclua o contêiner de agente.

    ubuntu:~$ docker rm ecs-agent
  5. Verifique se o diretório /etc/ecs e o arquivo de configuração do agente de contêiner do Amazon ECS existem em /etc/ecs/ecs.config.

    ubuntu:~$ sudo mkdir -p /etc/ecs && sudo touch /etc/ecs/ecs.config
  6. Edite o arquivo /etc/ecs/ecs.config e verifique se ele contém pelo menos as seguintes instruções de variável. Se você não quiser que sua instância de contêiner seja registrada no cluster padrão, especifique seu nome de cluster como o valor para ECS_CLUSTER.

    ECS_DATADIR=/data ECS_ENABLE_TASK_IAM_ROLE=true ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true ECS_LOGFILE=/log/ecs-agent.log ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"] ECS_LOGLEVEL=info ECS_CLUSTER=default

    Para obter mais informações sobre essas e outras opções de tempo de execução de agente, consulte Configuração do agente de contêiner do Amazon ECS.

    nota

    Você pode, opcionalmente, armazenar suas variáveis de ambiente do agente no Amazon S3 (que podem ser baixadas para as instâncias de contêiner no momento da inicialização usando os dados de usuário do Amazon EC2). Isso é recomendado para informações confidenciais, como credenciais de autenticação para repositórios privados. Para obter mais informações, consulte Armazenamento da configuração da instância de contêiner no Amazon S3 e Autenticação de registro privado para tarefas.

  7. Extraia a imagem de agente de contêiner do Amazon ECS mais recente do Amazon Elastic Container Registry Public.

    ubuntu:~$ docker pull public.ecr.aws/ecs/amazon-ecs-agent:latest

    Resultado:

    Pulling repository amazon/amazon-ecs-agent a5a56a5e13dc: Download complete 511136ea3c5a: Download complete 9950b5d678a1: Download complete c48ddcf21b63: Download complete Status: Image is up to date for amazon/amazon-ecs-agent:latest
  8. Execute o agente de contêiner do Amazon ECS mais recente na instância de contêiner.

    nota

    Use políticas de reinicialização do Docker ou um gerenciador de processos (como upstart ou systemd) para tratar o agente de contêiner como um serviço ou um daemon e garantir que ele seja reiniciado após sair. Para obter mais informações, consulte Iniciar contêineres automaticamente e Reiniciar políticas na documentação do Docker. A AMI otimizada para Amazon ECS usa o RPM ecs-init para essa finalidade, e você pode visualizar o código-fonte para esse RPM no GitHub.

    O comando de execução de agente do exemplo a seguir é dividido em linhas separadas para mostrar cada opção. Para obter mais informações sobre essas e outras opções de tempo de execução de agente, consulte Configuração do agente de contêiner do Amazon ECS.

    Importante

    Os sistemas operacionais com o SELinux habilitado requerem a opção --privileged em seu comando docker run. Além disso, para instâncias de contêiner habilitadas para SELinux, recomendamos que você adicione a opção :Z às montagens de volume /log e /data. No entanto, as montagens de host para esses volumes devem existir para que você execute o comando; caso contrário, você receberá um erro no such file or directory. Execute a seguinte ação se você tiver dificuldades para executar o agente do Amazon ECS em uma instância de contêiner habilitada para o SELinux:

    • Crie os pontos de montagem de volume de host na instância de contêiner.

      ubuntu:~$ sudo mkdir -p /var/log/ecs /var/lib/ecs/data
    • Adicione a opção --privileged ao comando docker run abaixo.

    • Anexe a opção :Z às montagens de volume de contêiner /log e /data (por exemplo, --volume=/var/log/ecs/:/log:Z) ao comando docker run abaixo.

    ubuntu:~$ sudo docker run --name ecs-agent \ --detach=true \ --restart=on-failure:10 \ --volume=/var/run:/var/run \ --volume=/var/log/ecs/:/log \ --volume=/var/lib/ecs/data:/data \ --volume=/etc/ecs:/etc/ecs \ --volume=/etc/ecs:/etc/ecs/pki \ --net=host \ --env-file=/etc/ecs/ecs.config \ amazon/amazon-ecs-agent:latest
    nota

    Se você receber uma mensagem Error response from daemon: Cannot start container, poderá excluir o contêiner com falha com o comando sudo docker rm ecs-agent e tentar executar o comando novamente.