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:
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:
- Faça o download do Dockerfile gerado do bucket do Cloud Storage para um diretório local no ambiente do Cloud Shell.
- Edite o Dockerfile para adicionar a diretiva
RUN
destacada, como no exemplo acima. 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 .
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
- Saiba como monitorar cargas de trabalho migradas.