Aggiornamenti immagine post-migrazione

Gli artefatti del container che crei con migctl migration generate-artifacts non sono destinate solo al deployment del carico di lavoro migrato nella destinazione in un cluster Kubernetes. Si riferiscono anche al "Giorno 2" operazioni di manutenzione, inclusa l'applicazione aggiornamenti software del sistema operativo in modalità utente e delle applicazioni, patch di sicurezza, modifica configurazioni, l'aggiunta o la sostituzione di file e l'aggiornamento Software di runtime Migrate to Containers.

Esamina il Dockerfile dell'immagine generata

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

Gli artefatti del container generati sono stati creati con la build della pipeline CI/CD per l'integrazione delle fasi, come descritto nel diagramma seguente:

Diagramma che mostra la pipeline CI/CD.

Il Dockerfile è strutturato come creazione multifase, per semplificare la manutenzione e la manipolazione, evitando al contempo che l'immagine si gonfia.

Ecco un esempio di un 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 acquisito da per la 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 saperne di più sulla creazione di immagini container con Cloud Build, consulta Creazione di immagini container.

Aggiornamento del livello dei componenti del carico di lavoro sottoposto a migrazione

Per eventuali aggiornamenti o modifiche da applicare al carico di lavoro di cui è stata eseguita la migrazione devi applicarle dopo la seconda istruzione FROM.

Nell'esempio seguente, aggiorniamo un'immagine container migrata da un SUSE VM Enterprise Linux (SLES) come origine, utilizzando Cloud Build e con gcloud CLI. L'esempio seguente aggiorna il pacchetto della distribuzione SLES 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 un nella directory locale del tuo ambiente Cloud Shell.
  2. Modifica il Dockerfile per aggiungere l'istruzione RUN evidenziata, come nell'esempio in alto.
  3. Crea l'immagine aggiornata ed esegui il push su Container Registry con una versione aggiornata in modo da lasciare tempo sufficiente per il completamento della build. Nella 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 graduale 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 aggiornare la versione del software nelle immagini del carico di lavoro di cui è stato eseguito il deployment. Tali aggiornamenti potrebbero includono nuove funzionalità, miglioramenti o correzioni di bug.

Per aggiornare il livello software di Migrate to Containers, modifica il Dockerfile e cambia il tag della 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 nel seguente modo:

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

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

Passaggi successivi