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 の作成方法は、このドキュメントの範囲外です。
- オプション: カスタムレイヤーイメージを適用するノード用に、別のマシン設定プールがある。
手順
machineOSconfig
オブジェクトを作成します。以下のような YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- カスタムレイヤーイメージをデプロイするノードに関連付けられているマシン設定プールの名前を指定します。
- 2
- カスタムレイヤーイメージを設定するための Containerfile を指定します。
- 3
- 使用する Image Builder の名前を指定します。これは
PodImageBuilder
である必要があります。 - 4
- MCO がレジストリーからベースオペレーティングシステムイメージをプルするために必要なプルシークレットの名前を指定します。
- 5
- 新しくビルドされたカスタムレイヤーイメージをプッシュするイメージレジストリーを指定します。これは、クラスターがアクセスできる任意のレジストリーにすることができます。この例では、内部 OpenShift Container Platform レジストリーを使用します。
- 6
- MCO が新しくビルドされたカスタムレイヤーイメージをそのレジストリーにプッシュするために必要なプッシュシークレットの名前を指定します。
- 7
- 新しくビルドされたカスタムレイヤーイメージをノードがプルするために必要なイメージレジストリーに必要なシークレットを指定します。これは、イメージをリポジトリーにプッシュするために使用するシークレットとは異なるシークレットである必要があります。
MachineOSConfig
オブジェクトを作成します。oc create -f <file_name>.yaml
$ oc create -f <file_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
MachineOSBuild
オブジェクトが作成されてREADY
状態になったら、必要に応じて、新しいカスタムレイヤーイメージを使用するノードのノード仕様を変更します。MachineOSBuild
オブジェクトがREADY
であることを確認します。SUCCEEDED
値がTrue
になったら、ビルドは完了です。oc get machineosbuild
$ oc get machineosbuild
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineOSBuild
オブジェクトが準備完了状態であることを示す出力例NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED layered-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0-builder False False True False False
NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED layered-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0-builder False False True False False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineOSConfig
オブジェクトで指定したマシン設定プールのラベルを追加して、カスタムレイヤーイメージをデプロイするノードを編集します。oc label node <node_name> 'node-role.kubernetes.io/<mcp_name>='
$ oc label node <node_name> 'node-role.kubernetes.io/<mcp_name>='
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- node-role.kubernetes.io/<mcp_name>=
- カスタムレイヤーイメージをデプロイするノードを特定するノードセレクターを指定します。
変更を保存すると、MCO がノードをドレイン、遮断、再起動します。再起動後、ノードは新しいカスタムレイヤーイメージを使用します。
検証
次のコマンドを使用して、新しい Pod が実行されていることを確認します。
oc get pods -n <machineosbuilds_namespace>
$ oc get pods -n <machineosbuilds_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE build-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0 2/2 Running 0 2m40s # ... machine-os-builder-6fb66cfb99-zcpvq 1/1 Running 0 2m42s
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 Copied! Toggle word wrap Toggle overflow MachineOSConfig
オブジェクトに新しいカスタムレイヤーイメージへの参照が含まれていることを確認します。oc describe MachineOSConfig <object_name>
$ oc describe MachineOSConfig <object_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 新しいカスタムレイヤーイメージのダイジェスト付きイメージプル仕様。
MachineOSBuild
オブジェクトに新しいカスタムレイヤーイメージへの参照が含まれていることを確認します。oc describe machineosbuild <object_name>
$ oc describe machineosbuild <object_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 新しいカスタムレイヤーイメージのダイジェスト付きイメージプル仕様。
適切なノードが新しいカスタムレイヤーイメージを使用していることを確認します。
コントロールプレーンノードの root としてデバッグセッションを開始します。
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /host
をデバッグシェル内のルートディレクトリーとして設定します。chroot /host
sh-4.4# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rpm-ostree status
コマンドを実行して、カスタムレイヤーイメージが使用されていることを確認します。rpm-ostree status
sh-5.1# rpm-ostree status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
...
# ... 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 Copied! Toggle word wrap Toggle overflow - 1
- 新しいカスタムレイヤーイメージのダイジェスト付きイメージプル仕様。
関連情報