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:
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:
- Scarica il Dockerfile generato dal bucket Cloud Storage in un nella directory locale del tuo ambiente Cloud Shell.
- Modifica il Dockerfile per aggiungere l'istruzione
RUN
evidenziata, come nell'esempio in alto. 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 .
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.