8.4. クラスター外のイメージモードを使用してカスタムレイヤーイメージを適用する
Image mode for OpenShift のクラスター外ビルドプロセスを使用して、MachineOSConfig
カスタムリソース (CR) を作成することで、カスタムレイヤーイメージをノードに適用できます。
オブジェクトを作成すると、Machine Config Operator (MCO) は新しいカスタムレイヤーイメージでこれらのノードを再起動します。これにより、ベースの Red Hat Enterprise Linux CoreOS (RHCOS) イメージがオーバーライドされます。
カスタムレイヤーイメージをクラスターに適用するには、クラスターがアクセスできるリポジトリーにカスタムレイヤーイメージが必要です。次に、カスタムレイヤーイメージを指す MachineConfig
オブジェクトを作成します。設定するマシン設定プールごとに個別の MachineConfig
オブジェクトが必要です。
カスタムレイヤーイメージを設定すると、OpenShift Container Platform は、カスタムレイヤーイメージを使用するノードを自動的に更新しなくなりました。必要に応じてノードを手動で更新する必要があります。カスタムレイヤーをロールバックすると、OpenShift Container Platform は再びノードを自動的に更新します。カスタムレイヤーイメージを使用するノードの更新に関する重要な情報は、以下の追加リソースセクションを参照してください。
前提条件
タグではなく、OpenShift Container Platform イメージダイジェストに基づくカスタムレイヤーイメージを作成する必要があります。
注記クラスターの残りの部分にインストールされているのと同じ RHCOS の基本イメージを使用する必要があります。
oc adm release info --image-for rhel-coreos
コマンドを使用して、クラスターで使用されている基本イメージを取得します。たとえば、次の Containerfile は、OpenShift Container Platform 4.19 イメージからカスタムレイヤーイメージを作成し、カーネルパッケージを CentOS 9 Stream のカーネルパッケージでオーバーライドします。
カスタムレイヤーイメージの Containerfile の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Containerfile の作成方法は、このドキュメントの範囲外です。
-
カスタムレイヤーイメージをビルドするプロセスはクラスターの外部で実行されるため、Podman または Buildah で
--authfile /path/to/pull-secret
オプションを使用する必要があります。あるいは、これらのツールでプルシークレットを自動的に読み取るようにするには、デフォルトのファイルの場所のいずれかに追加できます。~/.docker/config.json
、$XDG_RUNTIME_DIR/containers/auth.json
、~/.docker/config.json
、または~/.dockercfg
。詳細は、containers-auth.json
のマニュアルページを参照してください。 - カスタムレイヤーイメージを、クラスターがアクセスできるリポジトリーにプッシュする必要があります。
手順
マシン設定ファイルを作成します。
以下のような YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineConfig
オブジェクトを作成します。oc create -f <file_name>.yaml
$ oc create -f <file_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要クラスターにロールアウトする前に、実稼働環境の外でイメージをテストすることを強く推奨します。
検証
次のチェックのいずれかを実行することで、カスタムレイヤーイメージが適用されていることを確認できます。
ワーカーマシン設定プールが新しいマシン設定でロールアウトされていることを確認します。
新しいマシン設定が作成されたことを確認します。
oc get mc
$ oc get mc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいマシン設定の
osImageURL
値が予測されるイメージを指していることを確認します。oc describe mc rendered-worker-5de4837625b1cbc237de6b22bc0bc873
$ oc describe mc rendered-worker-5de4837625b1cbc237de6b22bc0bc873
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 関連するマシン設定プールが新しいマシン設定で更新されていることを確認します。
oc get mcp
$ oc get mcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-15961f1da260f7be141006404d17d39b True False False 3 3 3 0 39m worker rendered-worker-5de4837625b1cbc237de6b22bc0bc873 True False False 3 0 0 0 39m
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-15961f1da260f7be141006404d17d39b True False False 3 3 3 0 39m worker rendered-worker-5de4837625b1cbc237de6b22bc0bc873 True False False 3 0 0 0 39m
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
UPDATING
フィールドがTrue
の場合、マシン設定プールは新しいマシン設定で更新されます。この場合、新しいマシン設定は出力にリストされません。フィールドがFalse
になると、ワーカーマシン設定プールが新しいマシン設定にロールアウトされます。
ノードをチェックして、ノードのスケジューリングが無効になっていることを確認します。これは、変更が適用されていることを示しています。
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ノードが
Ready
状態に戻ったら、ノードがカスタムレイヤーイメージを使用していることを確認します。ノードへの
oc debug
セッションを開きます。以下に例を示します。oc debug node/ip-10-0-155-125.us-west-1.compute.internal
$ oc debug node/ip-10-0-155-125.us-west-1.compute.internal
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
コマンドを実行して、カスタムレイヤーイメージが使用されていることを確認します。sudo rpm-ostree status
sh-4.4# sudo rpm-ostree status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.4.1. クラスター外のノードを元に戻す リンクのコピーリンクがクリップボードにコピーされました!
特定のマシン設定プール内のノードから、クラスター外のカスタムレイヤーイメージを元に戻すことができます。Machine Config Operator (MCO) は、クラスターベースの Red Hat Enterprise Linux CoreOS (RHCOS) イメージを使用してこれらのノードを再起動し、カスタムレイヤーイメージをオーバーライドします。
クラスターから Red Hat Enterprise Linux CoreOS (RHCOS) カスタムレイヤーイメージを削除するには、イメージを適用したマシン設定を削除する必要があります。
手順
カスタムレイヤーイメージを適用したマシン設定を削除します。
oc delete mc os-layer-custom
$ oc delete mc os-layer-custom
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マシン設定を削除した後、ノードが再起動します。
検証
次のチェックのいずれかを実行することで、カスタムレイヤーイメージが削除されたことを確認できます。
ワーカーマシン設定プールが以前のマシン設定で更新されていることを確認します。
oc get mcp
$ oc get mcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-6faecdfa1b25c114a58cf178fbaa45e2 True False False 3 3 3 0 39m worker rendered-worker-6b000dbc31aaee63c6a2d56d04cd4c1b False True False 3 0 0 0 39m
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-6faecdfa1b25c114a58cf178fbaa45e2 True False False 3 3 3 0 39m worker rendered-worker-6b000dbc31aaee63c6a2d56d04cd4c1b False True False 3 0 0 0 39m
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
UPDATING
フィールドがTrue
の場合、マシン設定プールは以前のマシン設定で更新されます。フィールドがFalse
になると、ワーカーマシン設定プールが以前のマシン設定にロールアウトされます。
ノードをチェックして、ノードのスケジューリングが無効になっていることを確認します。これは、変更が適用されていることを示しています。
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードが
Ready
状態に戻ったら、ノードが基本イメージを使用していることを確認します。次のコマンドを実行して、ノードへの
oc debug
セッションを開きます。oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、デバッグシェル内のルートディレクトリーとして
/host
を設定します。chroot /host
sh-5.1# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rpm-ostree status
コマンドを実行して、カスタムレイヤーイメージが使用されていることを確認します。sudo rpm-ostree status
sh-5.1# sudo rpm-ostree status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
State: idle Deployments: * ostree-unverified-registry:podman pull quay.io/openshift-release-dev/ocp-release@sha256:e2044c3cfebe0ff3a99fc207ac5efe6e07878ad59fd4ad5e41f88cb016dacd73 Digest: sha256:e2044c3cfebe0ff3a99fc207ac5efe6e07878ad59fd4ad5e41f88cb016dacd73
State: idle Deployments: * ostree-unverified-registry:podman pull quay.io/openshift-release-dev/ocp-release@sha256:e2044c3cfebe0ff3a99fc207ac5efe6e07878ad59fd4ad5e41f88cb016dacd73 Digest: sha256:e2044c3cfebe0ff3a99fc207ac5efe6e07878ad59fd4ad5e41f88cb016dacd73
Copy to Clipboard Copied! Toggle word wrap Toggle overflow