迁移后映像更新

本页介绍了如何为已迁移的工作负载执行维护操作。

您生成的容器工件并不仅用于在目标集群中部署迁移的工作负载。您还需要它们来执行投产后维护操作,包括采用应用和用户模式操作系统软件更新和安全补丁,修改嵌入的配置,添加或替换文件,以及更新 Migrate to Containers 运行时软件。

查看生成的映像 Dockerfile

维护操作会使用生成的 Dockerfile 和捕获的系统映像层。与 Migrate to Containers 运行时层结合使用时,这些文件可以内置于可执行容器映像中。

如下图所示,生成的容器工件已经创建,且不忘 CI/CD 流水线构建阶段集成:

使用 Migrate to Containers 实现应用平台更换的自动 CI/CD 流程

Dockerfile 的结构为多阶段构建,可让您更轻松地进行维护和操作,同时避免映像膨胀。

下面是生成的 Dockerfile 的示例:

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/"]

如需详细了解如何使用 Cloud Build 构建容器映像,请参阅构建容器映像

更新迁移的工作负载组件层

如果要将任何更新或修改应用于迁移的工作负载映像层,您应在 ENTRYPOINT 指令之前应用它们。

在以下示例中,我们使用 Cloud Build 和 gcloud CLI 更新以 SUSE Enterprise Linux(SLES)虚拟机作为来源迁移的容器映像。以下示例更新了 SLES 发行版 openssh 软件包。

更新后的 Dockerfile:

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/"]

然后,将更新后的映像部署到集群

更新 Migrate to Containers 层版本

新版本的 Migrate to Containers 软件发布后,您可以在已部署的工作负载映像中更新该软件版本。此类更新可能包括新功能、增强功能或 bug 修复。

如需更新 Migrate to Containers 软件层,请修改 Dockerfile 并将版本标记更改为要应用的更新版本。

您可以使用前面的示例,将 FROM 指令修改为以下内容,从而将版本从 1.0.3 更新到假设版本 1.0.4:

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

更新 Dockerfile 后,您需要构建新的作业负载容器映像版本并将其应用于现有部署以进行更新。

后续步骤