RHEL Image Mode を使用したインストール


Red Hat build of MicroShift 4.17

MicroShift を bootc イメージに埋め込む

Red Hat OpenShift Documentation Team

概要

Image mode for Red Hat Enterprise Linux (RHEL) を使用して、MicroShift を bootc イメージに埋め込むことができます。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 を使用するワークフローには、次の手順が含まれます。

  1. MicroShift bootc イメージをビルドします。
  2. イメージを公開します。
  3. イメージを実行します。この手順には、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 などのリモートレジストリーがある。

手順

  1. 以下の命令を含む Containerfile を作成します。

    RHEL Image mode の Containerfile の例

    Copy to Clipboard Toggle word wrap
    FROM registry.redhat.io/rhel9/rhel-bootc:9.4
    
    ARG USHIFT_VER=4.17
    RUN dnf config-manager \
            --set-enabled rhocp-${USHIFT_VER}-for-rhel-9-$(uname -m)-rpms \
            --set-enabled fast-datapath-for-rhel-9-$(uname -m)-rpms
    RUN dnf install -y firewalld microshift && \
        systemctl enable microshift && \
        dnf clean all
    
    # Create a default 'redhat' user with the specified password.
    # Add it to the 'wheel' group to allow for running sudo commands.
    ARG USER_PASSWD
    RUN if [ -z "${USER_PASSWD}" ] ; then \
            echo USER_PASSWD is a mandatory build argument && exit 1 ; \
        fi
    RUN useradd -m -d /var/home/redhat -G wheel redhat && \
        echo "redhat:${USER_PASSWD}" | chpasswd
    
    # Mandatory firewall configuration
    RUN firewall-offline-cmd --zone=public --add-port=22/tcp && \
        firewall-offline-cmd --zone=trusted --add-source=10.42.0.0/16 && \
        firewall-offline-cmd --zone=trusted --add-source=169.254.169.1
    
    # Create a systemd unit to recursively make the root filesystem subtree
    # shared as required by OVN images
    RUN cat > /etc/systemd/system/microshift-make-rshared.service <<'EOF'
    [Unit]
    Description=Make root filesystem shared
    Before=microshift.service
    ConditionVirtualization=container
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/mount --make-rshared /
    [Install]
    WantedBy=multi-user.target
    EOF
    RUN systemctl enable microshift-make-rshared.service

    重要

    Podman は、コンテナーイメージをビルドするときに、コンテナー内のホストのサブスクリプション情報とリポジトリーを使用します。rhocp および fast-datapath リポジトリーがホスト上で利用できないと、ビルドは失敗します。

  2. 次のイメージビルドコマンドを実行して、ローカル bootc イメージを作成します。

    Copy to Clipboard Toggle word wrap
    PULL_SECRET=~/.pull-secret.json
    USER_PASSWD=<your_redhat_user_password> 
    1
    
    IMAGE_NAME=microshift-4.17-bootc
    
    $ sudo podman build --authfile "${PULL_SECRET}" -t "${IMAGE_NAME}" \
        --build-arg USER_PASSWD="${USER_PASSWD}" \
        -f Containerfile
    1
    <your_redhat_user_password> を自分のパスワードに置き換えます。
    注記

    イメージビルド中にシークレットが使用される方法

    • registry.redhat.io レジストリーからベース rhel-bootc:9.4 イメージをプルするには、podman --authfile 引数が必要です。
    • ビルド USER_PASSWD 引数は、redhat ユーザーのパスワードを設定するために使用されます。

検証

  1. 次のコマンドを実行して、ローカル bootc イメージが作成されたことを確認します。

    Copy to Clipboard Toggle word wrap
    $ sudo podman images "${IMAGE_NAME}"

    出力例

    Copy to Clipboard Toggle word wrap
    REPOSITORY                       TAG         IMAGE ID      CREATED        SIZE
    localhost/microshift-4.17-bootc  latest      193425283c00  2 minutes ago  2.31 GB

1.3. bootc イメージをリモートレジストリーに公開する

bootc イメージをリモートレジストリーに公開すると、別のホストでコンテナーを実行する場合や、bootc イメージレイヤーを使用して新しいオペレーティングシステムをインストールする場合に、イメージを使用できるようになります。

