Informazioni sui container di sistema Linux

L'interfaccia a riga di comando Migrate to Containers ti consente di eseguire la migrazione di applicazioni basate su Linux in ambienti containerizzati. Utilizza un container di sistema Linux predefinito che funge da bootloader per i servizi richiesti dall'applicazione modernizzata. 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 che vengono utilizzati come parte della soluzione per l'esecuzione delle applicazioni di cui è stata eseguita la migrazione utilizzando Migrate to Containers.

Migrazione utilizzando il contenitore di sistema Linux

Migrate to Containers rileva i file e i processi dell'applicazione di origine. Quindi genera artefatti che includono un Dockerfile, un manifest Kubernetes e la configurazione di 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. In genere, un Dockerfile del contenitore di sistema Linux ha il seguente aspetto:

# 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:

  • L'istruzione seguente aggiunge il file tar contenente 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 del file di runtime di Migrate to Containers

/ko-app/service-manager-runtime è il file di runtime principale di Migrate to Containers. Si tratta di un sistema di inizializzazione progettato 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 li stampa in stdout del contenitore. Per i cluster GKE, garantisce inoltre che i log vengano inviati a 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 di integrazione e deployment continua esistente che ha generato l'applicazione basata su VM originale e aggiungere i passaggi pertinenti che trasformano 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 di Migrate to Containers.

Nell'ambiente di test, uno sviluppatore esegue test preliminari per verificare se la nuova immagine funziona come previsto. Dopo la fase di test, viene creata una nuova immagine container di sistema e viene eseguita il push nell'ambiente di sviluppo o di test, che in seguito viene implementato in produzione.