Come faccio ad aggiornare le credenziali del mio repository privato su un agente container Amazon ECS?

5 minuti di lettura
0

Desidero aggiornare le credenziali del mio repository privato su un agente container Amazon Elastic Container Service (Amazon ECS) fornito tramite AWS Secrets Manager o variabili di ambiente.

Breve descrizione

Puoi fornire credenziali del repository privato all'agente container Amazon ECS tramite Secrets Manager nella definizione dell'attività o nelle variabili di ambiente.

Scegli una delle seguenti opzioni:

  • Se utilizzi Secrets Manager per fornire credenziali del repository privato, segui i passaggi indicati nella sezione Aggiorna le credenziali del repository privato con Secrets Manager.
  • Se utilizzi dati utente dell'istanza e variabili di ambiente per fornire credenziali del repository privato, segui i passaggi indicati nella sezione Aggiorna le credenziali del repository privato con variabili di ambiente.

Nota: archiviare le credenziali come testo in chiaro sulle istanze di container non è una pratica sicura. Ti consigliamo di utilizzare Secrets Manager, a meno che non vi sia una dipendenza architetturale diretta relativa all'archiviazione delle credenziali di registro all'interno dell'istanza di container.

Risoluzione

Aggiorna le credenziali del repository privato con Secrets Manager

1.    Apri la console Secrets Manager.

2.    Scegli il segreto, quindi seleziona Recupera il valore del segreto.

3.    Scegli Modifica.

4.    Aggiorna le credenziali archiviate per il registro privato e scegli Salva.

Per continuare, segui i passaggi indicati nella sezione Verifica le credenziali aggiornate del repository privato.

Aggiorna le credenziali del repository privato con variabili di ambiente

1.    Connettiti alla tua istanza di container.

2.    Per sapere come stai fornendo le credenziali Docker all'agente container ECS, esegui il seguente comando:

$ cat /etc/ecs/ecs.config

Questo comando restituisce il contenuto del file /etc/ecs/ecs.config.

Se la variabile ECS_ENGINE_AUTH_TYPE è impostata su docker, significa che stai fornendo direttamente le tue credenziali Docker come testo in chiaro al tuo agente container ECS. Ti consigliamo di evitare questo approccio. Utilizza invece Secrets Manager o l'approccio dockercfg indicato nella sezione Ottieni un nuovo valore di autenticazione Docker.

Se la variabile ECS_ENGINE_AUTH_TYPE è impostata su dockercfg, significa che stai fornendo le tue credenziali Docker come valore di autenticazione generato da Docker tramite il comando docker login. Per continuare con questo approccio, segui i passaggi indicati nella sezione Ottieni un nuovo valore di autenticazione Docker.

Ottieni un nuovo valore di autenticazione Docker

1.    Per accedere a Docker in locale, esegui il seguente comando e inserisci le tue nuove credenziali:

$ docker login

2.    Per concatenare il file config.json, esegui il seguente comando, quindi copia il valore di autenticazione generato da Docker:

$ cat ~/.docker/config.json

3.    Per aggiornare la variabile ECS_ENGINE_AUTH_DATA, esegui il seguente comando:

$ sudo vi /etc/ecs/ecs.config

4.    Nell'editor vi, aggiorna il valore della variabile ECS_ENGINE_AUTH_DATA con il valore di autenticazione Docker generato nel passaggio 2. Ad esempio:

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

Per continuare, segui i passaggi indicati nella sezione Riavvia il tuo agente container ECS.

Riavvia il tuo agente container ECS

1.    Per riavviare l'agente container ECS, esegui uno dei seguenti comandi in base alle Amazon Machine Image (AMI) su cui sono in esecuzione le istanze di container.

AMI ottimizzate per ECS di Amazon Linux:

$ sudo stop ecs && sudo start ecs

AMI ottimizzate per ECS di Amazon Linux 2:

$ sudo systemctl restart ecs

Nota: per aggiornare il file /etc/ecs/ecs.config nelle altre istanze di container nel tuo cluster ECS, torna alla sezione Aggiorna le credenziali del repository privato con variabili di ambiente. In seguito, segui il processo di aggiornamento per ogni istanza di container.

Per continuare, segui i passaggi indicati nella sezione Verifica le credenziali aggiornate del repository privato.

Verifica le credenziali aggiornate del repository privato

I passaggi seguenti presuppongono che tu stia implementando un'immagine aggiornata nel tuo cluster.

1.    Apri la console Amazon ECS.

2.    Nel pannello di navigazione, scegli Cluster, quindi seleziona il tuo cluster.

3.    Seleziona il tuo servizio, quindi scegli Aggiorna.

4.    Seleziona la casella di controllo Forza una nuova implementazione.

5.    In Percentuale minima di integrità, inserisci 50.

6.    Completa i passaggi rimanenti della procedura guidata di configurazione e scegli Aggiorna servizio.

7.    Scegli Visualizza servizio.

8.    Nella scheda Implementazioni, visualizza la nuova implementazione. Amazon ECS interrompe gradualmente le attività nell'implementazione precedente e le riprende nella nuova implementazione mentre tenta una nuova estrazione delle immagini.

Nota: il passaggio 8 presuppone che il cluster disponga di risorse sufficienti per eseguire correttamente un tipo di implementazione con aggiornamento continuo.

9.    Scegli la scheda Attività, quindi controlla ogni singola attività e il relativo stato.

Se lo stato dell'attività è impostato su In esecuzione, il servizio ha aggiornato correttamente l'attività senza errori.

Se lo stato dell'attività è impostato su In esecuzione (CannotPullContainerError), il servizio ha aggiornato l'attività, ma si è verificato un errore. L'agente container ECS non è in grado di estrarre una nuova immagine di container e utilizza la vecchia immagine memorizzata nella cache. Verifica che le tue credenziali siano state aggiornate, quindi esegui un altro aggiornamento di implementazione del servizio.

Nota: per visualizzare i dettagli completi dell'attività e visualizzare l'errore "pull access denied", scegli la freccia del menu a discesa relativa allo stato dell'attività individuale. Ad esempio:

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

Informazioni correlate

Configurazione dell'agente container Amazon ECS

Formati di autenticazione

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa