À propos des conteneurs système Linux
La CLI Migrate to Containers vous permet de migrer des applications Linux vers des environnements conteneurisés. Elle utilise un conteneur système Linux prédéfini qui sert de bootloader pour les services requis par l'application modernisée. Grâce à Migrate to Containers pour les applications Linux, vous pouvez moderniser une large gamme d'applications sans état pour les exécuter sur Google Kubernetes Engine (GKE), Cloud Run et des clusters GKE.
Pour en savoir plus, consultez la page Architecture de la CLI Migrate to Containers.
Ce document fournit des détails sur les conteneurs système Linux Migrate to Containers utilisés dans le cadre de la solution d'exécution des applications migrées à l'aide de Migrate to Containers.
Migration à l'aide de conteneurs système Linux
Migrate to Containers détecte les fichiers et les processus de l'application source. Il génère ensuite des artefacts, qui incluent un fichier Dockerfile, un fichier manifeste Kubernetes et une configuration Skaffold.
La fonction principale d'un conteneur système Linux consiste à lancer les services qui ont été exécutés à l'origine sur l'instance de machine virtuelle (VM) source, y compris les systèmes d'exploitation et les services d'applications pertinents.
Le fichier Dockerfile est utilisé pour créer l'image pour votre VM migrée. Un fichier Dockerfile de conteneur système Linux se présente généralement comme suit:
# 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/"]
Lorsque vous exécutez une migration, les instructions Dockerfile suivantes copient ou ajoutent les données de VM de la source d'origine à l'image Docker:
L'instruction suivante ajoute le fichier tar contenant les données capturées par la VM source à l'image Docker:
ADD vmFiles.tar.gz /
Ce fichier tar est créé par Migrate to Containers. Il contient le système de fichiers racine de la VM source avec tous les éléments fournis dans les filtres du plan de migration et tous les dossiers fournis dans le plan de migration de données filtrés.
L'instruction suivante importe l'environnement d'exécution Migrate to Containers à partir du dépôt Docker vers l'image Docker:
FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/service-manager-runtime:1.0.0 as service-manager-runtime
L'instruction suivante copie ensuite l'environnement d'exécution Migrate to Containers dans l'image Docker:
COPY --from=service-manager-runtime / /
Cliquez pour afficher les détails du fichier d'exécution Migrate to Containers
/ko-app/service-manager-runtime
est le fichier d'exécution principal de Migrate to Containers. Il s'agit d'un système d'initialisation conçu pour les conteneurs. Il effectue les opérations suivantes :
- Il lit le fichier
/.m4a/services-config.yaml
et exécute les binaires spécifiés dans l'ordre selon la méthode d'exécution spécifiée, telle que daemonize ou non daemonize, attendre la fin. - Collecte les journaux spécifiés dans le fichier
/code/config/logs/logsArtifact.yaml
et les imprime surstdout
du conteneur. Pour les clusters GKE et GKE, il garantit également que les journaux sont envoyés à Cloud Logging.
Maintenance des charges de travail migrées
Vous pouvez créer un pipeline pour votre application à partir des artefacts migrés. Vous pouvez disposer d'un pipeline différent pour différentes applications. Vous pouvez conserver votre pipeline d'intégration et de déploiement continus existant qui a généré l'application basée sur des VM d'origine, et ajouter les étapes pertinentes qui transforment les exécutables générés en conteneurs système Linux.
Le schéma suivant illustre un exemple de pipeline utilisant Migrate to Containers:
Ce schéma montre le processus de modification d'une application existante.
Une modification du code source ou du nouveau chemin de l'OS est transmise au dépôt Git existant. La source est compilée en fonction de la configuration existante et une nouvelle image est créée. La nouvelle image inclut la couche d'exécution Migrate to Containers.
Dans l'environnement de test, un développeur exécute des tests préliminaires pour vérifier si la nouvelle image fonctionne comme prévu. Après la phase de test, une nouvelle image de conteneur système est créée et transférée vers l'environnement de développement ou de test, qui est ensuite déployé en production.