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. Utilizzando Migrate to Containers per le applicazioni Linux, puoi modernizzare una vasta gamma di applicazioni senza stato da eseguire su Google Kubernetes Engine (GKE), Cloud Run e cluster GKE.

Per ulteriori informazioni, consulta la sezione Architettura dell'interfaccia a riga di comando di Migrate to 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 utilizzando il contenitore 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 contenitore di sistema Linux è avviare i servizi che inizialmente venivano eseguiti nell'istanza della macchina virtuale (VM) di origine, inclusi i servizi di sistema operativo e di applicazione 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 file tar viene creato da Migrate to Containers. Contiene il file system principale della VM di origine con tutto ciò che è fornito nei filtri del piano di migrazione e qualsiasi cartella fornita nel piano di migrazione dei dati viene filtrata.

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

    FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/service-manager-runtime:1.0.0 as service-manager-runtime
    
  • L'istruzione seguente copia il runtime di Migrate to Containers nell'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 creato per i container. Svolge le seguenti operazioni:

  • Legge il file /.m4a/services-config.yaml ed esegue i file binari specificati in ordine in base al metodo di esecuzione specificato, ad esempio daemonize, not daemonize, wait for finish.
  • 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 e in Cloud Logging.

Manutenzione dei carichi di lavoro migrati

Puoi creare una nuova pipeline per la tua applicazione dagli elementi sottoposti a 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 la procedura di modifica di un'applicazione esistente.

Una modifica al codice sorgente o un nuovo percorso del sistema operativo viene inviato al repository Git esistente. Il codice sorgente viene compilato in base alla configurazione esistente e viene creata una nuova immagine. 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 una nuova 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.