4.2. ベアメタルへの Hosted Control Plane のデプロイ
クラスターを管理クラスターとして機能するように設定することで、Hosted Control Plane をデプロイできます。管理クラスターは、コントロールプレーンがホストされる OpenShift Container Platform クラスターです。場合によっては、管理クラスターは ホスティング クラスターとも呼ばれます。
管理クラスターは、マネージド クラスターとは異なります。マネージドクラスターは、ハブクラスターが管理するクラスターです。
Hosted Control Plane 機能はデフォルトで有効になっています。
multicluster engine Operator は、マネージドのハブクラスターであるデフォルトの local-cluster
と、管理クラスターとしてのハブクラスターのみをサポートしています。Red Hat Advanced Cluster Management がインストールされている場合は、マネージドハブクラスター (local-cluster
) を管理クラスターとして使用できます。
ホステッドクラスター は、API エンドポイントとコントロールプレーンが管理クラスターでホストされている OpenShift Container Platform クラスターです。ホステッドクラスターには、コントロールプレーンとそれに対応するデータプレーンが含まれます。ホステッドクラスターは、multicluster engine Operator のコンソールか、Hosted Control Plane のコマンドラインインターフェイス (hcp
) を使用して作成できます。
ホステッドクラスターは、マネージドクラスターとして自動的にインポートされます。この自動インポート機能を無効にする場合は、「multicluster engine Operator へのホステッドクラスターの自動インポートの無効化」を参照してください。
4.2.1. ベアメタルへの Hosted Control Plane のデプロイの準備 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルに Hosted Control Plane をデプロイする準備をする際には、次の情報を考慮してください。
- 管理クラスターとワーカーは、Hosted Control Plane の同じプラットフォーム上で実行してください。
-
すべてのベアメタルホストは、Central Infrastructure Management が提供する Discovery Image ISO を使用して手動で起動する必要があります。ホストは手動で起動することも、
Cluster-Baremetal-Operator
を使用して自動化することもできます。各ホストが起動すると、エージェントプロセスが実行され、ホストの詳細が検出され、インストールが完了します。Agent
カスタムリソースは、各ホストを表します。 - Hosted Control Plane のストレージを設定する場合は、etcd の推奨プラクティスを考慮してください。レイテンシー要件を満たすには、各コントロールプレーンノードで実行されるすべての Hosted Control Plane の etcd インスタンス専用の高速ストレージデバイスを使用します。LVM ストレージを使用して、ホストされた etcd Pod のローカルストレージクラスを設定できます。詳細は、「推奨される etcd プラクティス」および「論理ボリュームマネージャーストレージを使用した永続ストレージ」を参照してください。
4.2.1.1. 管理クラスターを設定するための前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Container Platform クラスターに multicluster engine for Kubernetes Operator 2.2 以降がインストールされている必要があります。multicluster engine Operator は、OpenShift Container Platform OperatorHub から Operator としてインストールできます。
multicluster engine Operator には、少なくとも 1 つのマネージド OpenShift Container Platform クラスターが必要です。multicluster engine Operator バージョン 2.2 以降では、
local-cluster
が自動的にインポートされます。local-cluster
の詳細は、Red Hat Advanced Cluster Management ドキュメントの 詳細設定 を参照してください。次のコマンドを実行して、ハブクラスターの状態を確認できます。oc get managedclusters local-cluster
$ oc get managedclusters local-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
管理クラスター上のベアメタルホストに
topology.kubernetes.io/zone
ラベルを追加する必要があります。各ホストのtopology.kubernetes.io/zone
の値が一意であることを確認します。そうしないと、すべての Hosted Control Plane Pod が 1 つのノードにスケジュールされ、単一障害点が発生します。 - エージェントプラットフォームを使用して、Hosted Control Plane をベアメタルでプロビジョニングできます。Agent プラットフォームは、Central Infrastructure Management サービスを使用して、ホステッドクラスターにワーカーノードを追加します。詳細は、Central Infrastructure Management サービスの有効化 を参照してください。
- Hosted Control Plane のコマンドラインインターフェイスをインストールする必要があります。
4.2.1.2. ベアメタルファイアウォール、ポート、およびサービスの要件 リンクのコピーリンクがクリップボードにコピーされました!
管理クラスター、コントロールプレーン、ホステッドクラスター間でポートの通信ができるように、ファイアウォール、ポート、およびサービスの要件を満たす必要があります。
サービスはデフォルトのポートで実行されます。ただし、NodePort
公開ストラテジーを使用する場合、サービスは NodePort
サービスによって割り当てられたポートで実行されます。
ファイアウォールルール、セキュリティーグループ、またはその他のアクセス制御を使用して、必要なソースだけにアクセスを制限します。必要な場合を除き、ポートを公開しないでください。実稼働環境の場合は、ロードバランサーを使用して、単一の IP アドレスによるアクセスを簡素化します。
ハブクラスターにプロキシー設定がある場合は、すべてのホステッドクラスター API エンドポイントを Proxy
オブジェクトの noProxy
フィールドに追加して、ハブクラスターがホステッドクラスターの API エンドポイントにアクセスできようにします。詳細は、「クラスター全体のプロキシーの設定」を参照してください。
Hosted Control Plane はベアメタル上で次のサービスを公開します。
APIServer
-
APIServer
サービスはデフォルトでポート 6443 で実行され、コントロールプレーンコンポーネント間の通信には ingress アクセスが必要です。 - MetalLB ロードバランシングを使用する場合は、ロードバランサーの IP アドレスに使用される IP 範囲への ingress アクセスを許可します。
-
OAuthServer
-
ルートと Ingress を使用してサービスを公開する場合、
OAuthServer
サービスはデフォルトでポート 443 で実行されます。 -
NodePort
公開ストラテジーを使用する場合は、OAuthServer
サービスにファイアウォールルールを使用します。
-
ルートと Ingress を使用してサービスを公開する場合、
Konnectivity
-
ルートと Ingress を使用してサービスを公開する場合、
Konnectivity
サービスはデフォルトでポート 443 で実行されます。 -
Konnectivity
エージェントはリバーストンネルを確立し、コントロールプレーンがホステッドクラスターのネットワークにアクセスできるようにします。エージェントは egress を使用してKonnectivity
サーバーに接続します。サーバーは、ポート 443 のルートまたは手動で割り当てられたNodePort
を使用して公開されます。 - クラスター API サーバーのアドレスが内部 IP アドレスの場合は、ワークロードサブネットからポート 6443 の IP アドレスへのアクセスを許可します。
- アドレスが外部 IP アドレスの場合は、ノードからその外部 IP アドレスにポート 6443 で送信できるように許可します。
-
ルートと Ingress を使用してサービスを公開する場合、
Ignition
-
ルートと Ingress を使用してサービスを公開する場合、
Ignition
サービスはデフォルトでポート 443 で実行されます。 -
NodePort
公開ストラテジーを使用する場合は、Ignition
サービスにファイアウォールルールを使用します。
-
ルートと Ingress を使用してサービスを公開する場合、
ベアメタルで以下のサービスは必要ありません。
-
OVNSbDb
-
OIDC
4.2.1.3. ベアメタルのインフラストラクチャー要件 リンクのコピーリンクがクリップボードにコピーされました!
エージェントプラットフォームはインフラストラクチャーを作成しませんが、インフラストラクチャーに関して次の要件があります。
- Agent: Agent は、Discovery イメージで起動され、OpenShift Container Platform ノードとしてプロビジョニングされる準備ができているホストを表します。
- DNS: API および Ingress エンドポイントは、ルーティング可能である必要があります。
4.2.2. ベアメタルでの DNS 設定 リンクのコピーリンクがクリップボードにコピーされました!
ホステッドクラスターの API サーバーは、NodePort
サービスとして公開されます。API サーバーに到達できる宛先を指す api.<hosted_cluster_name>.<base_domain>
の DNS エントリーが存在する必要があります。
DNS エントリーは、ホステッドコントロールプレーンを実行している管理クラスター内のノードの 1 つを指すレコードのように単純なものにすることができます。エントリーは、受信トラフィックを Ingress Pod にリダイレクトするためにデプロイされるロードバランサーを指すこともできます。
DNS 設定の例
前述の例の場合、*.apps.example.krnl.es. IN A 192.168.122.23
が、ホステッドクラスター内のノード、またはロードバランサー (設定されている場合) です。
IPv6 ネットワーク上の非接続環境用に DNS を設定する場合、設定は次の例のようになります。
IPv6 ネットワークの DNS 設定の例
デュアルスタックネットワークの非接続環境で DNS を設定する場合は、IPv4 と IPv6 の両方の DNS エントリーを含めるようにしてください。
デュアルスタックネットワークの DNS 設定の例
4.2.3. InfraEnv リソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタル上にホステッドクラスターを作成するには、InfraEnv
リソースが必要です。
4.2.3.1. InfraEnv リソースの作成とノードの追加 リンクのコピーリンクがクリップボードにコピーされました!
Hosted Control Plane では、コントロールプレーンコンポーネントは管理クラスター上の Pod として実行され、データプレーンは専用ノード上で実行されます。Assisted Service を使用すると、ハードウェアをハードウェアインベントリーに追加する検出 ISO を使用して、ハードウェアをブートできます。後でホステッドクラスターを作成するときに、インベントリーのハードウェアを使用してデータプレーンノードをプロビジョニングします。検出 ISO を取得するために使用されるオブジェクトは、InfraEnv
リソースです。検出 ISO からベアメタルノードをブートするようにクラスターを設定する BareMetalHost
オブジェクトを作成する必要があります。
手順
次のコマンドを入力して、ハードウェアインベントリーを保存する namespace を作成します。
oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig create \ namespace <namespace_example>
$ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig create \ namespace <namespace_example>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <directory_example>
-
管理クラスターの
kubeconfig
ファイルが保存されるディレクトリーの名前です。 - <namespace_example>
作成する namespace の名前 (例:
hardware-inventory
) です。出力例
namespace/hardware-inventory created
namespace/hardware-inventory created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを入力して、管理クラスターのプルシークレットをコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <directory_example>
-
管理クラスターの
kubeconfig
ファイルが保存されるディレクトリーの名前です。 - <namespace_example>
作成する namespace の名前 (例:
hardware-inventory
) です。出力例
secret/pull-secret created
secret/pull-secret created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコンテンツを YAML ファイルに追加して、
InfraEnv
リソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、YAML ファイルに変更を適用します。
oc apply -f <infraenv_config>.yaml
$ oc apply -f <infraenv_config>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <infraenv_config>
は、ファイルの名前に置き換えます。次のコマンドを入力して、
InfraEnv
リソースが作成されたことを確認します。oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig \ -n <namespace_example> get infraenv hosted
$ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig \ -n <namespace_example> get infraenv hosted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の 2 つの方法のいずれかに従ってベアメタルホストを追加します。
Metal3 Operator を使用しない場合は、
InfraEnv
リソースから検出 ISO を取得し、次のステップを実行して手動でホストをブートします。次のコマンドを入力してライブ ISO をダウンロードします。
oc get infraenv -A
$ oc get infraenv -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get infraenv <namespace_example> -o jsonpath='{.status.isoDownloadURL}' -n <namespace_example> <iso_url>
$ oc get infraenv <namespace_example> -o jsonpath='{.status.isoDownloadURL}' -n <namespace_example> <iso_url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ISO をブートします。ノードは Assisted Service と通信し、
InfraEnv
リソースと同じ namespace にエージェントとして登録されます。 各エージェントに対して、インストールディスク ID とホスト名を設定し、承認してエージェントが使用可能であることを示します。次のコマンドを入力します。
oc -n <hosted_control_plane_namespace> get agents
$ oc -n <hosted_control_plane_namespace> get agents
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 auto-assign e57a637f-745b-496e-971d-1abbf03341ba auto-assign
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 auto-assign e57a637f-745b-496e-971d-1abbf03341ba auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n <hosted_control_plane_namespace> \ patch agent 86f7ac75-4fc4-4b36-8130-40fa12602218 \ -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-0.example.krnl.es"}}' \ --type merge
$ oc -n <hosted_control_plane_namespace> \ patch agent 86f7ac75-4fc4-4b36-8130-40fa12602218 \ -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-0.example.krnl.es"}}' \ --type merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n <hosted_control_plane_namespace> \ patch agent 23d0c614-2caa-43f5-b7d3-0b3564688baa -p \ '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-1.example.krnl.es"}}' \ --type merge
$ oc -n <hosted_control_plane_namespace> \ patch agent 23d0c614-2caa-43f5-b7d3-0b3564688baa -p \ '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-1.example.krnl.es"}}' \ --type merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n <hosted_control_plane_namespace> get agents
$ oc -n <hosted_control_plane_namespace> get agents
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 true auto-assign e57a637f-745b-496e-971d-1abbf03341ba true auto-assign
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 true auto-assign e57a637f-745b-496e-971d-1abbf03341ba true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Metal3 Operator を使用する場合は、次のオブジェクトを作成することで、ベアメタルホストの登録を自動化できます。
YAML ファイルを作成し、そこに次のコンテンツを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <namespace_example>
- namespace です。
- <password>
- シークレットのパスワードです。
- <username>
- シークレットのユーザー名です。
- <bmc_address>
BareMetalHost
オブジェクトの BMC アドレスです。注記この YAML ファイルを適用すると、次のオブジェクトが作成されます。
- ベースボード管理コントローラー (BMC) の認証情報が含まれるシークレット
-
BareMetalHost
オブジェクト - HyperShift Operator によるエージェントの管理が可能になるロール
BareMetalHost
オブジェクトでinfraenvs.agent-install.openshift.io: hosted
カスタムラベルを使用してInfraEnv
リソースが参照されることに注意してください。これにより、生成された ISO を使用してノードがブートされます。
次のコマンドを入力して、YAML ファイルに変更を適用します。
oc apply -f <bare_metal_host_config>.yaml
$ oc apply -f <bare_metal_host_config>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <bare_metal_host_config>
は、ファイルの名前に置き換えます。
次のコマンドを入力し、
BareMetalHost
オブジェクトの状態がProvisioning
になるまで数分間待ちます。oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig -n <namespace_example> get bmh
$ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig -n <namespace_example> get bmh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATE CONSUMER ONLINE ERROR AGE hosted-worker0 provisioning true 106s hosted-worker1 provisioning true 106s hosted-worker2 provisioning true 106s
NAME STATE CONSUMER ONLINE ERROR AGE hosted-worker0 provisioning true 106s hosted-worker1 provisioning true 106s hosted-worker2 provisioning true 106s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ノードが起動し、エージェントとして表示されていることを確認します。このプロセスには数分かかる場合があり、コマンドを複数回入力する必要があることもあります。
oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig -n <namespace_example> get agent
$ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig -n <namespace_example> get agent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CLUSTER APPROVED ROLE STAGE aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0201 true auto-assign aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0202 true auto-assign aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0203 true auto-assign
NAME CLUSTER APPROVED ROLE STAGE aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0201 true auto-assign aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0202 true auto-assign aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0203 true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3.2. コンソールを使用して InfraEnv リソースを作成する リンクのコピーリンクがクリップボードにコピーされました!
コンソールを使用して InfraEnv
リソースを作成するには、次のステップを実行します。
手順
- OpenShift Container Platform Web コンソールを開き、管理者の認証情報を入力してログインします。コンソールを開く手順は、「Web コンソールへのアクセス」を参照してください。
- コンソールヘッダーで、All Clusters が選択されていることを確認します。
-
Infrastructure
Host inventory Create infrastructure environment をクリックします。 -
InfraEnv
リソースを作成した後、InfraEnv ビュー内から Add hosts をクリックし、利用可能なオプションから選択してベアメタルホストを追加します。
4.2.4. ベアメタルでのホステッドクラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
ホステッドクラスターの作成やインポートが可能です。Assisted Installer が multicluster engine Operator へのアドオンとして有効になっている場合に、エージェントプラットフォームでホステッドクラスターを作成すると、HyperShift Operator によって Agent Cluster API プロバイダーが Hosted Control Plane namespace にインストールされます。
4.2.4.1. コンソールを使用したホステッドクラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルインフラストラクチャーでは、ホストされたクラスターを作成またはインポートできます。Assisted Installer をマルチクラスターエンジン Operator へのアドオンとして有効にし、エージェントプラットフォームでホステッドクラスターを作成すると、HyperShift Operator は Hosted Control Plane namespace に Agent Cluster API プロバイダーをインストールします。Agent Cluster API プロバイダーは、コントロールプレーンをホストする管理クラスターと、コンピュートノードのみで設定されるホステッドクラスターを接続します。
前提条件
- 各ホステッドクラスターに、クラスター全体で一意の名前が必要。ホステッドクラスター名は、既存のマネージドクラスターと同じにすることはできません。そうしないと、マルチクラスターエンジン Operator はホストされたクラスターを管理できません。
-
クラスター という単語をホステッドクラスター名
と
して使用しないでください。 - マルチクラスターエンジン Operator マネージドクラスターの namespace にホステッドクラスターを作成することはできません。
- ベストプラクティスとして、他のホステッドクラスターとは別にホストされたクラスターを作成します。
- クラスターにデフォルトのストレージクラスが設定されていることを確認する。そうしない場合、保留中の永続ボリューム要求 (PVC) が表示されることがあります。
-
デフォルトでは、
hcp create cluster エージェント
コマンドを使用すると、設定されたノードポートでホステッドクラスターが作成されます。ベアメタル上のホステッドクラスターの推奨される公開ストラテジー。ロードバランサーを介してサービスを公開します。Web コンソールまたは Red Hat Advanced Cluster Management を使用してホステッドクラスターを作成する場合、Kubernetes API サーバー以外のサービスの公開ストラテジーを設定するには、HostedCluster
カスタムリソースでservicePublishingStrategy
情報を手動で指定する必要があります。 ベアメタル上のホストされたコントロールプレーンの要件 に記載されている要件を満たしていることを確認してください。これには、インフラストラクチャー、ファイアウォール、ポート、およびサービスに関する要件が含まれます。要件では、たとえば次のコマンド例に示すように、管理クラスター内のベアメタルホストに適切なゾーンラベルを追加する方法が説明されています。
oc label node [compute-node-1] topology.kubernetes.io/zone=zone1
$ oc label node [compute-node-1] topology.kubernetes.io/zone=zone1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label node [compute-node-2] topology.kubernetes.io/zone=zone2
$ oc label node [compute-node-2] topology.kubernetes.io/zone=zone2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label node [compute-node-3] topology.kubernetes.io/zone=zone3
$ oc label node [compute-node-3] topology.kubernetes.io/zone=zone3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ハードウェアインベントリーにベアメタルノードを追加したことを確認する。
手順
次のコマンドを入力して namespace を作成します。
oc create ns <hosted_cluster_namespace>
$ oc create ns <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <hosted_cluster_namespace>
は、ホステッドクラスター namespace の識別子に置き換えます。HyperShift Operator は namespace を作成します。ベアメタルインフラストラクチャーでのホストされたクラスター作成プロセス中に、生成された Cluster API プロバイダーロールでは namespace がすでに存在している必要があります。次のコマンドを入力して、ホステッドクラスターの設定ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ホステッドクラスターの名前を指定します
(例:)
。 - 2
/user/name/pullsecret
などのプルシークレットへのパスを指定します。- 3
clusters-example
などのホステッドコントロールプレーン namespace を指定します。oc get agent -n <hosted_control_plane_namespace>
コマンドを使用して、この namespace でエージェントが使用可能であることを確認します。- 4
krnl.es
などのベースドメインを指定します。- 5
- The
--api-server-address
フラグは、ホストされたクラスター内の Kubernetes API 通信に使用される IP アドレスを定義します。--api-server-address
フラグを設定しない場合は、管理クラスターに接続するためにログインする必要があります。 - 6
lvm-storageclass
などの etcd ストレージクラス名を指定します。- 7
- SSH 公開鍵へのパスを指定します。デフォルトのファイルパスは
~/.ssh/id_rsa.pub
です。 - 8
- ホステッドクラスターの namespace を指定します。
- 9
- Hosted Control Plane コンポーネントの可用性ポリシーを指定します。サポートされているオプションは
SingleReplica
とHighlyAvailable
です。デフォルト値はHighlyAvailable
です。 - 10
4.19.0-multi
など、使用するサポート対象の OpenShift Container Platform バージョンを指定します。非接続環境を使用している場合は、<ocp_release_image>
をダイジェストイメージに置き換えます。OpenShift Container Platform リリースイメージダイジェストを抽出するには、OpenShift Container Platform リリースイメージダイジェストの抽出 を参照してください。- 11
- ノードプールレプリカ数を指定します(例:
3
)同じ数のレプリカを作成するには、レプリカ数を0
以上に指定する必要があります。それ以外の場合は、ノードプールを作成しません。 - 12
-ssh-key
フラグの後に、user/.ssh/id_rsa
などの SSH キーへのパスを指定します。
サービス公開ストラテジーを設定します。デフォルトでは、ノードポートは追加のインフラストラクチャーなしで常に利用できるため、ホステッドクラスターは
NodePort
サービス公開ストラテジーを使用します。ただし、ロードバランサーを使用するようにサービス公開ストラテジーを設定できます。-
デフォルトの
NodePort
ストラテジーを使用している場合は、管理クラスターノードではなく、ホステッドクラスターコンピュートノードを指すように DNS を設定します。詳細は、「ベアメタル上の DNS 設定」を参照してください。 実稼働環境では、証明書の処理と自動 DNS 解決を提供するため、
LoadBalancer
ストラテジーを使用します。次の例は、ホストされたクラスター設定ファイルでサービス公開LoadBalancer
ストラテジーを変更する方法を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- API サーバータイプとして
LoadBalancer
を指定します。それ以外のすべてのサービスでは、タイプとしてRoute
を指定します。
-
デフォルトの
次のコマンドを入力して、ホステッドクラスター設定ファイルに変更を適用します。
oc apply -f hosted_cluster_config.yaml
$ oc apply -f hosted_cluster_config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ホステッドクラスター、ノードプール、および Pod の作成を確認します。
oc get hostedcluster \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
$ oc get hostedcluster \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get nodepool \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
$ oc get nodepool \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -n <hosted_cluster_namespace>
$ oc get pods -n <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ホステッドクラスターの準備ができていることを確認します。
Available: True
のステータスはクラスターの readiness を示し、ノードプールのステータスはAllMachinesReady: True
と表示されます。これらのステータスは、すべてのクラスター Operator の正常性を示します。 ホステッドクラスターに MetalLB をインストールします。
次のコマンドを入力して、ホステッドクラスターから
kubeconfig
ファイルを展開し、ホステッドクラスターアクセス用の環境変数を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow export KUBECONFIG="/path/to/kubeconfig-<hosted_cluster_namespace>.yaml"
$ export KUBECONFIG="/path/to/kubeconfig-<hosted_cluster_namespace>.yaml"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow install-metallb-operator.yaml
ファイルを作成して MetalLB Operator をインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを入力してファイルを適用します。
oc apply -f install-metallb-operator.yaml
$ oc apply -f install-metallb-operator.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow deploy-metallb-ipaddresspool.yaml
ファイルを作成して、MetalLB IP アドレスプールを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して設定を適用します。
oc apply -f deploy-metallb-ipaddresspool.yaml
$ oc apply -f deploy-metallb-ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、Operator のステータス、IP アドレスプール、および
L2Advertisement
リソースをチェックして、MetalLB のインストールを確認します。oc get pods -n metallb-system
$ oc get pods -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ipaddresspool -n metallb-system
$ oc get ipaddresspool -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get l2advertisement -n metallb-system
$ oc get l2advertisement -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Ingress 用のロードバランサーを設定します。
ingress-loadbalancer.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して設定を適用します。
oc apply -f ingress-loadbalancer.yaml
$ oc apply -f ingress-loadbalancer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ロードバランサーサービスが期待どおりに動作することを確認します。
oc get svc metallb-ingress -n openshift-ingress
$ oc get svc metallb-ingress -n openshift-ingress
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metallb-ingress LoadBalancer 172.31.127.129 10.11.176.71 80:30961/TCP,443:32090/TCP 16h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metallb-ingress LoadBalancer 172.31.127.129 10.11.176.71 80:30961/TCP,443:32090/TCP 16h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ロードバランサーと連携するように DNS を設定します。
-
*.apps.<hosted_cluster_namespace>.<base_domain>
ワイルドカード DNS レコードがロードバランサーの IP アドレスをポイントするように、apps
ドメインの DNS を設定します。 次のコマンドを入力して DNS 解決を確認します。
nslookup console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain> <load_balancer_ip_address>
$ nslookup console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain> <load_balancer_ip_address>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Server: 10.11.176.1 Address: 10.11.176.1#53 Name: console-openshift-console.apps.my-hosted-cluster.sample-base-domain.com Address: 10.11.176.71
Server: 10.11.176.1 Address: 10.11.176.1#53 Name: console-openshift-console.apps.my-hosted-cluster.sample-base-domain.com Address: 10.11.176.71
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
検証
次のコマンドを入力して、クラスター Operator を確認します。
oc get clusteroperators
$ oc get clusteroperators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべての Operator に
AVAILABLE: True
、PROGRESSING: False
、DEGRADED: False
が表示されていることを確認します。次のコマンドを入力してノードを確認します。
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各ノードのステータスが
READY
であることを確認します。Web ブラウザーに次の URL を入力して、コンソールへのアクセスをテストします。
https://console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain>
https://console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.4.2. コンソールを使用してベアメタル上にホステッドクラスターを作成する リンクのコピーリンクがクリップボードにコピーされました!
コンソールを使用してホステッドクラスターを作成するには、次の手順を実行します。
手順
- OpenShift Container Platform Web コンソールを開き、管理者の認証情報を入力してログインします。コンソールを開く手順は、「Web コンソールへのアクセス」を参照してください。
- コンソールヘッダーで、All Clusters が選択されていることを確認します。
-
Infrastructure
Clusters をクリックします。 Create cluster
Host inventory Hosted control plane をクリックします。 Create cluster ページが表示されます。
Create cluster ページでプロンプトに従い、クラスター、ノードプール、ネットワーク、および自動化に関する詳細を入力します。
注記クラスターの詳細を入力する際には、次のヒントが役立つ場合があります。
- 事前定義された値を使用してコンソールのフィールドに自動的に値を入力する場合は、ホストインベントリーの認証情報を作成できます。詳細は、「オンプレミス環境の認証情報の作成」を参照してください。
- Cluster details ページのプルシークレットは、OpenShift Container Platform リソースへのアクセスに使用する OpenShift Container Platform プルシークレットです。ホストインベントリー認証情報を選択した場合は、プルシークレットが自動的に入力されます。
- Node pools ページでは、namespace にノードプールのホストが含まれます。コンソールを使用してホストインベントリーを作成した場合、コンソールは専用の namespace を作成します。
-
Networking ページで、API サーバー公開ストラテジーを選択します。ホステッドクラスターの API サーバーは、既存のロードバランサーを使用するか、
NodePort
タイプのサービスとして公開できます。API サーバーに到達できる宛先を指すapi.<hosted_cluster_name>.<base_domain>
設定の DNS エントリーが存在する必要があります。このエントリーとして、管理クラスター内のノードの 1 つを指すレコード、または受信トラフィックを Ingress Pod にリダイレクトするロードバランサーを指すレコードを指定できます。
エントリーを確認し、Create をクリックします。
Hosted cluster ビューが表示されます。
- Hosted cluster ビューでホステッドクラスターのデプロイメントを監視します。
- ホステッドクラスターに関する情報が表示されない場合は、All Clusters が選択されていることを確認し、クラスター名をクリックします。
- コントロールプレーンコンポーネントの準備が整うまで待ちます。このプロセスには数分かかる場合があります。
- ノードプールのステータスを表示するには、NodePool セクションまでスクロールします。ノードをインストールするプロセスには約 10 分かかります。Nodes をクリックして、ノードがホステッドクラスターに参加したかどうかを確認することもできます。
次のステップ
- Web コンソールにアクセスするには、Web コンソールへのアクセス を参照してください。
4.2.4.3. ミラーレジストリーを使用してベアメタル上にホステッドクラスターを作成する リンクのコピーリンクがクリップボードにコピーされました!
ミラーレジストリーを使用して、hcp create cluster
コマンドで --image-content-sources
フラグを指定して、ベアメタル上にホステッドクラスターを作成できます。
手順
YAML ファイルを作成して、イメージコンテンツソースポリシー (ICSP) を定義します。以下の例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ファイルを
icsp.yaml
として保存します。このファイルにはミラーレジストリーが含まれます。 ミラーレジストリーを使用してホステッドクラスターを作成するには、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ホステッドクラスターの名前を指定します (例:
example
)。 - 2
- プルシークレットへのパスを指定します (例:
/user/name/pullsecret
)。 - 3
- Hosted Control Plane namespace を指定します (例:
clusters-example
)。oc get agent -n <hosted-control-plane-namespace>
コマンドを使用して、この namespace でエージェントが使用可能であることを確認します。 - 4
- ベースドメインを指定します (例:
krnl.es
)。 - 5
--api-server-address
フラグは、ホステッドクラスター内の Kubernetes API 通信に使用される IP アドレスを定義します。--api-server-address
フラグを設定しない場合は、管理クラスターに接続するためにログインする必要があります。- 6
- ICSP およびミラーレジストリーを定義する
icsp.yaml
ファイルを指定します。 - 7
- SSH 公開鍵へのパスを指定します。デフォルトのファイルパスは
~/.ssh/id_rsa.pub
です。 - 8
- ホステッドクラスターの namespace を指定します。
- 9
- 使用するサポート対象の OpenShift Container Platform バージョンを指定します (例:
4.18.0-multi
)。非接続環境を使用している場合は、<ocp_release_image>
をダイジェストイメージに置き換えます。OpenShift Container Platform リリースイメージダイジェストを抽出するには、「OpenShift Container Platform リリースイメージダイジェストの抽出」を参照してください。
次のステップ
- コンソールでホステッドクラスターを作成するときに再利用できる認証情報を作成するには、オンプレミス環境の認証情報の作成 を参照してください。
- ホステッドクラスターにアクセスするには、ホステッドクラスターへのアクセス を参照してください。
- Discovery Image を使用してホストインベントリーにホストを追加するには、Discovery Image を使用したホストインベントリーへのホストの追加 を参照してください。
- OpenShift Container Platform リリースイメージダイジェストを抽出するには、OpenShift Container Platform リリースイメージダイジェストの抽出 を参照してください。
4.2.5. ホステッドクラスター作成の確認 リンクのコピーリンクがクリップボードにコピーされました!
デプロイメントプロセスが完了したら、ホステッドクラスターが正常に作成されたことを確認できます。ホステッドクラスターの作成から数分後に、次の手順に従います。
手順
次の extract コマンドを入力して、新しいホステッドクラスターの kubeconfig を取得します。
oc extract -n <hosted-control-plane-namespace> secret/admin-kubeconfig \ --to=- > kubeconfig-<hosted-cluster-name>
$ oc extract -n <hosted-control-plane-namespace> secret/admin-kubeconfig \ --to=- > kubeconfig-<hosted-cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kubeconfig を使用して、ホステッドクラスターのクラスター Operator を表示します。以下のコマンドを入力します。
oc get co --kubeconfig=kubeconfig-<hosted-cluster-name>
$ oc get co --kubeconfig=kubeconfig-<hosted-cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE console 4.10.26 True False False 2m38s dns 4.10.26 True False False 2m52s image-registry 4.10.26 True False False 2m8s ingress 4.10.26 True False False 22m
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE console 4.10.26 True False False 2m38s dns 4.10.26 True False False 2m52s image-registry 4.10.26 True False False 2m8s ingress 4.10.26 True False False 22m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ホステッドクラスター上で実行中の Pod を表示することもできます。
oc get pods -A --kubeconfig=kubeconfig-<hosted-cluster-name>
$ oc get pods -A --kubeconfig=kubeconfig-<hosted-cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.6. ホステッドクラスターでカスタム API サーバー証明書を設定する リンクのコピーリンクがクリップボードにコピーされました!
API サーバーのカスタム証明書を設定するには、HostedCluster
設定の spec.configuration.apiServer
セクションで証明書の詳細を指定します。
カスタム証明書は、Day 1 操作または Day 2 操作の中で設定できます。ただし、サービス公開ストラテジーはホステッドクラスターの作成中に設定した後は変更できないため、設定する予定の Kubernetes API サーバーのホスト名を知っておく必要があります。
前提条件
管理クラスターにカスタム証明書が含まれる Kubernetes シークレットを作成しました。シークレットには次の鍵が含まれています。
-
tls.crt
: 証明書 -
tls.key
: 秘密鍵
-
-
HostedCluster
設定にロードバランサーを使用するサービス公開ストラテジーが含まれている場合は、証明書のサブジェクト代替名 (SAN) が内部 API エンドポイント (api-int
) と競合しないことを確認してください。内部 API エンドポイントは、プラットフォームによって自動的に作成および管理されます。カスタム証明書と内部 API エンドポイントの両方で同じホスト名を使用すると、ルーティングの競合が発生する可能性があります。このルールの唯一の例外は、Private
またはPublicAndPrivate
設定で AWS をプロバイダーとして使用する場合です。このような場合、SAN の競合はプラットフォームによって管理されます。 - 証明書は外部 API エンドポイントに対して有効である必要があります。
- 証明書の有効期間は、クラスターの予想されるライフサイクルと一致します。
手順
次のコマンドを入力して、カスタム証明書を使用してシークレットを作成します。
oc create secret tls sample-hosted-kas-custom-cert \ --cert=path/to/cert.crt \ --key=path/to/key.key \ -n <hosted_cluster_namespace>
$ oc create secret tls sample-hosted-kas-custom-cert \ --cert=path/to/cert.crt \ --key=path/to/key.key \ -n <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例に示すように、カスタム証明書の詳細を使用して
HostedCluster
設定を更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
HostedCluster
設定に変更を適用します。oc apply -f <hosted_cluster_config>.yaml
$ oc apply -f <hosted_cluster_config>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- API サーバー Pod をチェックして、新しい証明書がマウントされていることを確認します。
- カスタムドメイン名を使用して API サーバーへの接続をテストします。
-
ブラウザーで、または
openssl
などのツールを使用して、証明書の詳細を確認します。