前提条件

  • sudo 権限を持つユーザー認証情報を使用して、イメージがビルドされた RHEL 9.4 ホストにログインしている。
  • bootc イメージを保存およびアクセスするための Red Hat Quay などのリモートレジストリーがある。
  • Containerfile を作成し、イメージをビルドしている。

手順

  1. 次のコマンドを実行して、リモートレジストリーにログインします。

    Copy to Clipboard Toggle word wrap
    REGISTRY_URL=quay.io
    
    $ sudo podman login "${REGISTRY_URL}" 
    1
    1
    REGISTRY_URL を、レジストリーの URL に置き換えます。
  2. 以下のコマンドを実行してイメージを公開します。

    Copy to Clipboard Toggle word wrap
    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}"
    1
    <myorg/mypath> を、リモートレジストリーの組織名とパスに置き換えます。
    2
    <microshift-4.17-bootc> を、公開するイメージの名前に置き換えます。

検証

  1. 「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 ホストにログインしている。

手順

  1. 次のコマンドを実行して、openvswitch モジュールが現在のホストカーネルバージョンで使用可能か確認します。

    Copy to Clipboard Toggle word wrap
    $ find /lib/modules/$(uname -r) -name "openvswitch*"

    出力例

    Copy to Clipboard Toggle word wrap
    /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

  2. 次のコマンドを実行して、IMAGE_NAME 環境変数を設定します。

    Copy to Clipboard Toggle word wrap
    $ IMAGE_NAME=microshift-4.17-bootc
  3. 次のコマンドを実行して、bootc イメージで使用される kernel-core package のバージョンを確認します。

    Copy to Clipboard Toggle word wrap
    $ sudo podman inspect "${IMAGE_NAME}" | grep kernel-core

    出力例

    Copy to Clipboard Toggle word wrap
    "created_by": "kernel-core-5.14.0-427.26.1.el9_4.x86_64" 
    1

    1
    カーネルのバージョンが /lib/modules ディレクトリーの出力と一致しません。
  4. 回避策として、次のコマンドを実行して、ホストに openvswitch モジュールを事前にインストールします。

    Copy to Clipboard Toggle word wrap
    $ sudo modprobe openvswitch

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 ホストにログインしている。

手順

  1. 次のコマンドを実行して、ボリュームグループが存在し、必要な空き領域があるか確認します。

    Copy to Clipboard Toggle word wrap
    $ sudo vgs

    既存のボリュームグループの出力例

    Copy to Clipboard Toggle word wrap
      VG   #PV #LV #SN Attr   VSize   VFree 
    1
    
      rhel   1   1   0 wz--n- <91.02g <2.02g

    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 ホストにログインしている。

手順

  1. 次のコマンドを実行して、LVM パーティション設定に使用するファイルを作成します。

    Copy to Clipboard Toggle word wrap
    VGFILE=/var/lib/microshift-lvm-storage.img
    
    sudo losetup -f "${VGFILE}"
  2. 次のコマンドを実行して、ファイルを指定したサイズに変更します。

    Copy to Clipboard Toggle word wrap
    VGSIZE=1G 
    1
    
    
    $ sudo truncate --size="${VGSIZE}" "${VGFILE}"
    1
    ファイルのサイズを指定します。
  3. 次のコマンドを実行して、ループデバイス名をクエリーします。

    Copy to Clipboard Toggle word wrap
    $ VGLOOP=$(losetup -j ${VGFILE} | cut -d: -f1)
  4. 次のコマンドを実行して、ループデバイス上に空きボリュームグループを作成します。

    Copy to Clipboard Toggle word wrap
    $ sudo vgcreate -f -y <my-volume-group> "${VGLOOP}" 
    1
    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 コンテナーイメージをダウンロードするためのプルシークレットファイルがある。

