7.3. クラスター上でのレイヤー化を使用してカスタムレイヤーイメージを適用する


クラスター上でのビルドプロセスを使用してクラスターにカスタムレイヤーイメージを適用するには、Containerfile、マシン設定プールの参照、リポジトリーのプッシュおよびプルシークレット、その他のパラメーターを含む MachineOSConfig カスタムリソースを作成します。これについては、前提条件を参照してください。

オブジェクトを作成すると、Machine Config Operator (MCO) によって MachineOSBuild オブジェクトと machine-os-builder Pod が作成されます。ビルドプロセスでは、設定マップなどの一時的なオブジェクトも作成されますが、これらはビルドの完了後にクリーンアップされます。

ビルドが完了すると、MCO は新しいカスタムレイヤーイメージをリポジトリーにプッシュし、新しいノードのデプロイ時に使用できるようにします。新しいカスタムレイヤーイメージのダイジェスト付きイメージプル仕様を、MachineOSBuild オブジェクトと machine-os-builder Pod で確認できます。

これらの新しいオブジェクトや machine-os-builder Pod を操作する必要はありません。ただし、これらのリソースは、必要に応じて、すべてトラブルシューティングに使用できます。

カスタムレイヤーイメージを使用するマシン設定プールごとに、個別の MachineOSConfig CR が必要です。

重要

クラスター上でのイメージレイヤー化は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

前提条件

  • フィーチャーゲートを使用して TechPreviewNoUpgrade 機能セットを有効にしている。詳細は、「フィーチャーゲートを使用した機能の有効化」を参照してください。
  • MCO がベースオペレーティングシステムイメージをプルするために必要なプルシークレットが openshift-machine-config-Operator namespace にある。
  • MCO が新しいカスタムレイヤーイメージをレジストリーにプッシュするために必要なプッシュシークレットがある。
  • ノードがレジストリーから新しいカスタムレイヤーイメージをプルするために必要なプルシークレットがある。これは、イメージをリポジトリーにプッシュするために使用するシークレットとは異なるシークレットである必要があります。
  • Containerfile を設定する方法をよく理解している。Containerfile の作成方法は、このドキュメントの範囲外です。
  • オプション: カスタムレイヤーイメージを適用するノード用に、別のマシン設定プールがある。

手順

  1. machineOSconfig オブジェクトを作成します。

    1. 以下のような YAML ファイルを作成します。

      apiVersion: machineconfiguration.openshift.io/v1alpha1
      kind: MachineOSConfig
      metadata:
        name: layered
      spec:
        machineConfigPool:
          name: <mcp_name> 
      1
      
        buildInputs:
          containerFile: 
      2
      
          - containerfileArch: noarch
            content: |-
              FROM configs AS final
              RUN dnf install -y cowsay && \
               dnf clean all && \
               ostree container commit
          imageBuilder: 
      3
      
            imageBuilderType: PodImageBuilder
          baseImagePullSecret: 
      4
      
            name: global-pull-secret-copy
          renderedImagePushspec: image-registry.openshift-image-registry.svc:5000/openshift/os-image:latest  
      5
      
          renderedImagePushSecret: 
      6
      
            name: builder-dockercfg-7lzwl
        buildOutputs: 
      7
      
          currentImagePullSecret:
            name: builder-dockercfg-7lzwl
      Copy to Clipboard Toggle word wrap
      1
      カスタムレイヤーイメージをデプロイするノードに関連付けられているマシン設定プールの名前を指定します。
      2
      カスタムレイヤーイメージを設定するための Containerfile を指定します。
      3
      使用する Image Builder の名前を指定します。これは PodImageBuilder である必要があります。
      4
      MCO がレジストリーからベースオペレーティングシステムイメージをプルするために必要なプルシークレットの名前を指定します。
      5
      新しくビルドされたカスタムレイヤーイメージをプッシュするイメージレジストリーを指定します。これは、クラスターがアクセスできる任意のレジストリーにすることができます。この例では、内部 OpenShift Container Platform レジストリーを使用します。
      6
      MCO が新しくビルドされたカスタムレイヤーイメージをそのレジストリーにプッシュするために必要なプッシュシークレットの名前を指定します。
      7
      新しくビルドされたカスタムレイヤーイメージをノードがプルするために必要なイメージレジストリーに必要なシークレットを指定します。これは、イメージをリポジトリーにプッシュするために使用するシークレットとは異なるシークレットである必要があります。
    2. MachineOSConfig オブジェクトを作成します。

      $ oc create -f <file_name>.yaml
      Copy to Clipboard Toggle word wrap
  2. MachineOSBuild オブジェクトが作成されて READY 状態になったら、必要に応じて、新しいカスタムレイヤーイメージを使用するノードのノード仕様を変更します。

    1. MachineOSBuild オブジェクトが READY であることを確認します。SUCCEEDED 値が True になったら、ビルドは完了です。

      $ oc get machineosbuild
      Copy to Clipboard Toggle word wrap

      MachineOSBuild オブジェクトが準備完了状態であることを示す出力例

      NAME                                                                PREPARED   BUILDING   SUCCEEDED   INTERRUPTED   FAILED
      layered-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0-builder   False      False      True        False         False
      Copy to Clipboard Toggle word wrap

    2. MachineOSConfig オブジェクトで指定したマシン設定プールのラベルを追加して、カスタムレイヤーイメージをデプロイするノードを編集します。

      $ oc label node <node_name> 'node-role.kubernetes.io/<mcp_name>='
      Copy to Clipboard Toggle word wrap

      ここでは、以下のようになります。

      node-role.kubernetes.io/<mcp_name>=
      カスタムレイヤーイメージをデプロイするノードを特定するノードセレクターを指定します。

      変更を保存すると、MCO がノードをドレイン、遮断、再起動します。再起動後、ノードは新しいカスタムレイヤーイメージを使用します。

