RHEL for Edge イメージへの埋め込み
RHEL for Edge イメージへの埋め込み
概要
第1章 Image Builder を使用した RHEL for Edge イメージへの埋め込み
MicroShift は、Red Hat Enterprise Linux for Edge (RHEL for Edge) イメージに埋め込むことができます。このガイドを使用して、MicroShift を含む RHEL イメージを構築します。
1.1. イメージ構築の準備
RHEL for Edge イメージの作成、インストール、および管理 を参照してください。
特定の CPU アーキテクチャー用の Red Hat Enterprise Linux for Edge (RHEL for Edge) 9.4 イメージをビルドするには、Image Builder のシステム要件 を満たす同じ CPU アーキテクチャーの RHEL 9.4 ビルドホストが必要です。
Image Builder のインストール の手順に従って、Image Builder と composer-cli
ツールをインストールします。
1.2. イメージ構築のための拡張サポートリポジトリーの有効化
MicroShift または Red Hat Enterprise Linux (RHEL) の延長サポート (EUS) リリースをお持ちの場合は、Image Builder が使用できるように RHEL EUS リポジトリーを有効にする必要があります。EUS バージョンをお持ちでない場合は、これらの手順をスキップできます。
前提条件
- MicroShift または RHEL の EUS バージョンがあるか、そのどちらかに更新中である。
- ビルドホストへの root ユーザーアクセス権がある。
- Red Hat Device Edge リリースの互換性に関する表 を確認している。
Red Hat Device Edge のサポートされている設定でコンポーネントのバージョンを維持するには、MicroShift と RHEL を同時に更新する必要がある場合があります。特に 2 つのマイナーバージョン間で MicroShift を更新する場合は、更新先の MicroShift のバージョンと、RHEL のバージョンの互換性があることを確認してください。そうしないと、サポートされていない設定を作成したり、クラスターを破損させたり、あるいはその両方を引き起こす可能性があります。詳細は、Red Hat Device Edge リリースの互換性に関する表 を参照してください。
手順
次のコマンドを実行して、
/etc/osbuild-composer/repositories
ディレクトリーを作成します。sudo mkdir -p /etc/osbuild-composer/repositories
$ sudo mkdir -p /etc/osbuild-composer/repositories
Copy to Clipboard Copied! 次のコマンドを実行して、
/usr/share/osbuild-composer/repositories/rhel-9.4.json
ファイルを/etc/osbuild-composer/repositories
ディレクトリーにコピーします。sudo cp /usr/share/osbuild-composer/repositories/rhel-9.4.json /etc/osbuild-composer/repositories/rhel-9.4.json
$ sudo cp /usr/share/osbuild-composer/repositories/rhel-9.4.json /etc/osbuild-composer/repositories/rhel-9.4.json
Copy to Clipboard Copied! /etc/osbuild-composer/repositories/rhel-9.4.json
ファイルを次の値に変更して、baseos
ソースを更新します。... ...
# ... "baseurl": "https://cdn.redhat.com/content/eus/rhel<9>/<9.4>//baseos/os",
1 # ...
Copy to Clipboard Copied! - 1
- <9> は、使用している RHEL のメジャーバージョンに、<9.4> は <major.minor> バージョンに置き換えます。選択した RHEL バージョンが、使用している MicroShift バージョンと互換性があることを確認してください。
オプション: 以下のコマンドを実行して
baseos
更新を適用します。sudo sed -i "s,dist/rhel<9>/<9.4>/$(uname -m)/baseos/,eus/rhel<9>/<9.4>/$(uname -m)/baseos/,g" \ /etc/osbuild-composer/repositories/rhel-<9.4>.json
$ sudo sed -i "s,dist/rhel<9>/<9.4>/$(uname -m)/baseos/,eus/rhel<9>/<9.4>/$(uname -m)/baseos/,g" \ /etc/osbuild-composer/repositories/rhel-<9.4>.json
1 Copy to Clipboard Copied! - 1
- <9> は、使用している RHEL のメジャーバージョンに、<9.4> は <major.minor> バージョンに置き換えます。選択した RHEL バージョンが、使用している MicroShift バージョンと互換性があることを確認してください。
/etc/osbuild-composer/repositories/rhel-<major.minor>.json
ファイルを次の値に変更して、appstream
ソースを更新します。... ...
# ... "baseurl": "https://cdn.redhat.com/content/eus/rhel<9>/<9.4>//appstream/os",
1 # ...
Copy to Clipboard Copied! - 1
- <9> は、使用している RHEL のメジャーバージョンに、<9.4> は <major.minor> バージョンに置き換えます。選択した RHEL バージョンが、使用している MicroShift バージョンと互換性があることを確認してください。
オプション: 以下のコマンドを実行して
appstream
の更新を適用します。sudo sed -i "s,dist/rhel<9>/<9.4>/$(uname -m)/appstream/,eus/rhel<9>/<9.4>/$(uname -m)/appstream/,g" \ /etc/osbuild-composer/repositories/rhel-<9.4>.json
$ sudo sed -i "s,dist/rhel<9>/<9.4>/$(uname -m)/appstream/,eus/rhel<9>/<9.4>/$(uname -m)/appstream/,g" \ /etc/osbuild-composer/repositories/rhel-<9.4>.json
1 Copy to Clipboard Copied! - 1
- <9> は、使用している RHEL のメジャーバージョンに、<9.4> は <major.minor> バージョンに置き換えます。選択した RHEL バージョンが、使用している MicroShift バージョンと互換性があることを確認してください。
検証
composer-cli
ツールを使用してソースに関する情報を表示することで、リポジトリーを検証できます。
以下のコマンドを実行して
baseos
ソースを確認します。sudo composer-cli sources info baseos | grep 'url ='
$ sudo composer-cli sources info baseos | grep 'url ='
Copy to Clipboard Copied! 出力例
url = "https://cdn.redhat.com/content/eus/rhel9/9.4/x86_64/baseos/os"
url = "https://cdn.redhat.com/content/eus/rhel9/9.4/x86_64/baseos/os"
Copy to Clipboard Copied! 以下のコマンドを実行して
appstream
ソースを確認します。sudo composer-cli sources info appstream | grep 'url ='
$ sudo composer-cli sources info appstream | grep 'url ='
Copy to Clipboard Copied! 出力例
url = "https://cdn.redhat.com/content/eus/rhel9/9.4/x86_64/appstream/os"
url = "https://cdn.redhat.com/content/eus/rhel9/9.4/x86_64/appstream/os"
Copy to Clipboard Copied!
1.3. Image Builder への MicroShift リポジトリーの追加
次の手順を使用して、ビルドホスト上の Image Builder に MicroShift リポジトリーを追加します。
前提条件
- ビルドホストが Image Builder のシステム要件を満たしている。
-
Image Builder と
composer-cli
ツールをインストールしてセットアップしている。 - ビルドホストへの root ユーザーアクセス権がある。
手順
次のコマンドを実行して、MicroShift の RPM をプルするために必要な
rhocp-4.17
RPM リポジトリーソースを追加するための Image Builder 設定ファイルを作成します。cat > rhocp-4.17.toml <<EOF id = "rhocp-4.17" name = "Red Hat OpenShift Container Platform 4.17 for RHEL 9" type = "yum-baseurl" url = "https://cdn.redhat.com/content/dist/layered/rhel9/$(uname -m)/rhocp/4.17/os" check_gpg = true check_ssl = true system = false rhsm = true EOF
cat > rhocp-4.17.toml <<EOF id = "rhocp-4.17" name = "Red Hat OpenShift Container Platform 4.17 for RHEL 9" type = "yum-baseurl" url = "https://cdn.redhat.com/content/dist/layered/rhel9/$(uname -m)/rhocp/4.17/os" check_gpg = true check_ssl = true system = false rhsm = true EOF
Copy to Clipboard Copied! 次のコマンドを実行して、
fast-datapath
RPM リポジトリーを追加するための Image Builder 設定ファイルを作成します。cat > fast-datapath.toml <<EOF id = "fast-datapath" name = "Fast Datapath for RHEL 9" type = "yum-baseurl" url = "https://cdn.redhat.com/content/dist/layered/rhel9/$(uname -m)/fast-datapath/os" check_gpg = true check_ssl = true system = false rhsm = true EOF
cat > fast-datapath.toml <<EOF id = "fast-datapath" name = "Fast Datapath for RHEL 9" type = "yum-baseurl" url = "https://cdn.redhat.com/content/dist/layered/rhel9/$(uname -m)/fast-datapath/os" check_gpg = true check_ssl = true system = false rhsm = true EOF
Copy to Clipboard Copied! 次のコマンドを実行して、Image Builder にソースを追加します。
sudo composer-cli sources add rhocp-4.17.toml
$ sudo composer-cli sources add rhocp-4.17.toml
Copy to Clipboard Copied! sudo composer-cli sources add fast-datapath.toml
$ sudo composer-cli sources add fast-datapath.toml
Copy to Clipboard Copied!
検証
以下のコマンドを実行して、ソースが適切に追加されたことを確認します。
sudo composer-cli sources list
$ sudo composer-cli sources list
Copy to Clipboard Copied! 出力例
appstream baseos fast-datapath rhocp-4.17
appstream baseos fast-datapath rhocp-4.17
Copy to Clipboard Copied!
1.4. ブループリントへの MicroShift サービスの追加
MicroShift RPM パッケージを Image Builder ブループリントに追加すると、MicroShift が埋め込まれた RHEL for Edge イメージをビルドできるようになります。
- 手順 1 から開始して独自の最小限のブループリントファイルを作成すると、MicroShift のインストールが高速化されます。
手順 2 から開始して、すべての RPM パッケージとコンテナーイメージを含む、生成されたインストール用のブループリントを使用します。これはインストールプロセスに時間がかかりますが、コンテナー参照がローカルでアクセスされるため、起動は速くなります。
重要-
次の手順の
<microshift_blueprint.toml>
は、使用している TOML ファイルの名前に置き換えます。 -
次の手順の
<microshift_blueprint>
は、ブループリントに使用する名前に置き換えます。
-
次の手順の
手順
次の例を使用して、独自のブループリントファイルを作成します。
カスタム Image Builder ブループリントの例
cat > <microshift_blueprint.toml> <<EOF name = "<microshift_blueprint>" description = "" version = "0.0.1" modules = [] groups = [] [[packages]] name = "microshift" version = "*" [customizations.services] enabled = ["microshift"] EOF
cat > <microshift_blueprint.toml> <<EOF
1 name = "<microshift_blueprint>"
2 description = "" version = "0.0.1" modules = [] groups = [] [[packages]] name = "microshift" version = "*" [customizations.services] enabled = ["microshift"] EOF
Copy to Clipboard Copied! 注記コマンドのワイルドカード
*
は、最新の MicroShift RPM を使用します。特定のバージョンが必要な場合は、ワイルドカードを必要なバージョンに置き換えます。たとえば、MicroShift 4.17.1 RPM をダウンロードするには、4.17.1
を挿入します。オプション:
/usr/share/microshift/blueprint
ディレクトリーにインストールされている、プラットフォームアーキテクチャーに固有のブループリントを使用します。ブループリントセクションの説明は、次のサンプルスニペットを参照してください。生成された Image Builder ブループリントのサンプルスニペット
name = "microshift_blueprint" description = "MicroShift 4.17.1 on x86_64 platform" version = "0.0.1" modules = [] groups = [] [[packages]] name = "microshift" version = "4.17.1" ... ... [customizations.services] enabled = ["microshift"] [customizations.firewall] ports = ["22:tcp", "80:tcp", "443:tcp", "5353:udp", "6443:tcp", "30000-32767:tcp", "30000-32767:udp"] ... ... [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:f41e79c17e8b41f1b0a5a32c3e2dd7cd15b8274554d3f1ba12b2598a347475f4" [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:dbc65f1fba7d92b36cf7514cd130fe83a9bd211005ddb23a8dc479e0eea645fd" ... … EOF
name = "microshift_blueprint" description = "MicroShift 4.17.1 on x86_64 platform" version = "0.0.1" modules = [] groups = [] [[packages]]
1 name = "microshift" version = "4.17.1" ... ... [customizations.services]
2 enabled = ["microshift"] [customizations.firewall] ports = ["22:tcp", "80:tcp", "443:tcp", "5353:udp", "6443:tcp", "30000-32767:tcp", "30000-32767:udp"] ... ... [[containers]]
3 source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:f41e79c17e8b41f1b0a5a32c3e2dd7cd15b8274554d3f1ba12b2598a347475f4" [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:dbc65f1fba7d92b36cf7514cd130fe83a9bd211005ddb23a8dc479e0eea645fd" ... … EOF
Copy to Clipboard Copied! 次のコマンドを実行して、Image Builder にブループリントを追加します。
sudo composer-cli blueprints push <microshift_blueprint.toml>
$ sudo composer-cli blueprints push <microshift_blueprint.toml>
1 Copy to Clipboard Copied! - 1
<microshift_blueprint.toml>
は、TOML ファイルの名前に置き換えます。
検証
次のコマンドを実行して、MicroShift パッケージのみをリストした Image Builder 設定を確認します。
sudo composer-cli blueprints depsolve <microshift_blueprint> | grep microshift
$ sudo composer-cli blueprints depsolve <microshift_blueprint> | grep microshift
1 Copy to Clipboard Copied! - 1
<microshift_blueprint>
は、ブループリントの名前に置き換えます。
出力例
blueprint: microshift_blueprint v0.0.1 microshift-greenboot-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch microshift-networking-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.x86_64 microshift-release-info-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch microshift-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.x86_64 microshift-selinux-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch
blueprint: microshift_blueprint v0.0.1 microshift-greenboot-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch microshift-networking-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.x86_64 microshift-release-info-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch microshift-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.x86_64 microshift-selinux-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch
Copy to Clipboard Copied! オプション: 次のコマンドを実行して、インストールするすべてのコンポーネントをリストした Image Builder 設定を確認します。
sudo composer-cli blueprints depsolve <microshift_blueprint>
$ sudo composer-cli blueprints depsolve <microshift_blueprint>
1 Copy to Clipboard Copied! - 1
<microshift_blueprint>
は、ブループリントの名前に置き換えます。
1.5. ブループリントへのその他のパッケージの追加
オプションの RPM パッケージの参照を ostree
ブループリントに追加して有効にします。
前提条件
- Image Builder のブループリントファイルを作成している。
手順
次のコマンドを実行して、
ostree
ブループリントを編集します。vi <microshift_blueprint.toml>
$ vi <microshift_blueprint.toml>
1 Copy to Clipboard Copied! - 1
<microshift_blueprint.toml>
は、MicroShift サービスに使用されるブループリントファイルの名前に置き換えます。
以下のサンプルテキストをブループリントに追加します。
[[packages]] name = "<microshift-additional-package-name>" version = "*"
[[packages]]
1 name = "<microshift-additional-package-name>"
2 version = "*"
Copy to Clipboard Copied!
次のステップ
- 必要に応じて、ブループリントにカスタム証明局を追加します。
ブループリントへの追加が完了したら、新しい
ostree
システムを構築してクライアントにデプロイすることで、マニフェストをアクティブなクラスターに適用できます。- ISO の作成
- ブループリントの追加、ISO のビルド
- ISO のダウンロードおよび使用準備
- 必要なプロビジョニングの実行
1.6. 認証局バンドルの追加
MicroShift は、クライアントがサーバー証明書を評価するときにホスト信頼バンドルを使用します。カスタマイズされたセキュリティー証明書チェーンを使用して、デプロイメント固有のクライアントとエンドポイント証明書の互換性を向上させることもできます。これを行うには、ルート証明書と中間証明書を含む認証局 (CA) バンドルを Red Hat Enterprise Linux for Edge (RHEL for Edge) システム全体の信頼ストアに追加できます。
1.6.1. rpm-ostree イメージへの認証局バンドルの追加
イメージの作成に使用するブループリントに別の信頼できる認証局 (CA) を追加することで、Red Hat Enterprise Linux for Edge (RHEL for Edge) rpm-ostree
イメージに追加の信頼できる認証局 (CA) を含めることができます。次の手順を使用すると、イメージレジストリーからイメージを取得するときにオペレーティングシステムによって信頼される別の CA が設定されます。
この手順では、ブループリントで CA バンドルのカスタマイズを設定してから、キックスタートファイルに手順を追加してバンドルを有効にする必要があります。次の手順では、data
がキーで、<value>
は PEM エンコードされた証明書を表します。
前提条件
- ビルドホストへの root ユーザーアクセス権がある。
- ビルドホストが Image Builder のシステム要件を満たしている。
-
Image Builder と
composer-cli
ツールをインストールしてセットアップしている。
手順
次のカスタム値をブループリントに追加して、ディレクトリーを追加します。
イメージがビルドされるホスト上のブループリントに指示を追加して、証明書バンドル用のディレクトリー
(/etc/pki/ca-trust/source/anchors/
など) を作成します。[[customizations.directories]] path = "/etc/pki/ca-trust/source/anchors"
[[customizations.directories]] path = "/etc/pki/ca-trust/source/anchors"
Copy to Clipboard Copied! イメージが起動したら、証明書バンドル (
/etc/pki/ca-trust/source/anchors/cert1.pem
など) を作成します。[[customizations.files]] path = "/etc/pki/ca-trust/source/anchors/cert1.pem" data = "<value>"
[[customizations.files]] path = "/etc/pki/ca-trust/source/anchors/cert1.pem" data = "<value>"
Copy to Clipboard Copied!
システム全体のトラストストア設定で証明書バンドルを有効にするには、以下のように、使用しているイメージが起動されているホストで
update-ca-trust
コマンドを使用します。sudo update-ca-trust
$ sudo update-ca-trust
Copy to Clipboard Copied!
update-ca-trust
コマンドは、MicroShift ホストのインストールに使用されるキックスタートファイルの %post
セクションに含まれている場合があります。この設定により、最初の起動時に必要なすべての証明書の信頼が有効になります。キックスタートファイルに手順を追加してバンドルを有効にする前に、ブループリントで CA バンドルのカスタマイズを設定する必要があります。
%post # Update certificate trust storage in case new certificates were # installed at /etc/pki/ca-trust/source/anchors directory update-ca-trust %end
%post
# Update certificate trust storage in case new certificates were
# installed at /etc/pki/ca-trust/source/anchors directory
update-ca-trust
%end
1.7. RHEL for Edge イメージの作成
ISO を作成するには、以下の手順を使用します。RHEL for Edge Installer イメージは、実行中のコンテナーからコミットをプルし、埋め込みの rpm-ostree
コミットを使用するように設定されたキックスタートファイルを持つ、インストール可能なブート ISO を作成します。
前提条件
- ビルドホストが Image Builder のシステム要件を満たしている。
-
Image Builder と
composer-cli
ツールをインストールしてセットアップしている。 - ビルドホストへの root ユーザーアクセス権がある。
-
podman
ツールがインストールされている。
手順
次のコマンドを実行して、
ostree
コンテナーイメージビルドを開始します。BUILDID=$(sudo composer-cli compose start-ostree --ref "rhel/{op-system-version-major}/$(uname -m)/edge" <microshift_blueprint> edge-container | awk '/^Compose/ {print $2}')
$ BUILDID=$(sudo composer-cli compose start-ostree --ref "rhel/{op-system-version-major}/$(uname -m)/edge" <microshift_blueprint> edge-container | awk '/^Compose/ {print $2}')
1 Copy to Clipboard Copied! - 1
<microshift_blueprint>
は、ブループリントの名前に置き換えます。
このコマンドは、監視対象のビルドの ID (ID) も返します。
次のコマンドを実行して、ビルドのステータスを定期的に確認できます。
sudo composer-cli compose status
$ sudo composer-cli compose status
Copy to Clipboard Copied! 実行中のビルドの出力例
ID Status Time Blueprint Version Type Size cc3377ec-4643-4483-b0e7-6b0ad0ae6332 RUNNING Wed Jun 7 12:26:23 2023 microshift_blueprint 0.0.1 edge-container
ID Status Time Blueprint Version Type Size cc3377ec-4643-4483-b0e7-6b0ad0ae6332 RUNNING Wed Jun 7 12:26:23 2023 microshift_blueprint 0.0.1 edge-container
Copy to Clipboard Copied! 完了したビルドの出力例
ID Status Time Blueprint Version Type Size cc3377ec-4643-4483-b0e7-6b0ad0ae6332 FINISHED Wed Jun 7 12:32:37 2023 microshift_blueprint 0.0.1 edge-container
ID Status Time Blueprint Version Type Size cc3377ec-4643-4483-b0e7-6b0ad0ae6332 FINISHED Wed Jun 7 12:32:37 2023 microshift_blueprint 0.0.1 edge-container
Copy to Clipboard Copied! 注記起動および停止方法を理解している場合は、
watch
コマンドを使用してビルドを監視できます。ID を使用してコンテナーイメージをダウンロードし、次のコマンドを実行して、使用可能なイメージを取得します。
sudo composer-cli compose image ${BUILDID}
$ sudo composer-cli compose image ${BUILDID}
Copy to Clipboard Copied! 次のコマンドを実行して、ダウンロードしたコンテナーイメージの所有権を現在のユーザーに変更します。
sudo chown $(whoami). ${BUILDID}-container.tar
$ sudo chown $(whoami). ${BUILDID}-container.tar
Copy to Clipboard Copied! 次のコマンドを実行して、現在のユーザーの読み取り権限をイメージに追加します。
sudo chmod a+r ${BUILDID}-container.tar
$ sudo chmod a+r ${BUILDID}-container.tar
Copy to Clipboard Copied! 次の手順を実行して、
ostree
コンテナーイメージが ISO ビルドで使用されるようにポート 8085 でサーバーをブートストラップします。次のコマンドを実行して、
IMAGEID
変数の結果を取得します。IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
$ IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
Copy to Clipboard Copied! IMAGEID
変数の結果をもとに、次のコマンドを実行して podman コマンドを実行します。sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
$ sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
Copy to Clipboard Copied! このコマンドは、監視用に
IMAGEID
変数に保存されているコンテナーの ID も返します。
次のコマンドを実行して、インストーラーブループリントファイルを生成します。
cat > microshift-installer.toml <<EOF name = "microshift-installer" description = "" version = "0.0.0" modules = [] groups = [] packages = [] EOF
cat > microshift-installer.toml <<EOF name = "microshift-installer" description = "" version = "0.0.0" modules = [] groups = [] packages = [] EOF
Copy to Clipboard Copied!
1.8. Image Builder へのブループリントの追加および ISO の構築
次のコマンドを実行して、Image Builder にブループリントを追加します。
sudo composer-cli blueprints push microshift-installer.toml
$ sudo composer-cli blueprints push microshift-installer.toml
Copy to Clipboard Copied! 以下のコマンドを実行して
ostree
ISO ビルドを開始します。BUILDID=$(sudo composer-cli compose start-ostree --url http://localhost:8085/repo/ --ref "rhel/9/$(uname -m)/edge" microshift-installer edge-installer | awk '{print $2}')
$ BUILDID=$(sudo composer-cli compose start-ostree --url http://localhost:8085/repo/ --ref "rhel/9/$(uname -m)/edge" microshift-installer edge-installer | awk '{print $2}')
Copy to Clipboard Copied! このコマンドは、監視対象のビルドの ID (ID) も返します。
次のコマンドを実行して、ビルドのステータスを定期的に確認できます。
sudo composer-cli compose status
$ sudo composer-cli compose status
Copy to Clipboard Copied! 実行中のビルドの出力例
ID Status Time Blueprint Version Type Size c793c24f-ca2c-4c79-b5b7-ba36f5078e8d RUNNING Wed Jun 7 13:22:20 2023 microshift-installer 0.0.0 edge-installer
ID Status Time Blueprint Version Type Size c793c24f-ca2c-4c79-b5b7-ba36f5078e8d RUNNING Wed Jun 7 13:22:20 2023 microshift-installer 0.0.0 edge-installer
Copy to Clipboard Copied! 完了したビルドの出力例
ID Status Time Blueprint Version Type Size c793c24f-ca2c-4c79-b5b7-ba36f5078e8d FINISHED Wed Jun 7 13:34:49 2023 microshift-installer 0.0.0 edge-installer
ID Status Time Blueprint Version Type Size c793c24f-ca2c-4c79-b5b7-ba36f5078e8d FINISHED Wed Jun 7 13:34:49 2023 microshift-installer 0.0.0 edge-installer
Copy to Clipboard Copied!
1.9. ISO のダウンロードおよび使用準備
以下のコマンドを実行して、ID を使用して ISO をダウンロードします。
sudo composer-cli compose image ${BUILDID}
$ sudo composer-cli compose image ${BUILDID}
Copy to Clipboard Copied! 次のコマンドを実行して、ダウンロードしたコンテナーイメージの所有権を現在のユーザーに変更します。
sudo chown $(whoami). ${BUILDID}-installer.iso
$ sudo chown $(whoami). ${BUILDID}-installer.iso
Copy to Clipboard Copied! 次のコマンドを実行して、現在のユーザーの読み取り権限をイメージに追加します。
sudo chmod a+r ${BUILDID}-installer.iso
$ sudo chmod a+r ${BUILDID}-installer.iso
Copy to Clipboard Copied!
1.10. MicroShift 用のマシンのプロビジョニング
RHEL for Edge ドキュメントの手順を使用して、RHEL for Edge イメージでマシンをプロビジョニングします。
MicroShift を使用するには、次の要件を満たすようにシステムをプロビジョニングする必要があります。
- プロビジョニングするマシンは、MicroShift をインストールするためのシステム要件を満たしている必要があります。
- ファイルシステムに、ワークロードの永続ボリューム (PV) に十分な容量を持つ論理ボリュームマネージャー (LVM) ボリュームグループ (VG) がある。
-
Red Hat Hybrid Cloud Console からのプルシークレットが
/etc/crio/openshift-pull-secret
として存在し、root ユーザーのみの読み取り/書き込みパーミッションがある。 - ファイアウォールに必要な設定が行われている。
RHEL for Edge Installer (ISO) イメージなどのキックスタートを使用している場合は、上記の要件を満たすようにキックスタートファイルを更新できます。
前提条件
MicroShift を使用して RHEL for Edge コミットを含む RHEL for Edge インストーラー (ISO) イメージを作成している。
- この要件には、RFE コンテナーイメージの作成、RFE インストーラブループリントの作成、RFE コンテナーの起動、および RFE インストーライメージの作成の手順が含まれます。
キックスタートファイルを作成しているか、既存のファイルを使用している。キックスタートファイルには、以下を含める必要があります。
- ユーザーの作成方法に関する詳細な手順
- RHEL for Edge イメージをフェッチしてデプロイする方法
詳細は、「関連情報」を参照してください。
手順
キックスタートファイルのメインセクションで、システムルートに少なくとも 10GB が指定されている
rhel
という名前の LVM ボリュームグループが含まれるように、ファイルシステムのセットアップを更新します。LVMS CSI ドライバーがワークロードのデータを格納するために使用する空き領域を残します。ファイルシステムを設定するためのキックスタートスニペットの例
Partition disk such that it contains an LVM volume group called `rhel` with a 10GB+ system root but leaving free space for the LVMS CSI driver for storing data. For example, a 20GB disk would be partitioned in the following way: NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 200M 0 part /boot/efi ├─sda1 8:1 0 800M 0 part /boot └─sda2 8:2 0 19G 0 part └─rhel-root 253:0 0 10G 0 lvm /sysroot Uncomment this line to add a SWAP partition of the recommended size To add users, use a line such as the following
# Partition disk such that it contains an LVM volume group called `rhel` with a # 10GB+ system root but leaving free space for the LVMS CSI driver for storing data. # # For example, a 20GB disk would be partitioned in the following way: # # NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT # sda 8:0 0 20G 0 disk # ├─sda1 8:1 0 200M 0 part /boot/efi # ├─sda1 8:1 0 800M 0 part /boot # └─sda2 8:2 0 19G 0 part # └─rhel-root 253:0 0 10G 0 lvm /sysroot # ostreesetup --nogpg --osname=rhel --remote=edge \ --url=file:///run/install/repo/ostree/repo --ref=rhel/<RHEL VERSION NUMBER>/x86_64/edge zerombr clearpart --all --initlabel part /boot/efi --fstype=efi --size=200 part /boot --fstype=xfs --asprimary --size=800 # Uncomment this line to add a SWAP partition of the recommended size #part swap --fstype=swap --recommended part pv.01 --grow volgroup rhel pv.01 logvol / --vgname=rhel --fstype=xfs --size=10000 --name=root # To add users, use a line such as the following user --name=<YOUR_USER_NAME> \ --password=<YOUR_HASHED_PASSWORD> \ --iscrypted --groups=<YOUR_USER_GROUPS>
Copy to Clipboard Copied! キックスタートファイルの
%post
セクションで、プルシークレットと必須のファイアウォールルールを追加します。プルシークレットとファイアウォールルールを追加するためのキックスタートスニペットの例
%post --log=/var/log/anaconda/post-install.log --erroronfail # Add the pull secret to CRI-O and set root user-only read/write permissions cat > /etc/crio/openshift-pull-secret << EOF YOUR_OPENSHIFT_PULL_SECRET_HERE EOF chmod 600 /etc/crio/openshift-pull-secret # Configure the firewall with the mandatory rules for MicroShift firewall-offline-cmd --zone=trusted --add-source=10.42.0.0/16 firewall-offline-cmd --zone=trusted --add-source=169.254.169.1 %end
%post --log=/var/log/anaconda/post-install.log --erroronfail # Add the pull secret to CRI-O and set root user-only read/write permissions cat > /etc/crio/openshift-pull-secret << EOF YOUR_OPENSHIFT_PULL_SECRET_HERE EOF chmod 600 /etc/crio/openshift-pull-secret # Configure the firewall with the mandatory rules for MicroShift firewall-offline-cmd --zone=trusted --add-source=10.42.0.0/16 firewall-offline-cmd --zone=trusted --add-source=169.254.169.1 %end
Copy to Clipboard Copied! 次のコマンドを実行して、
mkksiso
ツールをインストールします。sudo yum install -y lorax
$ sudo yum install -y lorax
Copy to Clipboard Copied! 次のコマンドを実行して、ISO のキックスタートファイルを新しいキックスタートファイルで更新します。
sudo mkksiso <your_kickstart>.ks <your_installer>.iso <updated_installer>.iso
$ sudo mkksiso <your_kickstart>.ks <your_installer>.iso <updated_installer>.iso
Copy to Clipboard Copied!
1.11. MicroShift クラスターへのアクセス方法
このセクションの手順に従って、OpenShift CLI (oc
) を使用して MicroShift クラスターにアクセスします。
- MicroShift サービスを実行している同じマシンからでも、リモートの場所からでも、クラスターにアクセスできます。
- このアクセス権を使用して、ワークロードを監視および管理できます。
-
次の手順を使用する場合は、接続するホスト名または IP アドレスが含まれている
kubeconfig
ファイルを選択し、関連するディレクトリーに配置します。
1.11.1. MicroShift クラスターへのローカルアクセス
以下の手順に従って、kubeconfig
ファイルを使用して MicroShift クラスターをローカルでアクセスします。
前提条件
-
oc
バイナリーがインストールされている。
手順
オプション: Red Hat Enterprise Linux (RHEL) マシンに
~/.kube/
フォルダーがない場合は、次のコマンドを実行してフォルダーを作成します。mkdir -p ~/.kube/
$ mkdir -p ~/.kube/
Copy to Clipboard Copied! 次のコマンドを実行して、生成されたローカルアクセス
kubeconfig
ファイルを~/.kube/
ディレクトリーにコピーします。sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config
$ sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config
Copy to Clipboard Copied! 次のコマンドを実行して、
~/.kube/config
ファイルの権限を更新します。chmod go-r ~/.kube/config
$ chmod go-r ~/.kube/config
Copy to Clipboard Copied!
検証
次のコマンドを入力して、MicroShift が実行されていることを確認します。
oc get all -A
$ oc get all -A
Copy to Clipboard Copied!
1.11.2. MicroShift クラスターへのリモートアクセス用にファイアウォールを開く
リモートユーザーが MicroShift クラスターにアクセスできるように、次の手順を使用してファイアウォールを開きます。この手順は、ワークステーションユーザーがリモートでクラスターにアクセスする前に完了する必要があります。
この手順では、user@microshift
は、MicroShift ホストマシン上のユーザーであり、別のワークステーション上のリモートユーザーがアクセスできるようにそのマシンをセットアップする責任があります。
前提条件
-
oc
バイナリーがインストールされている。 - クラスター管理者の権限がある。
手順
MicroShift ホストの
user@microshift
として、次のコマンドを実行して、Kubernetes API サーバー (6443/tcp
) のファイアウォールポートを開きます。sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp && sudo firewall-cmd --reload
[user@microshift]$ sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp && sudo firewall-cmd --reload
Copy to Clipboard Copied!
検証
user@microshift
として次のコマンドを実行して、MicroShift が入力されていることを確認します。oc get all -A
[user@microshift]$ oc get all -A
Copy to Clipboard Copied!
1.11.3. 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! 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! 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/config
Copy to Clipboard Copied! 注記この手順の
kubeconfig
ファイルを生成するには、リモートアクセス用の kubeconfig ファイルの追加生成 を参照してください。user@workstation
として、次のコマンドを実行して~/.kube/config
ファイルのパーミッションを更新します。chmod go-r ~/.kube/config
$ chmod go-r ~/.kube/config
Copy to Clipboard Copied!
検証
user@workstation
として、次のコマンドを入力して、MicroShift が実行されていることを確認します。oc get all -A
[user@workstation]$ oc get all -A
Copy to Clipboard Copied!
第2章 非接続インストール用のコンテナーイメージのミラーリング
MicroShift を非接続ネットワークにデプロイするときに、カスタムコンテナーレジストリーを使用できます。プライベートレジストリー内のミラーリングされたコンテナーイメージのセットからクラスターをインストールすることで、インターネットに直接接続せずに制限されたネットワークでクラスターを実行できます。
2.1. 既存のレジストリーへのコンテナーイメージのミラーリング
特定のユーザー環境およびワークロード要件では、カスタムのエアギャップコンテナーレジストリー (ミラー) を使用する必要があります。ミラーリングを使用することで、コンテナーイメージと更新をエアギャップ環境に転送し、そこで MicroShift インスタンスにインストールできます。
MicroShift コンテナーのエアギャップミラーレジストリーを作成するには、次の手順を実行する必要があります。
- ミラーリングするコンテナーイメージのリストを取得します。
- ミラーリングの前提条件を設定します。
- インターネットにアクセスできるホスト上のイメージをダウンロードします。
- ダウンロードしたイメージディレクトリーをエアギャップサイトにコピーします。
- エアギャップサイトのミラーレジストリーにイメージをアップロードします。
- ミラーレジストリーを使用するように MicroShift ホストを設定します。
2.2. ミラーレジストリーコンテナーイメージリストの取得
ミラーレジストリーを使用するには、MicroShift の特定バージョンで使用されているコンテナーイメージ参照を把握しておく必要があります。これらの参照は、microshift-release-info
RPM パッケージに含まれる release-<arch>.json
ファイルで提供されます。
切断された環境で Operator Lifecycle Manager (OLM) をミラーリングするには、microshift-olm
RPM に含まれる release-olm-$ARCH.json
で提供される参照を追加し、同じ手順に従います。Operator カタログと Operator をミラーリングするには oc-mirror
を使用します。
前提条件
- jq がインストールされている。
手順
次のいずれかの方法を使用して、コンテナーイメージ参照のリストにアクセスします。
パッケージが MicroShift ホストにインストールされている場合は、次のコマンドを実行してファイルの場所を取得します。
rpm -ql microshift-release-info
$ rpm -ql microshift-release-info
Copy to Clipboard Copied! 出力例
/usr/share/microshift/release/release-x86_64.json
/usr/share/microshift/release/release-x86_64.json
Copy to Clipboard Copied! パッケージが MicroShift ホストにインストールされていない場合は、次のコマンドを実行して、RPM パッケージをインストールせずにダウンロードして展開します。
rpm2cpio microshift-release-info*.noarch.rpm | cpio -idmv
$ rpm2cpio microshift-release-info*.noarch.rpm | cpio -idmv
Copy to Clipboard Copied! 出力例
/usr/share/microshift/release/release-x86_64.json
/usr/share/microshift/release/release-x86_64.json
Copy to Clipboard Copied!
次のコマンドを実行して、コンテナーイメージのリストを
microshift-container-refs.txt
ファイルに展開します。RELEASE_FILE=/usr/share/microshift/release/release-$(uname -m).json
$ RELEASE_FILE=/usr/share/microshift/release/release-$(uname -m).json
Copy to Clipboard Copied! jq -r '.images | .[]' ${RELEASE_FILE} > microshift-container-refs.txt
$ jq -r '.images | .[]' ${RELEASE_FILE} > microshift-container-refs.txt
Copy to Clipboard Copied!
MicroShift コンテナーイメージリストを使用して microshift-container-refs.txt
ファイルを作成すると、ミラーリング手順を実行する前に、そのファイルに他のユーザー固有のイメージ参照を追加できます。
2.3. ミラーリングの前提条件の設定
コンテナーイメージレジストリー認証情報ファイルを作成する必要があります。これにより、インターネットに接続されたミラーホストからエアギャップミラーへのイメージのミラーリングが可能になります。「関連情報」セクションの「イメージのミラーリングを許可する認証情報の設定」に記載された手順を実行します。これは、ミラーにアクセスするためのユーザー認証情報が含まれる ~/.pull-secret-mirror.json
ファイルをミラーレジストリーホスト上に作成するための手順です。
2.3.1. ミラーレジストリーのプルシークレットエントリーの例
たとえば次のセクションは、microshift:microshift
をユーザー名とパスワードとして使用して、microshift_quay:8443
ミラーレジストリーのプルシークレットファイルに追加されます。
プルシークレットファイルのミラーレジストリーセクションの例
"<microshift_quay:8443>": { "auth": "<microshift_auth>", "email": "<microshift_quay@example.com>" },
"<microshift_quay:8443>": {
"auth": "<microshift_auth>",
"email": "<microshift_quay@example.com>"
},
2.4. コンテナーイメージのダウンロード
コンテナーリストを見つけてミラーリングの前提条件を満たしてから、インターネットアクセスのあるホストにコンテナーイメージをダウンロードします。
前提条件
- インターネットにアクセスできるホストにログインしている。
-
.pull-secret-mirror.json
ファイルとmicroshift-containers
ディレクトリーの内容は、ローカルで利用できます。
手順
次のコマンドを実行して、コンテナーイメージのコピーに使用する
skopeo
ツールをインストールします。sudo dnf install -y skopeo
$ sudo dnf install -y skopeo
Copy to Clipboard Copied! プルシークレットファイルを指す環境変数を設定します。
PULL_SECRET_FILE=~/.pull-secret-mirror.json
$ PULL_SECRET_FILE=~/.pull-secret-mirror.json
Copy to Clipboard Copied! コンテナーイメージのリストを指す環境変数を設定します。
IMAGE_LIST_FILE=~/microshift-container-refs.txt
$ IMAGE_LIST_FILE=~/microshift-container-refs.txt
Copy to Clipboard Copied! ダウンロードしたデータを保存する宛先ディレクトリーを指す環境変数を設定します。
IMAGE_LOCAL_DIR=~/microshift-containers
$ IMAGE_LOCAL_DIR=~/microshift-containers
Copy to Clipboard Copied! 次のスクリプトを実行して、コンテナーイメージを
${IMAGE_LOCAL_DIR}
ディレクトリーにダウンロードします。while read -r src_img ; do # Remove the source registry prefix dst_img=$(echo "${src_img}" | cut -d '/' -f 2-) # Run the image download command echo "Downloading '${src_img}' to '${IMAGE_LOCAL_DIR}'" mkdir -p "${IMAGE_LOCAL_DIR}/${dst_img}" skopeo copy --all --quiet \ --preserve-digests \ --authfile "${PULL_SECRET_FILE}" \ docker://"${src_img}" dir://"${IMAGE_LOCAL_DIR}/${dst_img}" done < "${IMAGE_LIST_FILE}"
while read -r src_img ; do # Remove the source registry prefix dst_img=$(echo "${src_img}" | cut -d '/' -f 2-) # Run the image download command echo "Downloading '${src_img}' to '${IMAGE_LOCAL_DIR}'" mkdir -p "${IMAGE_LOCAL_DIR}/${dst_img}" skopeo copy --all --quiet \ --preserve-digests \ --authfile "${PULL_SECRET_FILE}" \ docker://"${src_img}" dir://"${IMAGE_LOCAL_DIR}/${dst_img}" done < "${IMAGE_LIST_FILE}"
Copy to Clipboard Copied!
2.5. ミラーレジストリーへのコンテナーイメージのアップロード
コンテナーイメージをエアギャップサイトで使用するには、次の手順を実行してミラーレジストリーにコンテナーイメージをアップロードします。
前提条件
-
microshift-quay
にアクセスできるホストにログインしている。 -
.pull-secret-mirror.json
ファイルがローカルで使用できる。 -
microshift-containers
ディレクトリーの内容がローカルで使用できる。
手順
次のコマンドを実行して、コンテナーイメージのコピーに使用する
skopeo
ツールをインストールします。sudo dnf install -y skopeo
$ sudo dnf install -y skopeo
Copy to Clipboard Copied! プルシークレットファイルを指す環境変数を設定します。
IMAGE_PULL_FILE=~/.pull-secret-mirror.json
$ IMAGE_PULL_FILE=~/.pull-secret-mirror.json
Copy to Clipboard Copied! ローカルコンテナーイメージディレクトリーを指す環境変数を設定します。
IMAGE_LOCAL_DIR=~/microshift-containers
$ IMAGE_LOCAL_DIR=~/microshift-containers
Copy to Clipboard Copied! コンテナーイメージをアップロードするためのミラーレジストリー URL を指す環境変数を設定します。
TARGET_REGISTRY=<registry_host>:<port>
$ TARGET_REGISTRY=<registry_host>:<port>
1 Copy to Clipboard Copied! - 1
<registry_host>:<port>
は、ミラーレジストリーサーバーのホスト名とポートに置き換えます。
次のスクリプトを実行して、コンテナーイメージを
${TARGET_REGISTRY}
ミラーレジストリーにアップロードします。pushd "${IMAGE_LOCAL_DIR}" >/dev/null while read -r src_manifest ; do local src_img src_img=$(dirname "${src_manifest}") # Add the target registry prefix and remove SHA local -r dst_img="${TARGET_REGISTRY}/${src_img}" local -r dst_img_no_tag="${TARGET_REGISTRY}/${src_img%%[@:]*}" # Run the image upload echo "Uploading '${src_img}' to '${dst_img}'" skopeo copy --all --quiet \ --preserve-digests \ --authfile "${IMAGE_PULL_FILE}" \ dir://"${IMAGE_LOCAL_DIR}/${src_img}" docker://"${dst_img}" done < <(find . -type f -name manifest.json -printf '%P\n') popd >/dev/null
pushd "${IMAGE_LOCAL_DIR}" >/dev/null while read -r src_manifest ; do local src_img src_img=$(dirname "${src_manifest}") # Add the target registry prefix and remove SHA local -r dst_img="${TARGET_REGISTRY}/${src_img}" local -r dst_img_no_tag="${TARGET_REGISTRY}/${src_img%%[@:]*}" # Run the image upload echo "Uploading '${src_img}' to '${dst_img}'" skopeo copy --all --quiet \ --preserve-digests \ --authfile "${IMAGE_PULL_FILE}" \ dir://"${IMAGE_LOCAL_DIR}/${src_img}" docker://"${dst_img}" done < <(find . -type f -name manifest.json -printf '%P\n') popd >/dev/null
Copy to Clipboard Copied!
2.6. ミラーレジストリーアクセス用のホストの設定
ミラーレジストリーを使用するように MicroShift ホストを設定するには、Red Hat レジストリーのホスト名をミラーにマップする設定ファイルを作成して、MicroShift ホストにレジストリーへのアクセスを許可する必要があります。
前提条件
- ミラーホストはインターネットにアクセスできる。
- ミラーホストはミラーレジストリーにアクセスできる。
- 制限されたネットワークで使用するためにミラーレジストリーを設定している。
- プルシークレットをダウンロードし、ミラーリポジトリーへの認証を含めるように変更した。
手順
- MicroShift ホストにログインします。
次の手順を実行して、ミラーレジストリーにアクセスする任意のホストで SSL 証明書の信頼を有効にします。
-
rootCA.pem
ファイルを<registry_path>/quay-rootCA
などのミラーレジストリーから、/etc/pki/ca-trust/source/anchors
ディレクトリーにある MicroShift ホストにコピーします。 次のコマンドを実行して、システム全体のトラストストア設定で証明書を有効にします。
sudo update-ca-trust
$ sudo update-ca-trust
Copy to Clipboard Copied!
-
Red Hat レジストリーのホスト名をミラーレジストリーにマッピングする
/etc/containers/registries.conf.d/999-microshift-mirror.conf
設定ファイルを作成します。ミラー設定ファイルの例
[[registry]] prefix = "" location = "<registry_host>:<port>" mirror-by-digest-only = true insecure = false [[registry]] prefix = "" location = "quay.io" mirror-by-digest-only = true [[registry.mirror]] location = "<registry_host>:<port>" insecure = false [[registry]] prefix = "" location = "registry.redhat.io" mirror-by-digest-only = true [[registry.mirror]] location = "<registry_host>:<port>" insecure = false [[registry]] prefix = "" location = "registry.access.redhat.com" mirror-by-digest-only = true [[registry.mirror]] location = "<registry_host>:<port>" insecure = false
[[registry]] prefix = "" location = "<registry_host>:<port>"
1 mirror-by-digest-only = true insecure = false [[registry]] prefix = "" location = "quay.io" mirror-by-digest-only = true [[registry.mirror]] location = "<registry_host>:<port>" insecure = false [[registry]] prefix = "" location = "registry.redhat.io" mirror-by-digest-only = true [[registry.mirror]] location = "<registry_host>:<port>" insecure = false [[registry]] prefix = "" location = "registry.access.redhat.com" mirror-by-digest-only = true [[registry.mirror]] location = "<registry_host>:<port>" insecure = false
Copy to Clipboard Copied! - 1
<registry_host>:<port>
は、<microshift-quay:8443>
などのミラーレジストリーサーバーのホスト名とポートに置き換えます。
次のコマンドを実行して、MicroShift サービスを有効にします。
sudo systemctl enable microshift
$ sudo systemctl enable microshift
Copy to Clipboard Copied! 次のコマンドを実行してホストを再起動します。
sudo reboot
$ sudo reboot
Copy to Clipboard Copied!
第3章 オフラインで使用するための RHEL for Edge イメージへの埋め込み
rpm-ostree
コミットに MicroShift コンテナーを埋め込むと、エアギャップ環境、非接続環境、またはオフライン環境でクラスターを実行できます。MicroShift コンテナーを Red Hat Enterprise Linux for Edge (RHEL for Edge) イメージに埋め込むことで、コンテナーエンジンがコンテナーレジストリーからネットワーク経由でイメージをプルする必要がなくなります。ネットワーク接続がなくても、ワークロードをすぐに起動できます。
3.1. オフラインデプロイ用の MicroShift コンテナーの埋め込み
Image Builder を使用して、MicroShift コンテナーイメージが埋め込まれた RHEL for Edge イメージを作成できます。コンテナーイメージを埋め込むには、Image Builder ブループリントファイルにイメージ参照を追加する必要があります。
前提条件
- ビルドホストへの root ユーザーアクセス権がある。
- ビルドホストが Image Builder のシステム要件を満たしている。
-
Image Builder と
composer-cli
ツールをインストールしてセットアップしている。 - RHEL for Edge イメージのブループリントを作成した。
- jq がインストールされている。
手順
-
デプロイする MicroShift バージョンで使用されるコンテナーイメージ参照の正確なリストを取得します。手順 2 に従って
microshift-release-info
RPM パッケージをインストールするか、手順 3 に従って RPM をダウンロードして展開します。 microshift-release-info
RPM パッケージをインストールするには、以下を実行します。次のコマンドを実行して、
microshift-release-info
RPM パッケージをインストールします。sudo dnf install -y microshift-release-info-<release_version>
$ sudo dnf install -y microshift-release-info-<release_version>
Copy to Clipboard Copied! <release_version>
は、デプロイするリリースの番号に置き換えます。完全なバージョン番号 (4.17.1
など) を使用してください。次のコマンドを実行して、
/usr/share/microshift/release
ディレクトリーの内容をリスト表示し、リリース情報ファイルの存在を確認します。sudo ls /usr/share/microshift/release
$ sudo ls /usr/share/microshift/release
Copy to Clipboard Copied! 出力例
release-x86_64.json release-aarch64.json
release-x86_64.json release-aarch64.json
Copy to Clipboard Copied! microshift-release-info
RPM をインストールした場合は、ステップ 4 に進みます。
手順 2 を完了していない場合は、
microshift-release-info
RPM をインストールせずにダウンロードして展開します。次のコマンドを実行して、RPM パッケージをダウンロードします。
sudo dnf download microshift-release-info-<release_version>
$ sudo dnf download microshift-release-info-<release_version>
1 Copy to Clipboard Copied! - 1
<release_version>
は、デプロイするリリースの番号に置き換えます。完全なバージョン番号 (4.19.1
など) を使用してください。
RPM の出力例
microshift-release-info-4.17.1.-202511101230.p0.g7dc6a00.assembly.4.17.1.el9.noarch.rpm
microshift-release-info-4.17.1.-202511101230.p0.g7dc6a00.assembly.4.17.1.el9.noarch.rpm
Copy to Clipboard Copied! 次のコマンドを実行して、RPM パッケージをインストールせずに展開します。
rpm2cpio <my_microshift_release_info> | cpio -idmv
$ rpm2cpio <my_microshift_release_info> | cpio -idmv
1 ./usr/share/microshift/release/release-aarch64.json ./usr/share/microshift/release/release-x86_64.json
Copy to Clipboard Copied! - 1
<my_microshift_release_info>
は、前の手順の RPM パッケージの名前に置き換えます。
次のコマンドを実行して、コンテナー参照情報が含まれる JSON ファイルの場所を定義します。
RELEASE_FILE=</path/to/your/release-$(uname -m).json>
$ RELEASE_FILE=</path/to/your/release-$(uname -m).json>
1 Copy to Clipboard Copied! - 1
</path/to/your/release-$(uname -m).json>
は、JSON ファイルへのフルパスに置き換えます。必ずアーキテクチャーに必要なファイルを使用してください。
次のコマンドを実行して、イメージをビルドする手順が含まれる TOML ファイルの場所を定義します。
BLUEPRINT_FILE=</path/to/your/blueprint.toml>
$ BLUEPRINT_FILE=</path/to/your/blueprint.toml>
1 Copy to Clipboard Copied! - 1
</path/to/your/blueprint.toml>
は、TOML ファイルへのフルパスに置き換えます。
次のコマンドを実行して、コンテナーイメージ参照を生成し、ブループリント TOML ファイルに埋め込みます。
jq -r '.images | .[] | ("[[containers]]\nsource = \"" + . + "\"\n")' "${RELEASE_FILE}" >> "${BLUEPRINT_FILE}"
$ jq -r '.images | .[] | ("[[containers]]\nsource = \"" + . + "\"\n")' "${RELEASE_FILE}" >> "${BLUEPRINT_FILE}"
Copy to Clipboard Copied! コンテナー参照を示す生成された TOML フラグメントの例
[[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:82cfef91557f9a70cff5a90accba45841a37524e9b93f98a97b20f6b2b69e5db" [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:82cfef91557f9a70cff5a90accba45841a37524e9b93f98a97b20f6b2b69e5db"
[[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:82cfef91557f9a70cff5a90accba45841a37524e9b93f98a97b20f6b2b69e5db" [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:82cfef91557f9a70cff5a90accba45841a37524e9b93f98a97b20f6b2b69e5db"
Copy to Clipboard Copied! 次の例を使用して、Image Builder のブループリントファイルに追加して、コンテナーイメージを手動で埋め込むことができます。
コンテナーイメージをブループリントに手動で埋め込むセクションの例
[[containers]] source = "<my_image_pullspec_with_tag_or_digest>"
[[containers]] source = "<my_image_pullspec_with_tag_or_digest>"
Copy to Clipboard Copied! <my_image_pullspec_with_tag_or_digest>
は、デプロイする MicroShift バージョンで使用されるコンテナーイメージへの正確な参照に置き換えます。
3.2. イメージ構築の準備としてのレジストリー認証の追加
ブループリントを更新した後、MicroShift コンテナーが埋め込まれたイメージをビルドするには、コンテナーレジストリーの認証を追加する必要があります。これを行うには、Image Builder 設定の一部である systemd サービスファイルの 1 つを更新します。
前提条件
- ビルドホストへの root ユーザーアクセス権がある。
- ビルドホストが Image Builder のシステム要件を満たしている。
-
Image Builder と
composer-cli
ツールをインストールしてセットアップしている。
/etc/osbuild-worker/osbuild-worker.toml
ディレクトリーと設定ファイルが存在しない場合は、作成してください。
手順
/etc/osbuild-worker/osbuild-worker.toml
設定ファイルの[containers]
セクションでauth_file_path
を設定して、レジストリーへの認証用のプルシークレットを追加します。[containers] auth_file_path = "/etc/osbuild-worker/pull-secret.json"
[containers] auth_file_path = "/etc/osbuild-worker/pull-secret.json"
Copy to Clipboard Copied! - 設定の変更を適用するには、ホストを再起動します。
3.3. オフラインデプロイ用の rpm-ostree イメージのビルドと使用
Image Builder を使用して、MicroShift コンテナーイメージが埋め込まれた rpm-ostree
システムイメージを作成できます。コンテナーイメージを埋め込むには、Image Builder ブループリントにイメージ参照を追加する必要があります。必要に応じて、ユースケースに合わせてコミットと ISO を作成できます。
後述する手順の前提条件に加えて、次の前提条件を満たす必要があります。
3.3.1. オフラインデプロイの追加の前提条件
- オフラインで使用するための RHEL for Edge イメージブループリントを作成および更新している。次の手順では、コンテナーイメージを使用して作成したブループリントの例を使用します。「オフラインデプロイ用の MicroShift コンテナーの埋め込み」手順で作成した更新済みのブループリントを使用する必要があります。
-
/etc/osbuild-worker/osbuild-worker.toml
設定ファイルをオフラインで使用するために更新している。
次の手順の minimal-microshift.toml
は、オフラインで使用するために更新した TOML の名前 <my_blueprint_name> に置き換えます。
3.3.2. ブループリントへの MicroShift サービスの追加
MicroShift RPM パッケージを Image Builder ブループリントに追加すると、MicroShift が埋め込まれた RHEL for Edge イメージをビルドできるようになります。
- 手順 1 から開始して独自の最小限のブループリントファイルを作成すると、MicroShift のインストールが高速化されます。
手順 2 から開始して、すべての RPM パッケージとコンテナーイメージを含む、生成されたインストール用のブループリントを使用します。これはインストールプロセスに時間がかかりますが、コンテナー参照がローカルでアクセスされるため、起動は速くなります。
重要-
次の手順の
<microshift_blueprint.toml>
は、使用している TOML ファイルの名前に置き換えます。 -
次の手順の
<microshift_blueprint>
は、ブループリントに使用する名前に置き換えます。
-
次の手順の
手順
次の例を使用して、独自のブループリントファイルを作成します。
カスタム Image Builder ブループリントの例
cat > <microshift_blueprint.toml> <<EOF name = "<microshift_blueprint>" description = "" version = "0.0.1" modules = [] groups = [] [[packages]] name = "microshift" version = "*" [customizations.services] enabled = ["microshift"] EOF
cat > <microshift_blueprint.toml> <<EOF
1 name = "<microshift_blueprint>"
2 description = "" version = "0.0.1" modules = [] groups = [] [[packages]] name = "microshift" version = "*" [customizations.services] enabled = ["microshift"] EOF
Copy to Clipboard Copied! 注記コマンドのワイルドカード
*
は、最新の MicroShift RPM を使用します。特定のバージョンが必要な場合は、ワイルドカードを必要なバージョンに置き換えます。たとえば、MicroShift 4.17.1 RPM をダウンロードするには、4.17.1
を挿入します。オプション:
/usr/share/microshift/blueprint
ディレクトリーにインストールされている、プラットフォームアーキテクチャーに固有のブループリントを使用します。ブループリントセクションの説明は、次のサンプルスニペットを参照してください。生成された Image Builder ブループリントのサンプルスニペット
name = "microshift_blueprint" description = "MicroShift 4.17.1 on x86_64 platform" version = "0.0.1" modules = [] groups = [] [[packages]] name = "microshift" version = "4.17.1" ... ... [customizations.services] enabled = ["microshift"] [customizations.firewall] ports = ["22:tcp", "80:tcp", "443:tcp", "5353:udp", "6443:tcp", "30000-32767:tcp", "30000-32767:udp"] ... ... [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:f41e79c17e8b41f1b0a5a32c3e2dd7cd15b8274554d3f1ba12b2598a347475f4" [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:dbc65f1fba7d92b36cf7514cd130fe83a9bd211005ddb23a8dc479e0eea645fd" ... … EOF
name = "microshift_blueprint" description = "MicroShift 4.17.1 on x86_64 platform" version = "0.0.1" modules = [] groups = [] [[packages]]
1 name = "microshift" version = "4.17.1" ... ... [customizations.services]
2 enabled = ["microshift"] [customizations.firewall] ports = ["22:tcp", "80:tcp", "443:tcp", "5353:udp", "6443:tcp", "30000-32767:tcp", "30000-32767:udp"] ... ... [[containers]]
3 source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:f41e79c17e8b41f1b0a5a32c3e2dd7cd15b8274554d3f1ba12b2598a347475f4" [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:dbc65f1fba7d92b36cf7514cd130fe83a9bd211005ddb23a8dc479e0eea645fd" ... … EOF
Copy to Clipboard Copied! 次のコマンドを実行して、Image Builder にブループリントを追加します。
sudo composer-cli blueprints push <microshift_blueprint.toml>
$ sudo composer-cli blueprints push <microshift_blueprint.toml>
1 Copy to Clipboard Copied! - 1
<microshift_blueprint.toml>
は、TOML ファイルの名前に置き換えます。
検証
次のコマンドを実行して、MicroShift パッケージのみをリストした Image Builder 設定を確認します。
sudo composer-cli blueprints depsolve <microshift_blueprint> | grep microshift
$ sudo composer-cli blueprints depsolve <microshift_blueprint> | grep microshift
1 Copy to Clipboard Copied! - 1
<microshift_blueprint>
は、ブループリントの名前に置き換えます。
出力例
blueprint: microshift_blueprint v0.0.1 microshift-greenboot-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch microshift-networking-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.x86_64 microshift-release-info-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch microshift-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.x86_64 microshift-selinux-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch
blueprint: microshift_blueprint v0.0.1 microshift-greenboot-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch microshift-networking-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.x86_64 microshift-release-info-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch microshift-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.x86_64 microshift-selinux-4.17.1-202305250827.p0.g4105d3b.assembly.4.17.1.el9.noarch
Copy to Clipboard Copied! オプション: 次のコマンドを実行して、インストールするすべてのコンポーネントをリストした Image Builder 設定を確認します。
sudo composer-cli blueprints depsolve <microshift_blueprint>
$ sudo composer-cli blueprints depsolve <microshift_blueprint>
1 Copy to Clipboard Copied! - 1
<microshift_blueprint>
は、ブループリントの名前に置き換えます。
3.3.3. RHEL for Edge イメージの作成
ISO を作成するには、以下の手順を使用します。RHEL for Edge Installer イメージは、実行中のコンテナーからコミットをプルし、埋め込みの rpm-ostree
コミットを使用するように設定されたキックスタートファイルを持つ、インストール可能なブート ISO を作成します。
前提条件
- ビルドホストが Image Builder のシステム要件を満たしている。
-
Image Builder と
composer-cli
ツールをインストールしてセットアップしている。 - ビルドホストへの root ユーザーアクセス権がある。
-
podman
ツールがインストールされている。
手順
次のコマンドを実行して、
ostree
コンテナーイメージビルドを開始します。BUILDID=$(sudo composer-cli compose start-ostree --ref "rhel/{op-system-version-major}/$(uname -m)/edge" <microshift_blueprint> edge-container | awk '/^Compose/ {print $2}')
$ BUILDID=$(sudo composer-cli compose start-ostree --ref "rhel/{op-system-version-major}/$(uname -m)/edge" <microshift_blueprint> edge-container | awk '/^Compose/ {print $2}')
1 Copy to Clipboard Copied! - 1
<microshift_blueprint>
は、ブループリントの名前に置き換えます。
このコマンドは、監視対象のビルドの ID (ID) も返します。
次のコマンドを実行して、ビルドのステータスを定期的に確認できます。
sudo composer-cli compose status
$ sudo composer-cli compose status
Copy to Clipboard Copied! 実行中のビルドの出力例
ID Status Time Blueprint Version Type Size cc3377ec-4643-4483-b0e7-6b0ad0ae6332 RUNNING Wed Jun 7 12:26:23 2023 microshift_blueprint 0.0.1 edge-container
ID Status Time Blueprint Version Type Size cc3377ec-4643-4483-b0e7-6b0ad0ae6332 RUNNING Wed Jun 7 12:26:23 2023 microshift_blueprint 0.0.1 edge-container
Copy to Clipboard Copied! 完了したビルドの出力例
ID Status Time Blueprint Version Type Size cc3377ec-4643-4483-b0e7-6b0ad0ae6332 FINISHED Wed Jun 7 12:32:37 2023 microshift_blueprint 0.0.1 edge-container
ID Status Time Blueprint Version Type Size cc3377ec-4643-4483-b0e7-6b0ad0ae6332 FINISHED Wed Jun 7 12:32:37 2023 microshift_blueprint 0.0.1 edge-container
Copy to Clipboard Copied! 注記起動および停止方法を理解している場合は、
watch
コマンドを使用してビルドを監視できます。ID を使用してコンテナーイメージをダウンロードし、次のコマンドを実行して、使用可能なイメージを取得します。
sudo composer-cli compose image ${BUILDID}
$ sudo composer-cli compose image ${BUILDID}
Copy to Clipboard Copied! 次のコマンドを実行して、ダウンロードしたコンテナーイメージの所有権を現在のユーザーに変更します。
sudo chown $(whoami). ${BUILDID}-container.tar
$ sudo chown $(whoami). ${BUILDID}-container.tar
Copy to Clipboard Copied! 次のコマンドを実行して、現在のユーザーの読み取り権限をイメージに追加します。
sudo chmod a+r ${BUILDID}-container.tar
$ sudo chmod a+r ${BUILDID}-container.tar
Copy to Clipboard Copied! 次の手順を実行して、
ostree
コンテナーイメージが ISO ビルドで使用されるようにポート 8085 でサーバーをブートストラップします。次のコマンドを実行して、
IMAGEID
変数の結果を取得します。IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
$ IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
Copy to Clipboard Copied! IMAGEID
変数の結果をもとに、次のコマンドを実行して podman コマンドを実行します。sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
$ sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
Copy to Clipboard Copied! このコマンドは、監視用に
IMAGEID
変数に保存されているコンテナーの ID も返します。
次のコマンドを実行して、インストーラーブループリントファイルを生成します。
cat > microshift-installer.toml <<EOF name = "microshift-installer" description = "" version = "0.0.0" modules = [] groups = [] packages = [] EOF
cat > microshift-installer.toml <<EOF name = "microshift-installer" description = "" version = "0.0.0" modules = [] groups = [] packages = [] EOF
Copy to Clipboard Copied!