RHEL Image Mode を使用したインストール
MicroShift を bootc イメージに埋め込む
概要
第1章 MicroShift で Image Mode for RHEL を使用する リンクのコピーリンクがクリップボードにコピーされました!
Image mode for Red Hat Enterprise Linux (RHEL) を使用して、MicroShift をオペレーティングシステムイメージに埋め込むことができます。
Image Mode for RHEL はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
1.1. Image mode for Red Hat Enterprise Linux (RHEL) リンクのコピーリンクがクリップボードにコピーされました!
Image mode for Red Hat Enterprise Linux (RHEL) は、コンテナーネイティブアプローチを使用してオペレーティングシステムを bootc イメージとしてビルド、デプロイ、管理するテクノロジープレビューデプロイメント方法です。bootc を使用すると、他のコンテナーと同じようにオペレーティングシステムをビルド、デプロイ、管理できます。
- このコンテナーイメージは、ベースオペレーティングシステムの更新の転送および配信形式として、標準の OCI または Docker コンテナーを使用します。
- bootc イメージには、オペレーティングシステムの起動に使用される Linux カーネルが含まれています。
- bootc コンテナーを使用すると、開発者、運用管理者、ソリューションプロバイダーはすべて、同じコンテナーネイティブのツールとテクニックを使用できます。
Image mode では、ソフトウェア変更の作成とインストールが 2 つの手順に分割されます。つまり、ビルドシステム上と実行中のターゲットシステム上の 2 つに分割されます。
- build-system の手順では、Podman ビルドがインストールに使用可能な RPM ファイルを検査し、依存関係を判別して、完了すべき連鎖的な手順の順序付きリストを作成します。その結果、インストール可能な新しいオペレーティングシステムが作成されます。
- running-target-system 手順では、bootc 更新によって新しいオペレーティングシステムをダウンロードして展開し、現在実行中のシステムと並行して起動可能にします。ローカル設定の変更は新しいオペレーティングシステムに引き継がれますが、システムが再起動され、実行中のイメージが新しいオペレーティングシステムイメージに置き換えられるまで有効になりません。
1.1.1. MicroShift で Image Mode for RHEL を使用する リンクのコピーリンクがクリップボードにコピーされました!
Image Mode for RHEL を使用するには、次のリソースが利用可能であることを確認してください。
- MicroShift bootc イメージをビルドするための、アクティブな Red Hat サブスクリプションを備えた RHEL 9.4 ホスト。
- bootc イメージを保存およびアクセスするためのリモートレジストリー。
- AArch64 または x86_64 システムアーキテクチャー上の MicroShift クラスターで Image Mode for RHEL を使用できます。
MicroShift で Image mode を使用するワークフローには、次の手順が含まれます。
- MicroShift bootc イメージをビルドします。
- イメージを公開します。
- イメージを実行します。この手順には、MicroShift のネットワークとストレージの設定が含まれます。
rpm-ostree ファイルシステムはイメージモードではサポートされていないため、Image mode を使用するデプロイメントに変更を加えるために使用しないでください。
1.2. bootc イメージのビルド リンクのコピーリンクがクリップボードにコピーされました!
Containerfile を使用して、MicroShift を含む Red Hat Enterprise Linux (RHEL) を起動可能なコンテナーイメージとしてビルドします。
Image Mode for RHEL はテクノロジープレビュー機能です。実稼働環境での bootc イメージの使用はサポートされていません。
前提条件
- MicroShift bootc イメージをビルドし、コンテナーを実行するための、アクティブな Red Hat サブスクリプションを備えた Red Hat Enterprise Linux (RHEL) 9.4 ホスト。
-
sudo権限を持つユーザー認証情報を使用して RHEL 9.4 ホストにログインしている。 -
rhocpおよびfast-datapathリポジトリーは、ホストサブスクリプションでアクセスできる。リポジトリーは必ずしもホスト上で有効にする必要はありません。 - bootc イメージを保存およびアクセスするための Red Hat Quay などのリモートレジストリーがある。
手順
以下の命令を含む Containerfile を作成します。
RHEL Image mode の Containerfile の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Podman は、コンテナーイメージをビルドするときに、コンテナー内のホストのサブスクリプション情報とリポジトリーを使用します。
rhocpおよびfast-datapathリポジトリーがホスト上で利用できないと、ビルドは失敗します。次のイメージビルドコマンドを実行して、ローカル bootc イメージを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- <your_redhat_user_password> を自分のパスワードに置き換えます。
注記イメージビルド中にシークレットが使用される方法
-
registry.redhat.ioレジストリーからベースrhel-bootc:9.4イメージをプルするには、podman--authfile引数が必要です。 -
ビルド
USER_PASSWD引数は、redhatユーザーのパスワードを設定するために使用されます。
検証
次のコマンドを実行して、ローカル bootc イメージが作成されたことを確認します。
sudo podman images "${IMAGE_NAME}"$ sudo podman images "${IMAGE_NAME}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
REPOSITORY TAG IMAGE ID CREATED SIZE localhost/microshift-4.17-bootc latest 193425283c00 2 minutes ago 2.31 GB
REPOSITORY TAG IMAGE ID CREATED SIZE localhost/microshift-4.17-bootc latest 193425283c00 2 minutes ago 2.31 GBCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. bootc イメージをリモートレジストリーに公開する リンクのコピーリンクがクリップボードにコピーされました!
bootc イメージをリモートレジストリーに公開すると、別のホストでコンテナーを実行する場合や、bootc イメージレイヤーを使用して新しいオペレーティングシステムをインストールする場合に、イメージを使用できるようになります。
前提条件
-
sudo権限を持つユーザー認証情報を使用して、イメージがビルドされた RHEL 9.4 ホストにログインしている。 - bootc イメージを保存およびアクセスするための Red Hat Quay などのリモートレジストリーがある。
- Containerfile を作成し、イメージをビルドしている。
手順
次のコマンドを実行して、リモートレジストリーにログインします。
REGISTRY_URL=quay.io $ sudo podman login "${REGISTRY_URL}"REGISTRY_URL=quay.io $ sudo podman login "${REGISTRY_URL}"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- REGISTRY_URL を、レジストリーの URL に置き換えます。
以下のコマンドを実行してイメージを公開します。
REGISTRY_IMG=<myorg/mypath>/"${IMAGE_NAME}" IMAGE_NAME=<microshift-4.17-bootc> $ sudo podman push localhost/"${IMAGE_NAME}" "${REGISTRY_URL}/${REGISTRY_IMG}"REGISTRY_IMG=<myorg/mypath>/"${IMAGE_NAME}"1 2 IMAGE_NAME=<microshift-4.17-bootc>3 $ sudo podman push localhost/"${IMAGE_NAME}" "${REGISTRY_URL}/${REGISTRY_IMG}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- 「MicroShift bootc コンテナーの実行」セクションで説明されているように、レジストリーにプッシュしたイメージを使用してコンテナーを実行します。
1.4. bootc コンテナーで MicroShift を実行するためのネットワークとストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
1.4.1. CNI 用の MicroShift bootc イメージの設定 リンクのコピーリンクがクリップボードにコピーされました!
カーネルの不一致に対する回避策を設定して、MicroShift OVN-Kubernetes (OVN-K)Container Network Interface (CNI) を有効にします。
MicroShift OVN-K CNI では、bootc イメージで openvswitch カーネルモジュールが使用可能である必要があります。bootc イメージは、ホストカーネルを使用するコンテナーとして起動されます。ホストカーネルがイメージのビルドに使用されたカーネルと異なる場合があり、不一致が生じる可能性があります。/lib/modules ディレクトリーにあるモジュールとカーネルバージョンが一致しない場合は、openvswitch モジュールをコンテナーにロードできず、コンテナーの実行に失敗します。この問題を回避するには、ホストに openvswitch モジュールを事前にロードします。
前提条件
- MicroShift bootc イメージをビルドし、コンテナーを実行するための、アクティブな Red Hat サブスクリプションを備えた Red Hat Enterprise Linux (RHEL) 9.4 ホスト。
-
sudo権限を持つユーザー認証情報を使用して RHEL 9.4 ホストにログインしている。
手順
次のコマンドを実行して、
openvswitchモジュールが現在のホストカーネルバージョンで使用可能か確認します。find /lib/modules/$(uname -r) -name "openvswitch*"
$ find /lib/modules/$(uname -r) -name "openvswitch*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
/lib/modules/5.14.0-427.28.1.el9_4.x86_64/kernel/net/openvswitch /lib/modules/5.14.0-427.28.1.el9_4.x86_64/kernel/net/openvswitch/openvswitch.ko.xz
/lib/modules/5.14.0-427.28.1.el9_4.x86_64/kernel/net/openvswitch /lib/modules/5.14.0-427.28.1.el9_4.x86_64/kernel/net/openvswitch/openvswitch.ko.xzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
IMAGE_NAME環境変数を設定します。IMAGE_NAME=microshift-4.17-bootc
$ IMAGE_NAME=microshift-4.17-bootcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、bootc イメージで使用される kernel-core
packageのバージョンを確認します。sudo podman inspect "${IMAGE_NAME}" | grep kernel-core$ sudo podman inspect "${IMAGE_NAME}" | grep kernel-coreCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
"created_by": "kernel-core-5.14.0-427.26.1.el9_4.x86_64"
"created_by": "kernel-core-5.14.0-427.26.1.el9_4.x86_64"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- カーネルのバージョンが
/lib/modulesディレクトリーの出力と一致しません。
回避策として、次のコマンドを実行して、ホストに
openvswitchモジュールを事前にインストールします。sudo modprobe openvswitch
$ sudo modprobe openvswitchCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.2. MicroShift CSI のホスト設定の確認 リンクのコピーリンクがクリップボードにコピーされました!
ホストが空き領域のあるボリュームグループ (VG) を持つように設定されていると、この設定はコンテナーにより継承されます。MicroShift 論理ボリュームマネージャー (LVM) Container Storage Interface (CSI) は VG を使用して、ストレージを割り当てることができます。
前提条件
- MicroShift bootc イメージをビルドし、コンテナーを実行するための、アクティブな Red Hat サブスクリプションを備えた Red Hat Enterprise Linux (RHEL) 9.4 ホスト。
-
sudo権限を持つユーザー認証情報を使用して RHEL 9.4 ホストにログインしている。
手順
次のコマンドを実行して、ボリュームグループが存在し、必要な空き領域があるか確認します。
sudo vgs
$ sudo vgsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 既存のボリュームグループの出力例
VG #PV #LV #SN Attr VSize VFree rhel 1 1 0 wz--n- <91.02g <2.02g
VG #PV #LV #SN Attr VSize VFree1 rhel 1 1 0 wz--n- <91.02g <2.02gCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 空きボリュームグループが存在しない場合は、出力は空になるか、
VFreeの値は 0 になります。
注記ホストに必要なストレージを備えたボリュームグループがある場合は、すぐにコンテナーを実行できます。MicroShift CSI をさらに設定する必要はありません。
重要ボリュームグループがない場合は、bootc MicroShift コンテナーにストレージを割り当てるために、LVM CSI 用にボリュームグループを設定する必要があります。詳細は、関連情報を参照してください。
1.4.3. bootc イメージと MicroShift CSI のコンテナーストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
必要なストレージを備えたボリュームグループがホスト上で使用できない場合は、この手順を使用します。コンテナーと共有され、MicroShift 論理ボリュームマネージャー (LVM) Container Storage Interface (CSI) によって使用される追加の LVM ボリュームグループループデバイスを作成して割り当てます。
MicroShift CSI のホスト設定を確認したときに十分な領域を持つボリュームグループが見つかった場合は、この手順を完了する必要はありません。bootc イメージの実行に進みます。
前提条件
- MicroShift bootc イメージをビルドし、コンテナーを実行するための、アクティブな Red Hat サブスクリプションを備えた Red Hat Enterprise Linux (RHEL) 9.4 ホスト。
-
sudo権限を持つユーザー認証情報を使用して RHEL 9.4 ホストにログインしている。
手順
次のコマンドを実行して、LVM パーティション設定に使用するファイルを作成します。
VGFILE=/var/lib/microshift-lvm-storage.img sudo losetup -f "${VGFILE}"VGFILE=/var/lib/microshift-lvm-storage.img sudo losetup -f "${VGFILE}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ファイルを指定したサイズに変更します。
VGSIZE=1G $ sudo truncate --size="${VGSIZE}" "${VGFILE}"VGSIZE=1G1 $ sudo truncate --size="${VGSIZE}" "${VGFILE}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ファイルのサイズを指定します。
次のコマンドを実行して、ループデバイス名をクエリーします。
VGLOOP=$(losetup -j ${VGFILE} | cut -d: -f1)$ VGLOOP=$(losetup -j ${VGFILE} | cut -d: -f1)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ループデバイス上に空きボリュームグループを作成します。
sudo vgcreate -f -y <my-volume-group> "${VGLOOP}"$ sudo vgcreate -f -y <my-volume-group> "${VGLOOP}"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- <my-volume-group> を作成するボリュームグループの名前に置き換えます。
1.5. MicroShift bootc コンテナーの実行 リンクのコピーリンクがクリップボードにコピーされました!
MicroShift bootc コンテナーを実行して、複雑さが軽減されたことを確認し、新しい機能と依存関係を試してください。
前提条件
- MicroShift bootc イメージをビルドし、コンテナーを実行するための、アクティブな Red Hat サブスクリプションを備えた Red Hat Enterprise Linux (RHEL) 9.4 ホスト。
-
sudo権限を持つユーザー認証情報を使用して RHEL 9.4 ホストにログインしている。 - 必要な MicroShift コンテナーイメージをダウンロードするためのプルシークレットファイルがある。
手順
次のコマンドを入力して、MicroShift サービスのコンテナーを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ホストカーネルバージョンが bootc イメージカーネルバージョンと異なると、コンテナー内で
systemd-modules-loadサービスが起動しません。必要なカーネルモジュールはすべてホストによってロードされているため、この障害は無視しても問題ありません。- MicroShift が起動すると、ターミナルにログインプロンプトが表示されます。
- ユーザー認証情報を使用して、実行中のコンテナーにログインします。
次のコマンドを実行して、すべての MicroShift Pod がエラーなく起動して実行されていることを確認します。
watch sudo oc get pods -A \ --kubeconfig /var/lib/microshift/resources/kubeadmin/kubeconfig$ watch sudo oc get pods -A \ --kubeconfig /var/lib/microshift/resources/kubeadmin/kubeconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - これで、他の MicroShift クラスターを使用する場合と同じ方法で、コンテナー内で実行されている MicroShift を使用できるようになります。
1.5.1. MicroShift クラスターへのリモートアクセス リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、kubeconfig ファイルを使用してリモートロケーションから MicroShift クラスターにアクセスします。
user@workstation ログインは、ホストマシンにリモートからアクセスするのに使用されます。手順の <user> 値は、user@workstation が MicroShift ホストにログインするユーザーの名前になります。
前提条件
-
ocバイナリーがインストールされている。 -
user@microshiftは、ローカルホストからファイアウォールを開いている。
手順
user@workstationとして、Red Hat Enterprise Linux (RHEL) マシンに~/.kube/フォルダーがない場合は、次のコマンドを実行してフォルダーを作成します。mkdir -p ~/.kube/
[user@workstation]$ mkdir -p ~/.kube/Copy to Clipboard Copied! Toggle word wrap Toggle overflow user@workstationとして、次のコマンドを実行して、MicroShift ホストのホスト名の変数を設定します。MICROSHIFT_MACHINE=<name or IP address of MicroShift machine>
[user@workstation]$ MICROSHIFT_MACHINE=<name or IP address of MicroShift machine>Copy to Clipboard Copied! Toggle word wrap Toggle overflow user@workstationとして、次のコマンドを実行して、MicroShift を実行している RHEL マシンからローカルマシンに接続するホスト名または IP アドレスを含む生成されたkubeconfigファイルをコピーします。ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/config
[user@workstation]$ ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この手順の
kubeconfigファイルを生成するには、リモートアクセス用の kubeconfig ファイルの追加生成 を参照してください。user@workstationとして、次のコマンドを実行して~/.kube/configファイルのパーミッションを更新します。chmod go-r ~/.kube/config
$ chmod go-r ~/.kube/configCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
user@workstationとして、次のコマンドを入力して、MicroShift が実行されていることを確認します。oc get all -A
[user@workstation]$ oc get all -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6. bootc イメージと MicroShift CSI のコンテナーストレージのクリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
コンテナーと共有され、MicroShift 論理ボリュームマネージャー (LVM) Container Storage Interface (CSI) が使用していた追加の LVM ボリュームグループループデバイスを削除できます。
前提条件
- MicroShift bootc イメージをビルドし、コンテナーを実行するための、アクティブな Red Hat サブスクリプションを備えた Red Hat Enterprise Linux (RHEL) 9.4 ホスト。
-
sudo権限を持つユーザー認証情報を使用して RHEL 9.4 ホストにログインしている。
手順
次のコマンドを使用して、ループデバイスと追加のボリュームグループをクリーンアップします。
次のコマンドを入力して、ループデバイスをデタッチします。
sudo losetup -d "${VGLOOP}"$ sudo losetup -d "${VGLOOP}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、LVM ボリュームグループファイルを削除します。
sudo rm -f "${VGFILE}"$ sudo rm -f "${VGFILE}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow