遷移後映像檔更新

本頁說明如何針對已遷移的工作負載執行維護作業。

您產生的容器構件並非只用於在目標叢集中部署已遷移的工作負載。您也需要這些檔案來執行第 2 天維護作業,包括套用應用程式和使用者模式 OS 軟體更新、安全性修補程式、編輯嵌入式設定、新增或取代檔案,以及更新遷移至容器執行階段軟體。

查看已產生的映像檔 Dockerfile

維護作業會使用產生的 Dockerfile 和擷取的系統映像檔層。搭配使用「遷移至容器」執行階段層後,這些檔案就能建構為可執行的容器映像檔。

產生的容器構件會以 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) VM 遷移的容器映像檔。以下範例會更新 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 軟體發布時,您可以在已部署的工作負載映像檔中更新該軟體版本。這類更新可能包含新功能、強化功能或錯誤修正。

如要更新 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 後,您需要建構新的負載容器映像檔版本,並將其套用至現有部署作業,以便進行更新。

後續步驟