Atualizações de imagem pós-migração

Esta página descreve como realizar operações de manutenção para suas cargas de trabalho migradas.

Os artefatos de contêiner gerados não são destinados apenas para a implantação da carga de trabalho migrada no cluster de destino. Eles também são necessários para operações de manutenção do Dia 2, incluindo a aplicação de atualizações de software do SO de modo de usuário e de aplicativos, patches de segurança, edição de configurações incorporadas, adição ou substituição de arquivos e atualização do software de tempo de execução do Migrate to Containers.

Analisar o Dockerfile da imagem gerada

As operações de manutenção usam o Dockerfile gerado e a camada de imagem do sistema capturada. Quando combinados com a camada de ambiente de execução do Migrate to Containers, esses arquivos podem ser incorporados em uma imagem de contêiner executável.

Os artefatos de contêiner gerados foram criados tendo em mente a integração da fase de build do pipeline de CI/CD, conforme descrito no diagrama a seguir:

Fluxo automatizado de CI/CD para mudança de plataforma de aplicativos usando o Migrate to Containers

O Dockerfile é estruturado como uma compilação em vários estágios, para facilitar a manutenção e a manipulação, mantendo a imagem aumentada.

Veja uma amostra de um Dockerfile gerado:

FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/service-manager-runtime:1.0.3 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/"]

Para mais informações sobre como criar imagens de contêiner com o Cloud Build, consulte Como criar imagens de contêiner.

Atualizar a camada de componentes da carga de trabalho migrada

Se você quiser aplicar atualizações ou modificações à camada de imagem da carga de trabalho migrada, aplique-as antes da diretiva ENTRYPOINT.

No exemplo a seguir, atualizamos uma imagem de contêiner migrada de uma VM do SUSE Enterprise Linux (SLES) como origem, usando o Cloud Build e a gcloud CLI. O exemplo a seguir atualiza o pacote openssh da distribuição SLES.

Dockerfile atualizado:

FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/service-manager-runtime:1.0.3 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

RUN zypper ref -s && zypper -n in openssh

ENTRYPOINT ["/ko-app/service-manager-runtime", "start", "-c", "/.m4a/"]

Em seguida, implante a imagem atualizada no cluster.

Atualizar a versão da camada Migrate to Containers

Quando novas versões do software Migrate to Containers forem lançadas, é possível atualizar essa versão do software nas imagens de carga de trabalho implantadas. Essas atualizações podem incluir novos recursos, melhorias ou correções de bugs.

Para atualizar a camada de software do Migrate to Containers, edite o Dockerfile e altere a tag de versão para a versão atualizada que você quer aplicar.

Usando o exemplo anterior, é possível atualizar a versão de 1.0.3 para a versão hipotética 1.0.4 editando a diretiva FROM para o seguinte:

FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/service-manager-runtime:1.0.4 as service-manager-runtime

Depois de atualizar o Dockerfile, é preciso criar uma nova versão da imagem do contêiner de carga de trabalho e aplicá-la às implantações atuais para atualizá-la.

A seguir