Acerca dos contentores do sistema Linux
A CLI Migrate to Containers permite-lhe migrar aplicações baseadas em Linux para ambientes contentorizados. Usa um contentor do sistema Linux pré-criado que funciona como um carregador de arranque para os serviços necessários pela aplicação modernizada. Com o Migrate to Containers para aplicações Linux, pode modernizar uma vasta gama de aplicações sem estado para serem executadas no Google Kubernetes Engine (GKE), no Cloud Run e nos clusters do GKE.
Para mais informações, consulte o artigo Migre para a arquitetura da CLI de contentores.
Este documento fornece detalhes sobre os contentores do sistema Linux do Migrate to Containers que são usados como parte da solução para executar aplicações migradas através do Migrate to Containers.
Migração através do contentor do sistema Linux
O Migrate to Containers descobre os ficheiros e os processos da aplicação de origem. Em seguida, gera artefactos que incluem um Dockerfile, um manifesto do Kubernetes e uma configuração do Skaffold.
A função principal de um contentor do sistema Linux é iniciar os serviços que foram originalmente executados na instância da máquina virtual (VM) de origem, incluindo os serviços relevantes do sistema operativo e da aplicação.
O Dockerfile é usado para criar a imagem da VM migrada. Normalmente, um Dockerfile de contentor de sistema Linux tem um aspeto semelhante ao seguinte:
# 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 executa uma migração, as seguintes declarações do Dockerfile copiam ou adicionam os dados da VM da origem original à imagem do Docker:
A seguinte declaração adiciona o ficheiro tar que contém os dados capturados da VM de origem à imagem do Docker:
ADD vmFiles.tar.gz /
Este TAR é criado pela ferramenta Migrate to Containers. Contém o sistema de ficheiros raiz da VM de origem com tudo o que é fornecido nos filtros no plano de migração e qualquer pasta fornecida no plano de migração de dados filtrada.
A seguinte declaração importa o tempo de execução do Migrate to Containers do repositório do Docker para a imagem do Docker:
FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/service-manager-runtime:1.0.0 as service-manager-runtime
A declaração seguinte copia o tempo de execução do Migrate to Containers para a imagem do Docker:
COPY --from=service-manager-runtime / /
Clique para ver detalhes sobre o ficheiro de tempo de execução da migração para contentores
/ko-app/service-manager-runtime
é o ficheiro de tempo de execução principal do Migrate to Containers. Este é um sistema de inicialização criado para contentores. Faz o seguinte:
- Lê o ficheiro
/.m4a/services-config.yaml
e executa os binários especificados por ordem de acordo com o método de execução especificado, como daemonize, not daemonize, wait for finish. - Recolhe os registos especificados no ficheiro
/code/config/logs/logsArtifact.yaml
e imprime-os emstdout
do contentor. Para clusters do GKE e do GKE, também garante que os registos são enviados para o Cloud Logging.
Manutenção de cargas de trabalho migradas
Pode criar um novo pipeline para a sua aplicação a partir dos artefactos migrados. Pode ter um pipeline diferente para diferentes aplicações. Pode manter o pipeline de integração e implementação contínuas existente que gerou a aplicação original baseada em VMs e adicionar os passos relevantes que transformam os executáveis gerados em contentores do sistema Linux.
O diagrama seguinte ilustra um exemplo de pipeline com a ferramenta Migrate to Containers:
Este diagrama mostra o processo de alteração de uma aplicação existente.
É enviada uma alteração ao código-fonte ou um novo caminho do SO para o repositório Git existente. A origem é compilada com base na configuração existente e é criada uma nova imagem. A nova imagem inclui a camada de tempo de execução Migrate to Containers.
No ambiente de teste, um programador executa testes preliminares para confirmar se a nova imagem está a funcionar conforme esperado. Após a fase de teste, é criada uma nova imagem do contentor do sistema e enviada para o ambiente de desenvolvimento ou de teste, que é posteriormente implementada na produção.