手順

  1. 次のコマンドを入力して、MicroShift サービスのコンテナーを実行します。

    Copy to Clipboard Toggle word wrap
    PULL_SECRET=~/.pull-secret.json
    IMAGE_NAME=microshift-4.17-bootc
    
    $ sudo podman run --rm -it --privileged \
        -v "${PULL_SECRET}":/etc/crio/openshift-pull-secret:ro \
        -v /var/lib/containers/storage:/var/lib/containers/storage \
        --name "${IMAGE_NAME}" \
        "${IMAGE_NAME}"
    注記

    ホストカーネルバージョンが bootc イメージカーネルバージョンと異なると、コンテナー内で systemd-modules-load サービスが起動しません。必要なカーネルモジュールはすべてホストによってロードされているため、この障害は無視しても問題ありません。

  2. MicroShift が起動すると、ターミナルにログインプロンプトが表示されます。
  3. ユーザー認証情報を使用して、実行中のコンテナーにログインします。
  4. 次のコマンドを実行して、すべての MicroShift Pod がエラーなく起動して実行されていることを確認します。

    Copy to Clipboard Toggle word wrap
    $ watch sudo oc get pods -A \
        --kubeconfig /var/lib/microshift/resources/kubeadmin/kubeconfig

    出力例

    Copy to Clipboard Toggle word wrap
    NAMESPACE                  NAME                                       READY   STATUS    RESTARTS      AGE
    kube-system                csi-snapshot-controller-7cfb9df49c-kc9dx   1/1     Running   0             31s
    kube-system                csi-snapshot-webhook-5c6b978878-jzk5r      1/1     Running   0             28s
    openshift-dns              dns-default-rpnlt                          2/2     Running   0             14s
    openshift-dns              node-resolver-rxvdk                        1/1     Running   0             31s
    openshift-ingress          router-default-69cd7b5545-7zcw7            1/1     Running   0             29s
    openshift-ovn-kubernetes   ovnkube-master-c7hlh                       4/4     Running   1 (16s ago)   31s
    openshift-ovn-kubernetes   ovnkube-node-mkpht                         1/1     Running   1 (17s ago)   31s
    openshift-service-ca       service-ca-5d5d96459d-5pd5s                1/1     Running   0             28s
    openshift-storage          topolvm-controller-677cbfcdb9-28dqr        5/5     Running   0             31s
    openshift-storage          topolvm-node-6fzbl                         3/3     Running   0             14s

  5. これで、他の MicroShift クラスターを使用する場合と同じ方法で、コンテナー内で実行されている MicroShift を使用できるようになります。

1.5.1. MicroShift クラスターへのリモートアクセス

以下の手順に従って、kubeconfig ファイルを使用してリモートロケーションから MicroShift クラスターにアクセスします。

user@workstation ログインは、ホストマシンにリモートからアクセスするのに使用されます。手順の <user> 値は、user@workstation が MicroShift ホストにログインするユーザーの名前になります。

前提条件

  • oc バイナリーがインストールされている。
  • user@microshift は、ローカルホストからファイアウォールを開いている。

手順

  1. user@workstation として、Red Hat Enterprise Linux (RHEL) マシンに ~/.kube/ フォルダーがない場合は、次のコマンドを実行してフォルダーを作成します。

    Copy to Clipboard Toggle word wrap
    [user@workstation]$ mkdir -p ~/.kube/
  2. user@workstation として、次のコマンドを実行して、MicroShift ホストのホスト名の変数を設定します。

    Copy to Clipboard Toggle word wrap
    [user@workstation]$ MICROSHIFT_MACHINE=<name or IP address of MicroShift machine>
  3. user@workstation として、次のコマンドを実行して、MicroShift を実行している RHEL マシンからローカルマシンに接続するホスト名または IP アドレスを含む生成された kubeconfig ファイルをコピーします。

    Copy to Clipboard Toggle word wrap
    [user@workstation]$ ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/config
    注記

    この手順の kubeconfig ファイルを生成するには、リモートアクセス用の kubeconfig ファイルの追加生成 を参照してください。

  4. user@workstation として、次のコマンドを実行して ~/.kube/config ファイルのパーミッションを更新します。

    Copy to Clipboard Toggle word wrap
    $ chmod go-r ~/.kube/config

検証

  • user@workstation として、次のコマンドを入力して、MicroShift が実行されていることを確認します。

    Copy to Clipboard Toggle word wrap
    [user@workstation]$ oc get all -A

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 ホストにログインしている。

手順

  1. 次のコマンドを使用して、ループデバイスと追加のボリュームグループをクリーンアップします。

    1. 次のコマンドを入力して、ループデバイスをデタッチします。

      Copy to Clipboard Toggle word wrap
      $ sudo losetup -d "${VGLOOP}"
    2. 次のコマンドを入力して、LVM ボリュームグループファイルを削除します。

      Copy to Clipboard Toggle word wrap
      $ sudo rm -f "${VGFILE}"

1.7. 関連情報

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat, Inc.