Informazioni sui container di sistema Linux

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

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

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

Migrazione utilizzando il 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 e una configurazione Skaffold.

La funzione principale di un container di un sistema Linux è avviare i servizi originariamente eseguiti sull'istanza della macchina virtuale (VM) di origine, inclusi il sistema operativo e i servizi per le applicazioni pertinenti.

Il Dockerfile viene utilizzato per creare l'immagine per la VM migrata. Un Dockerfile per un container di sistema Linux solitamente è 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 all'immagine Docker il file tar che contiene i dati acquisiti dalla VM di origine:

    ADD vmFiles.tar.gz /
    

    Questo tar viene creato da Migrate to Containers. Contiene il file system radice 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 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 quindi il runtime 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 è il principale file di runtime di Migrate to Containers. Si tratta di un sistema di inizializzazione pensato per i container. L'operazione:

  • Legge il file /.m4a/services-config.yaml ed esegue i programmi binari specificati in base al metodo di esecuzione specificato, ad esempio daemonizza, non daemonizza e attendi la fine.
  • Raccoglie i log specificati nel file /code/config/logs/logsArtifact.yaml e li stampa su stdout del container. Per i cluster GKE e GKE, assicura 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 artefatti di cui è stata eseguita la migrazione. Potresti avere una pipeline diversa per applicazioni diverse. Puoi mantenere la pipeline di deployment e integrazione continua esistente che ha generato l'applicazione originale basata su VM, nonché 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 mediante Migrate to Containers

Questo diagramma mostra la procedura di modifica di un'applicazione esistente.

Una modifica al codice sorgente o al nuovo percorso del sistema operativo viene inviata 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 dei test preliminari per confermare che la nuova immagine funzioni come previsto. Dopo la fase di test, viene creata una nuova immagine container di sistema che viene inviata all'ambiente di sviluppo o test, per poi essere implementata in produzione.