Informazioni sui container di sistema Linux

L'interfaccia a riga di comando Migrate to Containers ti consente di eseguire la migrazione delle applicazioni basate su Linux ambienti containerizzati. Usa un container di sistema Linux predefinito funziona come un bootloader per i servizi richiesti dall'applicazione un'applicazione. Con le applicazioni Migrate to Containers per Linux, puoi modernizzare un'ampia gamma di applicazioni stateless da eseguire su Google Kubernetes Engine (GKE), in Cloud Run e nei cluster GKE.

Per maggiori informazioni, vedi Eseguire la migrazione all'architettura dell'interfaccia a riga di comando di Containers.

Questo documento fornisce dettagli sui container di sistema Linux di Migrate to Containers utilizzate come parte della soluzione per l'esecuzione di applicazioni migrate Migrate to Containers.

Migrazione tramite container di sistema Linux

Migrate to Containers rileva i file e i processi dell'applicazione di origine. Poi genera artefatti che includono un Dockerfile, un manifest Kubernetes Configurazione Skaffold.

La funzione principale di un container di sistema Linux è avviare i servizi erano state eseguite inizialmente nell'istanza di macchina virtuale (VM) di origine, tra cui il sistema operativo e i servizi per le applicazioni pertinenti.

Il Dockerfile viene utilizzato per creare l'immagine per la VM di cui è stata eseguita la migrazione. Un sistema Linux il Dockerfile del container di solito è simile al seguente:

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

FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/service-manager-runtime:1.0.0 as service-manager-runtime

FROM scratch

# Tar containing data captured from the source VM
ADD vmFiles.tar.gz /

COPY --from=service-manager-runtime / /

ADD blocklist.yaml /.m4a/blocklist.yaml

ADD logs.yaml /code/config/logs/logsArtifact.yaml

ADD services-config.yaml /.m4a/

ADD tempfiles.yaml  /.m4a/

# 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

ENTRYPOINT ["/ko-app/service-manager-runtime", "start", "-c", "/.m4a/"]

Quando esegui una migrazione, le seguenti istruzioni Dockerfile copiano o aggiungono i dati della VM dall'origine originale all'immagine Docker:

  • La seguente istruzione aggiunge il file tar che contiene i dati acquisiti dalla VM di origine all'immagine Docker:

    ADD vmFiles.tar.gz /
    

    Questo tar viene creato da Migrate to Containers. Contiene il file system radice sulla VM di origine con tutto ciò che è incluso nei filtri nel piano di migrazione eventuali cartelle fornite nel piano di migrazione dei dati estratte.

  • L'istruzione seguente importa il runtime Migrate to Containers dal il repository nell'immagine Docker:

    FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/service-manager-runtime:1.0.0 as service-manager-runtime
    
  • La seguente istruzione copia quindi il runtime Migrate to Containers Immagine Docker:

    COPY --from=service-manager-runtime / /
    

Fai clic per visualizzare i dettagli sul file di runtime Migrate to Containers

/ko-app/service-manager-runtime è la piattaforma principale di Migrate to Containers di runtime. Si tratta di un sistema di inizializzazione pensato per i container. it svolge le seguenti operazioni:

  • Legge il file /.m4a/services-config.yaml ed esegue il comando binari specificati in base al metodo di esecuzione specificato, daemonizzare, non daemonizzare, aspetta il termine.
  • Raccoglie i log specificati nel /code/config/logs/logsArtifact.yaml file e lo stampa su stdout del container. Per GKE e GKE, garantisce anche che i log vengano inviati in Cloud Logging.

Manutenzione dei carichi di lavoro migrati

Puoi creare una nuova pipeline per la tua applicazione dagli artefatti di cui è stata eseguita la migrazione. Potresti avere una pipeline diversa per applicazioni diverse. Puoi mantenere la pipeline esistente di integrazione e deployment continui, generato l'applicazione originale basata su VM e aggiungi i passaggi pertinenti trasformare gli eseguibili generati in container di sistema Linux.

Il seguente diagramma illustra una pipeline di esempio che utilizza Migrate to Containers:

Flusso CI/CD automatizzato per il replatforming delle applicazioni utilizzando Migrate to Containers

Questo diagramma mostra il processo di modifica di un'applicazione esistente.

Viene eseguito il push di una modifica al codice sorgente o di un nuovo percorso del sistema operativo al Git esistente repository Git. Il codice sorgente viene compilato in base alla configurazione esistente e a una nuova immagine viene creata. La nuova immagine include il livello di runtime Migrate to Containers.

Nell'ambiente di test, uno sviluppatore esegue test preliminari per confermare per vedere se la nuova immagine funziona come previsto. Dopo la fase di test, viene creata l'immagine del container di sistema viene creata e ne viene eseguito il push nell'ambiente di sviluppo o di test che verrà poi implementato in produzione.