4.12. RHCOS のインストールおよび OpenShift Container Platform ブートストラッププロセスの開始
OpenShift Container Platform をプロビジョニングする IBM Z® インフラストラクチャーにインストールするには、Red Hat Enterprise Linux CoreOS (RHCOS) を Red Hat Enterprise Linux (RHEL) ゲスト仮想マシンとしてインストールする必要があります。RHCOS のインストール時に、インストールするマシンのタイプに、OpenShift Container Platform インストールプログラムによって生成された Ignition 設定ファイルを指定する必要があります。適切なネットワーク、DNS、および負荷分散インフラストラクチャーが設定されている場合、OpenShift Container Platform ブートストラッププロセスは RHCOS マシンの再起動後に自動的に開始されます。
事前にパッケージ化された QEMU コピーオンライト (QCOW2) ディスクイメージを使用する RHCOS の高速インストールを実行できます。または、新規の QCOW2 ディスクイメージでフルインストールを実行できます。
システムのセキュリティーをさらに強化するために、ファストトラックインストールに進む前に、オプションで IBM® Secure Execution を使用して RHCOS をインストールできます。
4.12.1. IBM Secure Execution を使用した RHCOS のインストール リンクのコピーリンクがクリップボードにコピーされました!
IBM® Secure Execution を使用して RHCOS をインストールする前に、基礎となるインフラストラクチャーを準備する必要があります。
前提条件
- IBM® z15 以降、または IBM® LinuxONE III 以降。
- Red Hat Enterprise Linux (RHEL) 8 以降
- ブートストラップ Ignition ファイルがあります。ファイルは保護されていないため、他のユーザーが表示および編集できます。
- インストール後にブートイメージが変更されていないことを確認しました。
- すべてのノードを IBM® Secure Execution ゲストとして実行する必要があります。
手順
RHEL KVM ホストを準備して、IBM® Secure Execution をサポートします。
デフォルトでは、KVM ホストは IBM® Secure Execution モードのゲストをサポートしません。ゲストを IBM® Secure Execution モードでサポートするには、KVM ホストを LPAR モードで起動し、カーネルパラメーターを
prot_virt=1に指定する必要があります。RHEL 8 でprot_virt=1を有効にするには、次の手順に従います。-
/boot/loader/entries/に移動して、ブートローダー設定ファイル*.confを変更します。 -
カーネルコマンドラインパラメーター
prot_virt=1を追加します。 ziplコマンドを実行し、システムを再起動します。IBM® Secure Execution for Linux のサポートを使用して正常に始動する KVM ホストは、次のカーネルメッセージを発行します。
prot_virt: Reserving <amount>MB as ultravisor base storage.
prot_virt: Reserving <amount>MB as ultravisor base storage.Copy to Clipboard Copied! Toggle word wrap Toggle overflow KVM ホストが IBM® Secure Execution をサポートするようになったことを確認するには、次のコマンドを実行します。
cat /sys/firmware/uv/prot_virt_host
# cat /sys/firmware/uv/prot_virt_hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
1
1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 環境がセキュアホストの環境と一致していると検出された Linux インスタンスの場合、この属性の値は 1 です。他のインスタンスの場合、値は 0 です。
-
Ignition を介して KVM ゲストにホストキーを追加します。
最初の起動時に、RHCOS はホストキーを探して、それを使用して自身を再暗号化します。RHCOS は、
/etc/se-hostkeysディレクトリーでibm-z-hostkey-で始まるファイルを検索します。クラスターが実行されている各マシンのすべてのホストキーは、管理者がディレクトリーにロードする必要があります。最初の起動後、他のマシンで VM を実行することはできません。注記安全なシステムで Ignition ファイルを準備する必要があります。例えば、別の IBM® Secure Execution ゲストです。
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ノードを複数の IBM Z® マシンで実行できるようにする場合は、必要な数のホストキーを追加できます。
Base64 でエンコードされた文字列を生成するには、次のコマンドを実行します。
base64 <your-hostkey>.crt
base64 <your-hostkey>.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow IBM® Secure Execution を実行していないゲストと比較すると、イグニションフェーズの前にイメージ全体がランダムに生成された LUKS パスフレーズで暗号化されるため、マシンの最初のブートに時間がかかります。
Ignition 保護の追加
Ignition 設定ファイルに保存されているシークレットが読み取られたり変更されたりしないようにするには、Ignition 設定ファイルを暗号化する必要があります。
注記必要なセキュリティーを実現するために、IBM® Secure Execution の実行時は、Ignition ロギングとローカルログインがデフォルトで無効になります。
次のコマンドを実行して、
secex-qemu.qcow2イメージの公開 GPG キーを取得し、そのキーを使用して Ignition 設定を暗号化します。gpg --recipient-file /path/to/ignition.gpg.pub --yes --output /path/to/config.ign.gpg --verbose --armor --encrypt /path/to/config.ign
gpg --recipient-file /path/to/ignition.gpg.pub --yes --output /path/to/config.ign.gpg --verbose --armor --encrypt /path/to/config.ignCopy to Clipboard Copied! Toggle word wrap Toggle overflow
RHCOS の高速インストールに従って、IBM® Secure Execution QCOW イメージを使用してノードをインストールします。
注記仮想マシンを起動する前に、
serial=ignitionをserial=ignition_cryptedに置き換え、launchSecurityパラメーターを追加します。
検証
RHCOS の高速インストールが完了し、最初の起動時に Ignition が実行したら、復号化が成功したか確認します。
復号化が成功すると、次の例のような出力が予想されます。
出力例
[ 2.801433] systemd[1]: Starting coreos-ignition-setup-user.service - CoreOS Ignition User Config Setup... [ 2.803959] coreos-secex-ignition-decrypt[731]: gpg: key <key_name>: public key "Secure Execution (secex) 38.20230323.dev.0" imported [ 2.808874] coreos-secex-ignition-decrypt[740]: gpg: encrypted with rsa4096 key, ID <key_name>, created <yyyy-mm-dd> [ OK ] Finished coreos-secex-igni…S Secex Ignition Config Decryptor.
[ 2.801433] systemd[1]: Starting coreos-ignition-setup-user.service - CoreOS Ignition User Config Setup... [ 2.803959] coreos-secex-ignition-decrypt[731]: gpg: key <key_name>: public key "Secure Execution (secex) 38.20230323.dev.0" imported [ 2.808874] coreos-secex-ignition-decrypt[740]: gpg: encrypted with rsa4096 key, ID <key_name>, created <yyyy-mm-dd> [ OK ] Finished coreos-secex-igni…S Secex Ignition Config Decryptor.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 復号化に失敗した場合は、次の例のような出力が予想されます。
出力例
Starting coreos-ignition-s…reOS Ignition User Config Setup... [ 2.863675] coreos-secex-ignition-decrypt[729]: gpg: key <key_name>: public key "Secure Execution (secex) 38.20230323.dev.0" imported [ 2.869178] coreos-secex-ignition-decrypt[738]: gpg: encrypted with RSA key, ID <key_name> [ 2.870347] coreos-secex-ignition-decrypt[738]: gpg: public key decryption failed: No secret key [ 2.870371] coreos-secex-ignition-decrypt[738]: gpg: decryption failed: No secret key
Starting coreos-ignition-s…reOS Ignition User Config Setup... [ 2.863675] coreos-secex-ignition-decrypt[729]: gpg: key <key_name>: public key "Secure Execution (secex) 38.20230323.dev.0" imported [ 2.869178] coreos-secex-ignition-decrypt[738]: gpg: encrypted with RSA key, ID <key_name> [ 2.870347] coreos-secex-ignition-decrypt[738]: gpg: public key decryption failed: No secret key [ 2.870371] coreos-secex-ignition-decrypt[738]: gpg: decryption failed: No secret keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12.2. IBM Z または IBM& LinuxONE 環境での静的 IP を使用した NBDE の設定 リンクのコピーリンクがクリップボードにコピーされました!
IBM Z® または IBM® LinuxONE 環境で NBDE ディスク暗号化を有効にするには、追加の手順が必要です。このセクションで詳しく説明します。
前提条件
- 外部 Tang サーバーをセットアップした。手順については、Network-Bound Disk Encryption (NBDE) を参照してください。
-
butaneユーティリティーをインストールした。 - Butane でマシン設定を作成する手順を確認した。
手順
コントロールプレーンとコンピュートノードの Butane 設定ファイルを作成します。
次のコントロールプレーンノードの Butane 設定の例では、ディスク暗号化用に
master-storage.buという名前のファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、マシンを起動するためのカスタマイズされた initramfs ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記最初のブートの前に、クラスター内の各ノードの initramfs をカスタマイズし、PXE カーネルパラメーターを追加する必要があります。
-
ignition.platform.id=metalおよびignition.firstbootを含むパラメーターファイルを作成します。
4.12.3. 事前にパッケージ化された QCOW2 ディスクイメージを使用した高速インストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux CoreOS (RHCOS) の高速インストールでマシンを作成するには、事前にパッケージ化された Red Hat Enterprise Linux CoreOS (RHCOS )QEMU コピーオンライト (QCOW2) ディスクイメージをインポートします。
前提条件
- この手順では RHEL KVM ホストと呼ばれる、KVM を使用する RHEL 8.6 以降で実行されている少なくとも 1 つの LPAR。
- KVM/QEMU ハイパーバイザーが RHEL KVM ホストにインストーされている
- ノードのホスト名および逆引き参照を実行できるドメインネームサーバー (DNS)。
- IP アドレスを提供する DHCP サーバー。
手順
Red Hat カスタマーポータルの 製品のダウンロード ページまたは RHCOS イメージミラー ページから RHEL QEMU コピーオンライト (QCOW2) ディスクイメージファイルを取得します。
重要RHCOS イメージは OpenShift Container Platform の各リリースごとに変更されない可能性があります。インストールする OpenShift Container Platform バージョンと等しいか、それ以下のバージョンの内で最も新しいバージョンのイメージをダウンロードする必要があります。この手順で説明されている適切な RHCOS QCOW2 イメージのみを使用します。
QCOW2 ディスクイメージおよび Ignition ファイルを RHEL KVM ホストの共通ディレクトリーにダウンロードします。
例:
/var/lib/libvirt/images注記Ignition ファイルは OpenShift Container Platform インストーラーによって生成されます。
各 KVM ゲストノードの QCOW2 ディスクイメージバッキングファイルで、新しいディスクイメージを作成します。
qemu-img create -f qcow2 -F qcow2 -b /var/lib/libvirt/images/{source_rhcos_qemu} /var/lib/libvirt/images/{vmname}.qcow2 {size}$ qemu-img create -f qcow2 -F qcow2 -b /var/lib/libvirt/images/{source_rhcos_qemu} /var/lib/libvirt/images/{vmname}.qcow2 {size}Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ignition ファイルと新規ディスクイメージを使用して、新規 KVM ゲストノードを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12.4. 新規 QCOW2 ディスクイメージへのフルインストール リンクのコピーリンクがクリップボードにコピーされました!
新規 QEMU copy-on-write (QCOW2) ディスクイメージのフルインストールでマシンを作成するには、以下の手順を実施します。
前提条件
- この手順では RHEL KVM ホストと呼ばれる、KVM を使用する RHEL 8.6 以降で実行されている少なくとも 1 つの LPAR。
- KVM/QEMU ハイパーバイザーが RHEL KVM ホストにインストーされている
- ノードのホスト名および逆引き参照を実行できるドメインネームサーバー (DNS)。
- HTTP または HTTPS サーバーが設定されている。
手順
Red Hat カスタマーポータルの 製品のダウンロード ページ、または RHCOS イメージミラー ページから RHEL カーネル、initramfs、および rootfs ファイルを取得します。
重要RHCOS イメージは OpenShift Container Platform の各リリースごとに変更されない可能性があります。インストールする OpenShift Container Platform バージョンと等しいか、それ以下のバージョンの内で最も新しいバージョンのイメージをダウンロードする必要があります。この手順で説明されている適切な RHCOS QCOW2 イメージのみを使用します。
ファイル名には、OpenShift Container Platform のバージョン番号が含まれます。以下の例のようになります。
-
kernel:
rhcos-<version>-live-kernel-<architecture> -
initramfs:
rhcos-<version>-live-initramfs.<architecture>.img -
rootfs:
rhcos-<version>-live-rootfs.<architecture>.img
-
kernel:
virt-installを起動する前に、ダウンロードした RHEL ライブカーネル、initramfs、および rootfs、および Ignition ファイルを HTTP または HTTPS サーバーに移動します。注記Ignition ファイルは OpenShift Container Platform インストーラーによって生成されます。
RHEL カーネル、initramfs、および Ignition ファイル、新規ディスクイメージ、および調整された parm 引数を使用して、新規 KVM ゲストノードを作成します。
-
--locationには、HTTP サーバーまたは HTTPS サーバーのカーネル/initrd の場所を指定します。 -
coreos.inst.ignition_url=の場合、マシンロールの Ignition ファイルを指定します。bootstrap.ign、master.ign、またはworker.ignを使用します。HTTP プロトコルおよび HTTPS プロトコルのみがサポートされます。 coreos.live.rootfs_url=の場合、起動しているカーネルおよび initramfs の一致する rootfs アーティファクトを指定します。HTTP プロトコルおよび HTTPS プロトコルのみがサポートされます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
4.12.5. 詳細の RHCOS インストールリファレンス リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Red Hat Enterprise Linux CoreOS (RHCOS) の手動インストールプロセスを変更できるようにするネットワーク設定および他の高度なオプションを説明します。以下の表では、RHCOS ライブインストーラーおよび coreos-installer コマンドで使用できるカーネル引数およびコマンドラインのオプションを説明します。
4.12.5.1. ISO インストールのネットワークオプション リンクのコピーリンクがクリップボードにコピーされました!
ISO イメージから RHCOS をインストールする場合、そのイメージを起動してノードのネットワークを設定する際に手動でカーネル引数を追加できます。ネットワークの引数が指定されていない場合、RHCOS が Ignition 設定ファイルを取得するためにネットワークが必要であることを検知する際に、DHCP が initramfs でアクティベートされます。
ネットワーク引数を手動で追加する場合は、rd.neednet=1 カーネル引数を追加して、ネットワークを initramfs で有効にする必要があります。
以下の表は、ISO インストール用に RHCOS ノードでネットワークおよびボンディングを設定する例を示しています。この例では、ip= および nameserver= カーネル引数の使用方法を説明します。
カーネル引数 ( ip= and nameserver=) を追加するときは、順序付けが重要です。
ネットワークオプションは、システムの起動時に dracut ツールに渡されます。dracut でサポートされるネットワークオプションの詳細は、man ページの dracut.cmdline を参照してください。
次の例は、ISO インストールのネットワークオプションです。
4.12.5.1.1. DHCP または静的 IP アドレスの設定 リンクのコピーリンクがクリップボードにコピーされました!
IP アドレスを設定するには、DHCP (ip=dhcp) を使用するか、個別の静的 IP アドレス (ip=<host_ip>) を設定します。静的 IP を設定する場合、各ノードで DNS サーバー IP アドレス (nameserver=<dns_ip>) を特定する必要があります。次の例では、以下を設定します。
-
ノードの IP アドレス:
10.10.10.2 -
ゲートウェイアドレス:
10.10.10.254 -
ネットワーク:
255.255.255.0 -
ホスト名:
core0.example.com -
DNS サーバーアドレス:
4.4.4.41 -
auto-configuration の値を
noneに設定します。IP ネットワークが静的に設定されている場合には、自動設定は必要ありません。
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none nameserver=4.4.4.41
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none
nameserver=4.4.4.41
DHCP を使用して RHCOS マシンの IP アドレスを設定する場合、マシンは DHCP を介して DNS サーバー情報も取得します。DHCP ベースのデプロイメントの場合、DHCP サーバー設定を使用して RHCOS ノードが使用する DNS サーバーアドレスを定義できます。
4.12.5.1.2. 静的ホスト名を使用しない IP アドレスの設定 リンクのコピーリンクがクリップボードにコピーされました!
静的ホスト名を割り当てずに IP アドレスを設定できます。静的ホスト名がユーザーによって設定されていない場合は、逆引き DNS ルックアップによって取得され、自動的に設定されます。静的ホスト名なしで IP アドレスを設定するには、次の例を参照してください。
-
ノードの IP アドレス:
10.10.10.2 -
ゲートウェイアドレス:
10.10.10.254 -
ネットワーク:
255.255.255.0 -
DNS サーバーアドレス:
4.4.4.41 -
auto-configuration の値を
noneに設定します。IP ネットワークが静的に設定されている場合には、自動設定は必要ありません。
ip=10.10.10.2::10.10.10.254:255.255.255.0::enp1s0:none nameserver=4.4.4.41
ip=10.10.10.2::10.10.10.254:255.255.255.0::enp1s0:none
nameserver=4.4.4.41
4.12.5.1.3. 複数のネットワークインターフェイスの指定 リンクのコピーリンクがクリップボードにコピーされました!
複数の ip= エントリーを設定することで、複数のネットワークインターフェイスを指定できます。
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none ip=10.10.10.3::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none
ip=10.10.10.3::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
4.12.5.1.4. デフォルトゲートウェイとルートの設定 リンクのコピーリンクがクリップボードにコピーされました!
オプション: rd.route= value を設定して、追加のネットワークへのルートを設定できます。
1 つまたは複数のネットワークを設定する場合、1 つのデフォルトゲートウェイが必要です。追加のネットワークゲートウェイがプライマリーネットワークゲートウェイと異なる場合、デフォルトゲートウェイはプライマリーネットワークゲートウェイである必要があります。
次のコマンドを実行して、デフォルトゲートウェイを設定します。
ip=::10.10.10.254::::
ip=::10.10.10.254::::Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、追加ネットワークのルートを設定します。
rd.route=20.20.20.0/24:20.20.20.254:enp2s0
rd.route=20.20.20.0/24:20.20.20.254:enp2s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12.5.1.5. 単一インターフェイスでの DHCP の無効化 リンクのコピーリンクがクリップボードにコピーされました!
2 つ以上のネットワークインターフェイスがあり、1 つのインターフェイスのみが使用される場合などに、1 つのインターフェイスで DHCP を無効にします。この例では、enp1s0 インターフェイスには静的ネットワーク設定があり、使用されていない enp2s0 では DHCP が無効になっています。
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none ip=::::core0.example.com:enp2s0:none
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none
ip=::::core0.example.com:enp2s0:none
4.12.5.1.6. DHCP と静的 IP 設定の組み合わせ リンクのコピーリンクがクリップボードにコピーされました!
以下のように、複数のネットワークインターフェイスを持つシステムで、DHCP および静的 IP 設定を組み合わせることができます。
ip=enp1s0:dhcp ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
ip=enp1s0:dhcp
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
4.12.5.1.7. 個々のインターフェイスでの VLAN の設定 リンクのコピーリンクがクリップボードにコピーされました!
オプション: vlan= パラメーターを使用して、個別のインターフェイスに VLAN を設定できます。
ネットワークインターフェイスで VLAN を設定し、静的 IP アドレスを使用するには、次のコマンドを実行します。
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0.100:none vlan=enp2s0.100:enp2s0
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0.100:none vlan=enp2s0.100:enp2s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワークインターフェイスで VLAN を設定し、DHCP を使用するには、次のコマンドを実行します。
ip=enp2s0.100:dhcp vlan=enp2s0.100:enp2s0
ip=enp2s0.100:dhcp vlan=enp2s0.100:enp2s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12.5.1.8. 複数の DNS サーバーの指定 リンクのコピーリンクがクリップボードにコピーされました!
以下のように、各サーバーに nameserver= エントリーを追加して、複数の DNS サーバーを指定できます。
nameserver=1.1.1.1 nameserver=8.8.8.8
nameserver=1.1.1.1
nameserver=8.8.8.8