検証

  1. 次のコマンドを使用して、新しい Pod が実行されていることを確認します。

    $ oc get pods -n <machineosbuilds_namespace>
    Copy to Clipboard Toggle word wrap
    NAME                                                              READY   STATUS    RESTARTS   AGE
    build-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0           2/2     Running   0          2m40s 
    1
    
    # ...
    machine-os-builder-6fb66cfb99-zcpvq                               1/1     Running   0          2m42s 
    2
    Copy to Clipboard Toggle word wrap
    1
    これは、カスタムレイヤーイメージがビルドされるビルド Pod です。
    2
    この Pod はトラブルシューティングに使用できます。
  2. MachineOSConfig オブジェクトに新しいカスタムレイヤーイメージへの参照が含まれていることを確認します。

    $ oc describe MachineOSConfig <object_name>
    Copy to Clipboard Toggle word wrap
    apiVersion: machineconfiguration.openshift.io/v1alpha1
    kind: MachineOSConfig
    metadata:
      name: layered
    spec:
      buildInputs:
        baseImagePullSecret:
          name: global-pull-secret-copy
        containerFile:
        - containerfileArch: noarch
          content: ""
        imageBuilder:
          imageBuilderType: PodImageBuilder
        renderedImagePushSecret:
          name: builder-dockercfg-ng82t-canonical
        renderedImagePushspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image:latest
      buildOutputs:
        currentImagePullSecret:
          name: global-pull-secret-copy
      machineConfigPool:
        name: layered
    status:
      currentImagePullspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image@sha256:f636fa5b504e92e6faa22ecd71a60b089dab72200f3d130c68dfec07148d11cd 
    1
    Copy to Clipboard Toggle word wrap
    1
    新しいカスタムレイヤーイメージのダイジェスト付きイメージプル仕様。
  3. MachineOSBuild オブジェクトに新しいカスタムレイヤーイメージへの参照が含まれていることを確認します。

    $ oc describe machineosbuild <object_name>
    Copy to Clipboard Toggle word wrap
    apiVersion: machineconfiguration.openshift.io/v1alpha1
    kind: MachineOSBuild
    metadata:
      name: layered-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0-builder
    spec:
      desiredConfig:
        name: rendered-layered-ad5a3cad36303c363cf458ab0524e7c0
      machineOSConfig:
        name: layered
      renderedImagePushspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image:latest
    # ...
    status:
      conditions:
        - lastTransitionTime: "2024-05-21T20:25:06Z"
          message: Build Ready
          reason: Ready
          status: "True"
          type: Succeeded
      finalImagePullspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image@sha256:f636fa5b504e92e6faa22ecd71a60b089dab72200f3d130c68dfec07148d11cd 
    1
    Copy to Clipboard Toggle word wrap
    1
    新しいカスタムレイヤーイメージのダイジェスト付きイメージプル仕様。
  4. 適切なノードが新しいカスタムレイヤーイメージを使用していることを確認します。

    1. コントロールプレーンノードの root としてデバッグセッションを開始します。

      $ oc debug node/<node_name>
      Copy to Clipboard Toggle word wrap
    2. /host をデバッグシェル内のルートディレクトリーとして設定します。

      sh-4.4# chroot /host
      Copy to Clipboard Toggle word wrap
    3. rpm-ostree status コマンドを実行して、カスタムレイヤーイメージが使用されていることを確認します。

      sh-5.1# rpm-ostree status
      Copy to Clipboard Toggle word wrap

      出力例

      # ...
      Deployments:
      * ostree-unverified-registry:quay.io/openshift-release-dev/os-image@sha256:f636fa5b504e92e6faa22ecd71a60b089dab72200f3d130c68dfec07148d11cd 
      1
      
                         Digest: sha256:bcea2546295b2a55e0a9bf6dd4789433a9867e378661093b6fdee0031ed1e8a4
                        Version: 416.94.202405141654-0 (2024-05-14T16:58:43Z)
      Copy to Clipboard Toggle word wrap

      1
      新しいカスタムレイヤーイメージのダイジェスト付きイメージプル仕様。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat