移行後のイメージの更新

このページでは、移行したワークロードのメンテナンス オペレーションを行う方法について説明します。

生成するコンテナ アーティファクトは、移行するワークロードをターゲット クラスタにデプロイするためだけのものではありません。アプリケーション ソフトウェア アップデート、ユーザーモード OS ソフトウェア アップデート、セキュリティ パッチの適用や、埋め込み構成の編集、ファイルの追加や置換などの Day 2 のメンテナンス オペレーションのほか、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)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 を更新した後、新しいワークロード コンテナ イメージのバージョンをビルドし、既存のデプロイメントに適用して更新します。

次のステップ