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

Os artefatos de contêiner criados com o comando migctl migration generate-artifacts não são destinados apenas para a implantação da carga de trabalho migrada no cluster de destino. Eles também são 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.

Como analisar o Dockerfile da imagem gerada

Essas operações de manutenção aproveitam 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 compilação do pipeline de CI/CD, conforme descrito no diagrama a seguir:

Diagrama mostrando o pipeline de CI/CD.

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:

# Please refer to the documentation:
# https://cloud.google.com/migrate/anthos/docs/dockerfile-reference

FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.6.0 as migrate-for-anthos-runtime

# Image containing data captured from the source VM
FROM gcr.io/myproject/myworkload-non-runnable-base:v1.0.0 as source-content

# 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

COPY --from=migrate-for-anthos-runtime / /

# Migrate for GKE Enterprise image includes entrypoint
ENTRYPOINT [ "/.v2k.go" ]

A segunda diretiva FROM faz referência à camada de imagem do sistema capturada da VM migrada. Esta camada não pode ser executada sozinha e precisa ser combinada com a camada de tempo de execução do Migrate to Containers para criar uma imagem executável.

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

Como 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 após a segunda diretiva FROM.

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 de distribuição openssh do SLES.

Dockerfile atualizado:

# Image containing data captured from the source VM
FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.6.0 as migrate-for-anthos-runtime

# Image containing data captured from the source VM
FROM gcr.io/myproject/myworkload-non-runnable-base:v1.0.0 as source-content

# 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
COPY --from=migrate-for-anthos-runtime / /

# Migrate to Containers image includes entrypoint
ENTRYPOINT [ "/.v2k.go" ]

Como criar a imagem atualizada:

  1. Faça o download do Dockerfile gerado do bucket do Cloud Storage para um diretório local no ambiente do Cloud Shell.
  2. Edite o Dockerfile para adicionar a diretiva RUN destacada, como no exemplo acima.
  3. Crie a imagem atualizada e envie-a para o Container Registry com uma tag de versão atualizada, garantindo que você tenha tempo suficiente para a criação ser concluída. No exemplo a seguir, a imagem está no diretório atual:

    gcloud builds submit --timeout 4h --tag gcr.io/myproject/mySUSEworkload:v1.0.1 .
    
  4. Você pode usar a imagem recém-criada para atualizar uma implantação existente, por exemplo, para executar um upgrade contínuo no aplicativo implantado:

    kubectl set image deployment/myWorkload my-app=gcr.io/myproject/mySUSEworkload:v1.0.1 --record
    

Como 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 novas funcionalidades, 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 da v1.6.0 para a versão hipotética v1.15.0 editando a diretiva FROM para o seguinte:

FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.15.0 as migrate-for-anthos-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á-las.

A seguir