第12章 Agent-based Installer を使用したオンプレミスクラスターのインストール
12.1. Agent-based Installer を使用したインストールの準備 リンクのコピーリンクがクリップボードにコピーされました!
12.1.1. Agent-based Installer について リンクのコピーリンクがクリップボードにコピーされました!
エージェントベースのインストール方法では、選択した任意の方法でオンプレミスサーバーを柔軟に起動できます。Assisted Installation サービスの使いやすさと、エアギャップ環境を含むオフラインでの実行機能を兼ね備えています。エージェントベースのインストールは、OpenShift Container Platform インストーラーのサブコマンドです。OpenShift Container Platform クラスターをデプロイするために必要なすべての情報を含む起動可能な ISO イメージを、利用可能なリリースイメージと共に生成します。
設定は、installer-provisioned infrastructure および user-provisioned infrastructure のインストール方法と同じ形式です。Agent-based Installer は、必要に応じてゼロタッチプロビジョニング (ZTP) カスタムリソースを生成または受け入れることもできます。ZTP を使用すると、ベアメタル機器の宣言型設定で新しいエッジサイトをプロビジョニングできます。
12.1.2. エージェントベースのインストーラーについて リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform ユーザーは、切断された環境で Assisted Installer のホストサービスの利点を活用できます。
エージェントベースのインストールは、Assisted Discovery Agent と Assisted Service を含む起動可能な ISO で構成されます。クラスターのインストールを実行するには両方が必要ですが、後者はいずれかのホストでのみ実行されます。
openshift-install agent create image
サブコマンドは、指定した入力をもとに一時 ISO を生成します。以下のマニフェストで入力を指定できます。
推奨:
-
install-config.yaml
-
agent-config.yaml
または
オプション: ZTP マニフェスト
-
cluster-manifests/cluster-deployment.yaml
-
cluster-manifests/agent-cluster-install.yaml
-
cluster-manifests/pull-secret.yaml
-
cluster-manifests/infraenv.yaml
-
cluster-manifests/cluster-image-set.yaml
-
cluster-manifests/nmstateconfig.yaml
-
mirror/registries.conf
-
mirror/ca-bundle.crt
12.1.2.1. Agent-based Installer のワークフロー リンクのコピーリンクがクリップボードにコピーされました!
コントロールプレーンホストの 1 つは、ブートプロセスの開始時に Assisted Service を実行し、最終的にブートストラップホストになります。このノードを ランデブーホスト (ノード 0) と呼びます。Assisted Service は、すべてのホストが要件を満たしていることを確認し、OpenShift Container Platform クラスターのデプロイをトリガーします。すべてのノードで Red Hat Enterprise Linux CoreOS (RHCOS) イメージがディスクに書き込まれます。ブートストラップ以外のノードは再起動し、クラスターデプロイメントを開始します。ノードが再起動されると、ランデブーホストが再起動し、クラスターに参加します。ブートストラップが完了し、クラスターがデプロイされます。
図12.1 ノードのインストールワークフロー
以下のトポロジーでは、openshift-install agent create image
サブコマンドを使用して、ネットワークに接続されていない OpenShift Container Platform クラスターをインストールできます。
- 単一ノードの OpenShift Container Platform クラスター (SNO): マスターとワーカーの両方であるノード。
- 3 ノードの OpenShift Container Platform クラスター: ワーカーノードでもある 3 つのマスターノードを持つコンパクトなクラスター。
- 高可用性 OpenShift Container Platform クラスター (HA): 任意の数のワーカーノードを持つ 3 つのマスターノード。
12.1.2.2. 各トポロジーに推奨されるリソース リンクのコピーリンクがクリップボードにコピーされました!
以下の各トポロジーに推奨されるクラスターリソースを示します。
トポロジー | マスターノードの数 | ワーカーノードの数 | vCPU | メモリー | ストレージ |
---|---|---|---|---|---|
シングルノードクラスター | 1 | 0 | 仮想 CPU 8 個 | 16GB の RAM | 120GB |
コンパクトなクラスター | 3 | 0 または 1 | 仮想 CPU 8 個 | 16GB の RAM | 120GB |
HA クラスター | 3 | 2 以降 | 仮想 CPU 8 個 | 16GB の RAM | 120GB |
以下のプラットフォームがサポートされます。
-
baremetal
-
vsphere
none
注記none
オプションは、OVNKubernetes
ネットワークタイプを持つ単一ノードの OpenShift クラスターでのみサポートされます。
12.1.3. ネットワーキングについて リンクのコピーリンクがクリップボードにコピーされました!
最初の起動時にすべてのホストが支援サービスにチェックインできるように、ランデブー IP はエージェント ISO の生成時に認識されている必要があります。IP アドレスが動的ホスト設定プロトコル (DHCP) サーバーを使用して割り当てられている場合、rendezvousIP
フィールドは、デプロイメントされたコントロールプレーンの一部になるホストの 1 つの IP アドレスに設定する必要があります。DHCP サーバーがない環境では、IP アドレスを静的に定義できます。
静的 IP アドレスに加えて、NMState 形式の任意のネットワーク設定を適用できます。これには、VLAN と NIC ボンディングが含まれます。
12.1.3.1. DHCP リンクのコピーリンクがクリップボードにコピーされました!
推奨される方法: install-config.yaml
および agent-config.yaml
rendezvousIP
フィールドの値を指定する必要があります。networkConfig
フィールドは空白のままにすることができます。
agent-config.yaml.file のサンプル
apiVersion: v1alpha1 kind: AgentConfig metadata: name: sno-cluster rendezvousIP: 192.168.111.80
apiVersion: v1alpha1
kind: AgentConfig
metadata:
name: sno-cluster
rendezvousIP: 192.168.111.80
- 1
- ランデブーホストの IP アドレス。
12.1.3.2. 静的ネットワーキング リンクのコピーリンクがクリップボードにコピーされました!
推奨される方法:
install-config.yaml
およびagent-config.yaml
agent-config.yaml.file のサンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
rendezvousIP
フィールドに値が指定されていない場合、networkConfig
フィールドで指定された静的 IP アドレスから 1 つのアドレスが選択されます。- 2
- 設定を適用するホストを決定するために使用される、ホスト上のインターフェイスの MAC アドレス。
- 3
- ターゲットのベアメタルホストの静的 IP アドレス。
- 4
- ターゲットのベアメタルホストの静的 IP アドレスのサブネット接頭辞。
- 5
- ターゲットのベアメタルホストの DNS サーバー。
- 6
- ノードトラフィックのネクストホップアドレス。これは、指定されたインターフェイスに設定される IP アドレスと同じサブネットにある必要があります。
オプションの方法: GitOps ZTP マニフェスト
GitOps ZTP カスタムリソースのオプションの方法は、6 つのカスタムリソースで構成されます。静的 IP は
nmstateconfig.yaml
で設定できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ランデブー IP は、config
フィールドで指定された静的 IP アドレスから選択されます。
12.1.4. 例: ボンディングと VLAN インターフェイスノードのネットワーク設定 リンクのコピーリンクがクリップボードにコピーされました!
次の agent-config.yaml
ファイルは、ボンディングおよび VLAN インターフェイスのマニフェストの例です。
- 1 3
- インターフェイスの名前。
- 2
- インターフェイスのタイプ。以下の例では VLAN を作成します。
- 4
- インターフェイスのタイプ。この例では、ボンドを作成します。
- 5
- インターフェイスの MAC アドレス。
- 6
mode
属性は、ボンドモードを指定します。- 7
- MII リンクの監視頻度をミリ秒単位で指定します。この例では、ボンディングリンクを 150 ミリ秒ごとに検査します。
- 8
- オプション:DNS サーバーの検索およびサーバー設定を指定します。
- 9
- ノードトラフィックのネクストホップアドレス。これは、指定されたインターフェイスに設定される IP アドレスと同じサブネットにある必要があります。
- 10
- ノードトラフィックのネクストホップインターフェイス。
12.1.5. 例: ボンディングと SR-IOV デュアル NIC ノードのネットワーク設定 リンクのコピーリンクがクリップボードにコピーされました!
SR-IOV デバイスの NIC パーティショニングの有効化に関連する Day 1 操作のサポートは、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
次の agent-config.yaml
ファイルは、ボンドと SR-IOV インターフェイスを備えたデュアルポート NIC のマニフェストの例です。
- 1
networkConfig
フィールドには、ホストのネットワーク設定に関する情報が含まれ、サブフィールドには、interfaces
、dns-resolver
、およびroutes
が含まれます。- 2
interfaces
フィールドは、ホスト用に定義されたネットワークインターフェイスの配列です。- 3
- インターフェイスの名前。
- 4
- インターフェイスのタイプ。この例では、イーサネットインターフェイスを作成します。
- 5
- 厳密に必要ではない場合、物理機能 (PF) の DHCP を無効にするには、これを
false
に設定します。 - 6
- これを、インスタンス化する SR-IOV 仮想機能 (VF) の数に設定します。
- 7
- これを
up
に設定します。 - 8
- ボンドに接続された VF の IPv4 アドレス指定を無効にするには、これを
false
に設定します。 - 9
- VF の最小伝送速度 (Mbps) を設定します。このサンプル値は、100 Mbps のレートを設定します。
- この値は、最大伝送レート以下である必要があります。
-
Intel NIC は
min-tx-rate
パラメーターをサポートしていません。詳細は、BZ#1772847 を参照してください。
- 10
- VF の最大伝送速度 (Mbps) を設定します。このサンプル値は、200 Mbps のレートを設定します。
- 11
- 目的のボンディングモードを設定します。
- 12
- ボンディングインターフェイスの優先ポートを設定します。プライマリーデバイスは、最初に使用されるボンディングインターフェイスであり、障害が発生しないかぎり、破棄されません。この設定が特に役立つのは、ボンディングインターフェイスの NIC の 1 つが高速なため、大規模な負荷に対応できる場合です。この設定は、ボンディングインターフェイスが
active-backup
モード (モード 1) およびbalance-tlb
(モード 5) の場合のみに有効です。 - 13
- ボンドインターフェイスの静的 IP アドレスを設定します。これはノードの IP アドレスです。
- 14
- デフォルトルートのゲートウェイとして
bond0
を設定します。
12.1.6. ベアメタルのサンプル install-config.yaml ファイル リンクのコピーリンクがクリップボードにコピーされました!
install-config.yaml
ファイルをカスタマイズして、OpenShift Container Platform クラスターのプラットフォームに関する詳細を指定するか、必要なパラメーターの値を変更することができます。
- 1
- クラスターのベースドメイン。すべての DNS レコードはこのベースのサブドメインである必要があり、クラスター名が含まれる必要があります。
- 2 4
controlPlane
セクションは単一マッピングですが、compute
セクションはマッピングのシーケンスになります。複数の異なるデータ構造の要件を満たすには、compute
セクションの最初の行はハイフン-
で始め、controlPlane
セクションの最初の行はハイフンで始めることができません。1 つのコントロールプレーンプールのみが使用されます。- 3
- このパラメーターは、インストールプロセスをトリガーする前に、エージェントベースのインストールが検出を待機するコンピュートマシンの数を制御します。これは、生成された ISO で起動する必要があるコンピューティングマシンの数です。注記
3 ノードクラスターをインストールする場合は、Red Hat Enterprise Linux CoreOS (RHCOS) マシンをインストールする際にコンピュートマシンをデプロイしないでください。
- 5
- クラスターに追加するコントロールプレーンマシンの数。クラスターをこれらの値をクラスターの etcd エンドポイント数として使用するため、値はデプロイするコントロールプレーンマシンの数に一致する必要があります。
- 6
- DNS レコードに指定したクラスター名。
- 7
- Pod IP アドレスの割り当てに使用する IP アドレスのブロック。このブロックは既存の物理ネットワークと重複できません。これらの IP アドレスは Pod ネットワークに使用されます。外部ネットワークから Pod にアクセスする必要がある場合、ロードバランサーおよびルーターを、トラフィックを管理するように設定する必要があります。注記
クラス E の CIDR 範囲は、将来の使用のために予約されています。クラス E CIDR 範囲を使用するには、ネットワーク環境がクラス E CIDR 範囲内の IP アドレスを受け入れるようにする必要があります。
- 8
- それぞれの個別ノードに割り当てるサブネット接頭辞長。たとえば、
hostPrefix
が23
に設定されている場合、各ノードに指定のcidr
から/23
サブネットが割り当てられます。これにより、510 (2^(32 - 23) - 2) Pod IP アドレスが許可されます。外部ネットワークからのノードへのアクセスを提供する必要がある場合には、ロードバランサーおよびルーターを、トラフィックを管理するように設定します。 - 9
- インストールするクラスターネットワークプラグイン。サポートされている値は
OVNKubernetes
(デフォルト値) とOpenShiftSDN
です。 - 10
- サービス IP アドレスに使用する IP アドレスプール。1 つの IP アドレスプールのみを入力できます。このブロックは既存の物理ネットワークと重複できません。外部ネットワークからサービスにアクセスする必要がある場合、ロードバランサーおよびルーターを、トラフィックを管理するように設定します。
- 11
- 単一ノードクラスターの場合は、プラットフォームを
none
に設定しなくてはなりません。プラットフォームvsphere
とbaremetal
は、マルチノードクラスターの場合に設定可能です。注記プラットフォームを
vsphere
またはbaremetal
に設定すると、次の 3 つの方法でクラスターノードの IP アドレスエンドポイントを設定できます。- IPv4
- IPv6
- IPv4 と IPv6 の並列 (デュアルスタック)
デュアルスタックネットワーキングの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 12
- FIPS モードを有効または無効にするかどうか。デフォルトでは、FIPS モードは有効にされません。重要
OpenShift Container Platform 4.13 は Red Hat Enterprise Linux (RHEL) 9.2 をベースにしています。FIPS 検証用に RHEL 9.2 暗号化モジュールがまだ送信されていません。詳細は、4.13 OpenShift Container Platform リリースノート の "About this release" を参照してください。
- 13
- このプルシークレットを使用し、OpenShift Container Platform コンポーネントのコンテナーイメージを提供する Quay.io など、組み込まれた各種の認証局によって提供されるサービスで認証できます。
- 14
- Red Hat Enterprise Linux CoreOS (RHCOS) の
core
ユーザーの SSH 公開鍵。注記インストールのデバッグまたは障害復旧を実行する必要のある実稼働用の OpenShift Container Platform クラスターでは、
ssh-agent
プロセスが使用する SSH キーを指定します。
12.1.7. agent.ISO の作成前の検証チェック リンクのコピーリンクがクリップボードにコピーされました!
Agent-based Installer は、ISO が作成される前に、ユーザー定義の YAML ファイルに対して検証チェックを実行します。検証に成功すると、agent.ISO が作成されます。
install-config.yaml
-
baremetal
、vsphere
、およびnone
プラットフォームがサポートされています。 -
プラットフォームに
none
が使用されている場合には、コントロールプレーンレプリカの数は1
で、ワーカーレプリカの合計数は0
である必要があります。 -
none
プラットフォームの場合、networkType
パラメーターはOVNKubernetes
である必要があります。 -
apiVIPs
およびingressVIPs
パラメーターは、ベアメタルおよび vSphere プラットフォームに設定する必要があります。 -
agent-config.yaml
ファイルに相当するベアメタルプラットフォーム設定の一部のホスト固有フィールドは無視されます。これらのフィールドが設定されている場合、警告メッセージがログに記録されます。
agent-config.yaml
- 各インターフェイスには、定義された MAC アドレスが必要です。また、すべてのインターフェイスに異なる MAC アドレスが必要です。
- ホストごとに少なくとも 1 つのインターフェイスを定義する必要があります。
- World Wide Name (WWN) ベンダーエクステンションは、ルートデバイスのヒントではサポートされません。
-
host
オブジェクトのrole
パラメーターの値はmaster
またはworker
のいずれかである必要があります。
12.1.7.1. ZTP マニフェスト リンクのコピーリンクがクリップボードにコピーされました!
agent-cluster-install.yaml
-
IPv6 の場合、
networkType
パラメーターでサポートされる唯一の値はOVNKubernetes
です。OpenShiftSDN
値は、IPv4 にのみ使用できます。
cluster-image-set.yaml
-
ReleaseImage
パラメーターは、インストーラーで定義されるリリースと一致する必要があります。
12.1.8. ルートデバイスヒントについて リンクのコピーリンクがクリップボードにコピーされました!
rootDeviceHints
パラメーターは、インストーラーが Red Hat Enterprise Linux CoreOS (RHCOS) イメージを特定のデバイスにプロビジョニングできるようにします。インストーラーは、検出順にデバイスを検査し、検出された値をヒントの値と比較します。インストーラーは、ヒント値に一致する最初に検出されたデバイスを使用します。この設定は複数のヒントを組み合わせることができますが、デバイスは、インストーラーがこれを選択できるようにすべてのヒントに一致する必要があります。
サブフィールド | 説明 |
---|---|
|
|
|
|
| ベンダー固有のデバイス識別子を含む文字列。ヒントは、実際の値のサブ文字列になります。 |
| デバイスのベンダーまたは製造元の名前が含まれる文字列。ヒントは、実際の値のサブ文字列になります。 |
| デバイスのシリアル番号を含む文字列。ヒントは、実際の値と完全に一致する必要があります。 |
| デバイスの最小サイズ (ギガバイト単位) を表す整数。 |
| 一意のストレージ ID を含む文字列。ヒントは、実際の値と完全に一致する必要があります。 |
| デバイスがローテーションするディスクである (true) か、そうでないか (false) を示すブール値。 |
使用例
- name: master-0 role: master rootDeviceHints: deviceName: "/dev/sda"
- name: master-0
role: master
rootDeviceHints:
deviceName: "/dev/sda"