¿Cómo puedo actualizar las credenciales de mi repositorio privado en un agente de contenedor de Amazon ECS?

5 minutos de lectura
0

Quiero actualizar las credenciales de mi repositorio privado en un agente de contenedor de Amazon Elastic Container Service (Amazon ECS) que se suministra a través de AWS Secrets Manager o variables de entorno.

Breve descripción

Puede proporcionar las credenciales de un repositorio privado al agente de contenedor de Amazon ECS mediante Secrets Manager en la definición de la tarea o las variables de entorno.

Seleccione una de las siguientes opciones:

  • Si utiliza Secrets Manager para proporcionar credenciales de un repositorio privado, siga los pasos de la sección Actualizar las credenciales del repositorio privado con Secrets Manager.
  • Si utiliza datos de usuario de la instancia y variables de entorno para proporcionar las credenciales del repositorio privado, siga los pasos de la sección Actualizar las credenciales del repositorio privado con variables de entorno.

Nota: No es una práctica recomendada de seguridad almacenar las credenciales en texto plano en las instancias de contenedor. En su lugar, se recomienda utilizar Secrets Manager, a menos que la arquitectura dependa directamente del almacenamiento de las credenciales del registro en la instancia de contenedor.

Resolución

Actualizar las credenciales del repositorio privado con Secrets Manager

1.    Abra la consola de Secrets Manager.

2.    Seleccione su secreto y, a continuación, seleccione Recuperar el valor secreto.

3.    Seleccione Editar.

4.    Actualice las credenciales almacenadas para su registro privado y, a continuación, seleccione Guardar.

Para continuar, siga los pasos de la sección Probar las credenciales actualizadas del repositorio privado.

Actualizar las credenciales del repositorio privado con variables de entorno

1.    Conéctese a su instancia de contenedor.

2.    Para averiguar cómo suministra las credenciales de Docker a su agente de contenedor de ECS, ejecute el siguiente comando:

$ cat /etc/ecs/ecs.config

Este comando devuelve el contenido del archivo /etc/ecs/ecs.config.

Si la variable ECS_ENGINE_AUTH_TYPE está configurada en docker, está pasando directamente sus credenciales de Docker en texto plano a su agente de contenedor de ECS. Debe evitar este método. En su lugar, utilice Secrets Manager o el método del formato dockercfg en la sección Obtener un nuevo valor de autenticación de Docker.

Si la variable ECS_ENGINE_AUTH_TYPE está configurada en dockercfg, está pasando sus credenciales de Docker mediante un valor de autenticación generado por Docker generado por el comando docker login. Para continuar con este método, complete los pasos de la sección Obtener un nuevo valor de autenticación de Docker.

Obtener un nuevo valor de autenticación de Docker

1.    Para iniciar sesión en Docker localmente, ejecute el siguiente comando y, a continuación, introduzca sus nuevas credenciales:

$ docker login

2.    Para concatenar el archivo config.json, ejecute el siguiente comando y, a continuación, copie el valor de la clave de autenticación generada por Docker:

$ cat ~/.docker/config.json

3.    Para actualizar la variable ECS_ENGINE_AUTH_DATA, ejecute el siguiente comando:

$ sudo vi /etc/ecs/ecs.config

4.    En el editor vi, actualice el valor de la variable ECS_ENGINE_AUTH_DATA al valor de la clave de autenticación de Docker del paso 2. Por ejemplo:

ECS_CLUSTER=TestECSCluster
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth","a2vpdGhhd3M6UGFzc3dvcmQ="}}

Para continuar, siga los pasos de la sección Reiniciar el agente de contenedor de ECS.

Reiniciar el agente de contenedor de ECS

1.    Para reiniciar el agente de contenedor de ECS, ejecute uno de los siguientes comandos en función de las imágenes de máquina de Amazon (AMI) en las que se ejecutan las instancias de contenedor.

AMI optimizadas para Amazon Linux ECS:

$ sudo stop ecs && sudo start ecs

AMI optimizadas para ECS Amazon Linux 2:

$ sudo systemctl restart ecs

Nota: Para actualizar el archivo /etc/ecs/ecs.config en otras instancias de contenedor de su clúster de ECS, vuelva a la sección Actualizar las credenciales del repositorio privado con variables de entorno. A continuación, siga el proceso de actualización para cada instancia de contenedor.

Para continuar, siga los pasos de la sección Probar las credenciales actualizadas del repositorio privado.

Probar las credenciales actualizadas del repositorio privado

Los siguientes pasos asumen que está desplegando una imagen actualizada en todo el clúster.

1.    Abra la consola Amazon ECS.

2.    En el panel de navegación, seleccione Clústeres y, a continuación, seleccione su clúster.

3.    Seleccione su servicio y, a continuación, seleccione Actualizar.

4.    Seleccione la casilla de verificación Forzar un nuevo despliegue.

5.    En Porcentaje en buen estado mínimo, introduzca 50.

6.    Complete los pasos restantes del asistente de configuración y, a continuación, seleccione Actualizar servicio.

7.    Seleccione Ver servicio.

8.    En la pestaña Despliegues, consulte el nuevo despliegue. Amazon ECS detiene gradualmente las tareas del despliegue anterior y, a continuación, las reinicia bajo el nuevo despliegue mientras intenta extraer una nueva imagen.

Nota: En el paso 8 se asume que su clúster cuenta con recursos suficientes para realizar correctamente un tipo de despliegue de actualización continua.

9.    Seleccione la pestaña Tareas y, a continuación, compruebe cada tarea individual y su estado.

Si el estado de la tarea está establecido en En ejecución, el servicio ha actualizado esta tarea correctamente sin errores.

Si el estado de la tarea está establecido en En ejecución (CannotPullContainerError), el servicio ha actualizado esta tarea, pero se ha producido un error. El agente de contenedor de ECS no puede extraer una nueva imagen de contenedor y utiliza la imagen antigua en caché. Compruebe que sus credenciales estén actualizadas y, a continuación, realice otra actualización del despliegue del servicio.

Nota: Para mostrar todos los detalles de la tarea y ver el error «acceso a extracción denegado», seleccione la flecha desplegable correspondiente al estado de su tarea individual. Por ejemplo:

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

Información relacionada

Configuración del agente de contenedor de Amazon ECS

Formatos de autenticación

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años