Aggiornamenti immagine post-migrazione

Gli artefatti dei container che crei con il comando migctl migration generate-artifacts non sono destinati solo al deployment del carico di lavoro di cui è stata eseguita la migrazione nel cluster di destinazione. Sono utili anche per le operazioni di manutenzione del secondo giorno, tra cui l'applicazione di aggiornamenti del software del sistema operativo in modalità utente e delle applicazioni, le patch di sicurezza, la modifica delle configurazioni incorporate, l'aggiunta o la sostituzione di file e l'aggiornamento del software di runtime Migrate to Containers.

Revisione del Dockerfile dell'immagine generata

Queste operazioni di manutenzione sfruttano il Dockerfile generato e il livello dell'immagine di sistema acquisito. Se combinati con il livello di runtime Migrate to Containers, questi file possono essere integrati in un'immagine container eseguibile.

Gli artefatti dei container generati sono stati creati tenendo conto dell'integrazione della fase di build della pipeline CI/CD, come descritto nel seguente diagramma:

Diagramma che mostra la pipeline CI/CD.

Il Dockerfile è strutturato come una compilazione multi-fase, per semplificare la manutenzione e la manipolazione, evitando al tempo stesso il gonfiaggio dell'immagine.

Di seguito è riportato un esempio di Dockerfile generato:

# Please refer to the documentation:
# https://cloud.google.com/migrate/anthos/docs/dockerfile-reference

FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.6.0 as migrate-for-anthos-runtime

# Image containing data captured from the source VM
FROM gcr.io/myproject/myworkload-non-runnable-base:v1.0.0 as source-content

# If you want to update parts of the image, add your commands here.
# For example:
# RUN apt-get update
# RUN apt-get install -y \
#               package1=version \
#               package2=version \
#               package3=version
# RUN yum update
# RUN wget http://github.com

COPY --from=migrate-for-anthos-runtime / /

# Migrate for GKE Enterprise image includes entrypoint
ENTRYPOINT [ "/.v2k.go" ]

La seconda istruzione FROM fa riferimento al livello dell'immagine di sistema acquisita dalla VM migrata. Questo livello non è eseguibile da solo e deve essere combinato con il livello di runtime Migrate to Containers per creare un'immagine eseguibile.

Per ulteriori informazioni sulla creazione di immagini container con Cloud Build, consulta Creazione di immagini container.

Aggiornamento del livello dei componenti dei carichi di lavoro migrati

Gli eventuali aggiornamenti o modifiche da applicare al livello dell'immagine dei carichi di lavoro di cui è stata eseguita la migrazione devono essere applicati dopo la seconda istruzione FROM.

Nell'esempio seguente, aggiorniamo un'immagine container di cui è stata eseguita la migrazione da una VM SUSE Enterprise Linux (SLES) come origine, utilizzando Cloud Build e gcloud CLI. L'esempio seguente aggiorna il pacchetto SLES distro openssh.

Dockerfile aggiornato:

# Image containing data captured from the source VM
FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.6.0 as migrate-for-anthos-runtime

# Image containing data captured from the source VM
FROM gcr.io/myproject/myworkload-non-runnable-base:v1.0.0 as source-content

# If you want to update parts of the image, add your commands here.
# For example:
# RUN apt-get update
# RUN apt-get install -y \
#               package1=version \
#               package2=version \
#               package3=version
# RUN yum update
# RUN wget http://github.com

RUN zypper ref -s && zypper -n in openssh
COPY --from=migrate-for-anthos-runtime / /

# Migrate to Containers image includes entrypoint
ENTRYPOINT [ "/.v2k.go" ]

Creazione dell'immagine aggiornata:

  1. Scarica il Dockerfile generato dal bucket Cloud Storage in una directory locale nel tuo ambiente Cloud Shell.
  2. Modifica il Dockerfile per aggiungere l'istruzione RUN evidenziata, come nell'esempio riportato sopra.
  3. Crea l'immagine aggiornata ed esegui il push su Container Registry con un tag di versione aggiornato, assicurandoti di lasciare tempo sufficiente per il completamento della build. Nell'esempio seguente, l'immagine si trova nella directory attuale:

    gcloud builds submit --timeout 4h --tag gcr.io/myproject/mySUSEworkload:v1.0.1 .
    
  4. Puoi utilizzare l'immagine appena creata per aggiornare un deployment esistente, ad esempio per eseguire un upgrade in sequenza dell'applicazione di cui è stato eseguito il deployment:

    kubectl set image deployment/myWorkload my-app=gcr.io/myproject/mySUSEworkload:v1.0.1 --record
    

Aggiornamento della versione del livello Migrate to Containers

Quando vengono rilasciate nuove versioni del software Migrate to Containers, puoi aggiornarla nelle immagini dei carichi di lavoro di cui è stato eseguito il deployment. Tali aggiornamenti possono includere nuove funzionalità, miglioramenti o correzioni di bug.

Per aggiornare il livello software Migrate to Containers, modifica il Dockerfile e cambia il tag di versione con la versione aggiornata che vuoi applicare.

Utilizzando l'esempio precedente, puoi aggiornare la versione dalla v1.6.0 alla versione ipotetica v1.15.0 modificando l'istruzione FROM come segue:

FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.15.0 as migrate-for-anthos-runtime

Dopo aver aggiornato il Dockerfile, dovrai creare una nuova versione dell'immagine del container del carico di lavoro e applicarla ai deployment esistenti per aggiornarli.

Passaggi successivi