6.3. 非接続環境でベアメタルに Hosted Control Plane をデプロイする
Hosted Control Plane をベアメタルにプロビジョニングする場合は、Agent プラットフォームを使用します。Agent プラットフォームと multicluster engine for Kubernetes Operator が連携して、非接続デプロイメントを可能にします。Agent プラットフォームは、Central Infrastructure Management サービスを使用して、ホステッドクラスターにワーカーノードを追加します。Central Infrastructure Management の概要は、Central Infrastructure Management サービスの有効化 を参照してください。
6.3.1. ベアメタル向けの非接続環境のアーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
以下の図は、非接続環境のアーキテクチャーの例を示しています。
- TLS サポートを備えたレジストリー証明書のデプロイメント、Web サーバー、DNS などのインフラストラクチャーサービスを設定して、非接続デプロイメントが確実に機能するようにします。
openshift-config
namespace に config map を作成します。この例では、config map の名前はregistry-config
になります。config map の内容はレジストリー CA 証明書です。config map の data フィールドには、次のキー/値が含まれている必要があります。-
キー:
<registry_dns_domain_name>..<port>
(例:registry.hypershiftdomain.lab..5000:
)ポートを指定するときは、レジストリー DNS ドメイン名の後に..
を配置するようにしてください。 値: 証明書の内容
config map の作成の詳細は、Hosted Control Plane の非接続インストールのために TLS 証明書を設定する を参照してください。
-
キー:
-
images.config.openshift.io
カスタムリソース (CR) 仕様を変更し、値がname: registry-config
のadditionalTrustedCA
という名前の新規フィールドを追加します。 2 つのデータフィールドを含む config map を作成します。1 つのフィールドには
RAW
形式のregistries.conf
ファイルが、もう 1 つのフィールドにはレジストリー CA が含まれ、ca-bundle.crt
という名前が付けられます。config map はmulticluster-engine
namespace に属し、config map の名前は他のオブジェクトで参照されます。config map の例は、以下の設定例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
multicluster engine Operator の namespace で、Agent と
hypershift-addon
アドオンの両方を有効にするmulticlusterengine
CR を作成します。multicluster engine Operator の namespace には、非接続デプロイメントでの動作を変更するための config map が含まれている必要があります。namespace には、multicluster-engine
、assisted-service
、およびhypershift-addon-manager
Pod も含まれます。 ホステッドクラスターのデプロイに必要な次のオブジェクトを作成します。
- シークレット: シークレットには、プルシークレット、SSH キー、etcd 暗号化キーが含まれます。
- config map: config map には、プライベートレジストリーの CA 証明書が含まれています。
-
HostedCluster
:HostedCluster
リソースは、ユーザーが作成しようとしているクラスターの設定を定義します。 -
NodePool
:NodePool
リソースは、データプレーンに使用するマシンを参照するノードプールを識別します。
-
ホステッドクラスターオブジェクトを作成した後、HyperShift Operator は、コントロールプレーン Pod に対応するために
HostedControlPlane
namespace を確立します。この namespace は、エージェント、ベアメタルホスト (BMH)、InfraEnv
リソースなどのコンポーネントもホストします。その後、InfraEnv
リソースを作成し、ISO の作成後に、Baseboard Management Controller (BMC) の認証情報を含む BMH とそのシークレットを作成します。 -
openshift-machine-api
namespace の Metal3 Operator は、新しい BMH を検査します。その後、Metal3 Operator は、multicluster engine Operator の namespace のAgentServiceConfig
CR を通じて指定された設定済みのLiveISO
およびRootFS
の値を使用して、BMC に接続して BMC を起動しようとします。 -
HostedCluster
リソースのワーカーノードが起動された後、エージェントコンテナーが起動されます。このエージェントは、デプロイメントを完了するためのアクションを調整する Assisted Service との接続を確立します。最初に、NodePool
リソースをHostedCluster
リソースのワーカーノードの数にスケーリングする必要があります。Assisted Service は残りのタスクを管理します。 - この時点で、デプロイメントプロセスが完了するまで待ちます。
6.3.2. 非接続環境でベアメタルに Hosted Control Plane をデプロイするための要件 リンクのコピーリンクがクリップボードにコピーされました!
オフライン環境で Hosted Control Plane を設定するには、次の前提条件を満たす必要があります。
- CPU: 提供される CPU の数によって、同時に実行できるホステッドクラスターの数が決まります。通常、3 つのノードの場合、各ノードに 16 個の CPU を使用します。最小限の開発では、3 つのノードの場合、各ノードに 12 個の CPU を使用できます。
- メモリー: RAM の容量は、ホストできるホステッドクラスターの数に影響します。各ノードに 48 GB の RAM を使用します。最小限の開発であれば、18 GB の RAM で十分です。
ストレージ: multicluster engine Operator には SSD ストレージを使用します。
- 管理クラスター: 250 GB。
- レジストリー: 必要なストレージは、ホストされているリリース、Operator、イメージの数によって異なります。許容可能な数値は 500 GB ですが、ホステッドクラスターをホストするディスクから分離することが望ましいです。
- Web サーバー: 必要なストレージは、ホストされる ISO とイメージの数によって異なります。許容可能な数値は 500 GB です。
実稼働環境: 実稼働環境の場合、管理クラスター、レジストリー、および Web サーバーを異なるディスク上に分離します。この例は、実稼働環境で可能な設定を示しています。
- レジストリー: 2 TB
- 管理クラスター: 500 GB
- Web サーバー: 2 TB
6.3.3. リリースイメージダイジェストの抽出 リンクのコピーリンクがクリップボードにコピーされました!
タグ付けされたイメージを使用して、OpenShift Container Platform リリースイメージダイジェストを抽出できます。
手順
次のコマンドを実行して、イメージダイジェストを取得します。
oc adm release info <tagged_openshift_release_image> | grep "Pull From"
$ oc adm release info <tagged_openshift_release_image> | grep "Pull From"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <tagged_openshift_release_image>
を、サポートされている OpenShift Container Platform バージョンのタグ付きイメージに置き換えます (例:quay.io/openshift-release-dev/ocp-release:4.14.0-x8_64
)。出力例
Pull From: quay.io/openshift-release-dev/ocp-release@sha256:69d1292f64a2b67227c5592c1a7d499c7d00376e498634ff8e1946bc9ccdddfe
Pull From: quay.io/openshift-release-dev/ocp-release@sha256:69d1292f64a2b67227c5592c1a7d499c7d00376e498634ff8e1946bc9ccdddfe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.4. ベアメタルでの 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 設定の例
6.3.5. 非接続環境で Hosted Control Plane のレジストリーをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
開発環境の場合は、Podman コンテナーを使用して、小規模なセルフホスト型レジストリーをデプロイします。実稼働環境では、Red Hat Quay、Nexus、Artifactory などのエンタープライズホスト型レジストリーをデプロイします。
手順
Podman を使用して小規模なレジストリーをデプロイするには、以下の手順を実行します。
特権ユーザーとして
${HOME}
ディレクトリーにアクセスし、次のスクリプトを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
PULL_SECRET
の場所は、設定に適した場所に置き換えます。
スクリプトファイル
registry.sh
という名前を指定して保存します。スクリプトを実行すると、以下の情報がプルされます。- ハイパーバイザーのホスト名に基づくレジストリー名
- 必要な認証情報およびユーザーアクセスの詳細
次のように実行フラグを追加して、パーミッションを調整します。
chmod u+x ${HOME}/registry.sh
$ chmod u+x ${HOME}/registry.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パラメーターを指定せずにスクリプトを実行するには、以下のコマンドを入力します。
${HOME}/registry.sh
$ ${HOME}/registry.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このスクリプトはサーバーを起動します。このスクリプトは、管理目的で
systemd
サービスを使用します。スクリプトを管理する必要がある場合は、以下のコマンドを使用できます。
systemctl status
$ systemctl status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start
$ systemctl start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl stop
$ systemctl stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
レジストリーのルートフォルダーは /opt/registry
ディレクトリー内にあり、次のサブディレクトリーが含まれています。
-
certs
には TLS 証明書が含まれます。 -
auth
には認証情報が含まれます。 -
data
にはレジストリーイメージが含まれます。 -
conf
にはレジストリー設定が含まれています。
6.3.6. 非接続環境で Hosted Control Plane の管理クラスターをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の管理クラスターをセットアップするには、multicluster engine for Kubernetes Operator がインストールされていることを確認する必要があります。multicluster engine Operator は、複数のプロバイダーでクラスターをデプロイする場合に重要な役割を果たします。
前提条件
- 管理クラスターとターゲットのベアメタルホスト (BMH) の Baseboard Management Controller (BMC) の間に双方向の接続がある。または、エージェントプロバイダーを通じて、自分自身でブートする方式を取ることもできます。
ホステッドクラスターが、管理クラスターのホスト名および
*.apps
ホスト名の API ホスト名を解決して到達できる。管理クラスターの API ホスト名と*.apps
ホスト名の例を次に示します。-
api.management-cluster.internal.domain.com
-
console-openshift-console.apps.management-cluster.internal.domain.com
-
管理クラスターが、ホステッドクラスターの API ホスト名および
*.apps
ホスト名を解決して到達できる。ホステッドクラスターの API ホスト名と*.apps
ホスト名の例を次に示します。-
api.sno-hosted-cluster-1.internal.domain.com
-
console-openshift-console.apps.sno-hosted-cluster-1.internal.domain.com
-
手順
- OpenShift Container Platform クラスターに multicluster engine Operator 2.4 以降をインストールします。multicluster engine Operator は、OpenShift Container Platform OperatorHub から Operator としてインストールできます。HyperShift Operator は multicluster engine Operator に含まれています。multicluster engine Operator のインストールの詳細は、Red Hat Advanced Cluster Management ドキュメントの「multicluster engine Operator のインストールとアップグレード」を参照してください。
- HyperShift Operator がインストールされていることを確認します。HyperShift Operator は multicluster engine Operator とともに自動的に追加されます。手動でインストールする必要がある場合は、「local-cluster の hypershift-addon マネージドクラスターアドオンを手動で有効にする」の手順に従ってください。
次のステップ
次に、Web サーバーを設定します。
6.3.7. 非接続環境で Hosted Control Plane の Web サーバーを設定する リンクのコピーリンクがクリップボードにコピーされました!
ホステッドクラスターとしてデプロイする OpenShift Container Platform リリースに関連付けられた Red Hat Enterprise Linux CoreOS (RHCOS) イメージをホストするには、追加の Web サーバーを設定する必要があります。
手順
Web サーバーを設定するには、以下の手順を実行します。
以下のコマンドを入力して、使用する OpenShift Container Platform リリースから
openshift-install
バイナリーを展開します。oc adm -a ${LOCAL_SECRET_JSON} release extract --command=openshift-install \ "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
$ oc adm -a ${LOCAL_SECRET_JSON} release extract --command=openshift-install \ "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のスクリプトを実行します。このスクリプトは、
/opt/srv
ディレクトリーにフォルダーを作成します。このフォルダーには、ワーカーノードをプロビジョニングするための RHCOS イメージが含まれています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ダウンロードが完了すると、コンテナーが実行され、Web サーバー上でイメージをホストします。このコンテナーは公式 HTTPd イメージのバリエーションを使用しているので、IPv6 ネットワークでの動作も可能になります。
6.3.8. 非接続環境で Hosted Control Plane のイメージミラーリングを設定する リンクのコピーリンクがクリップボードにコピーされました!
イメージミラーリングは、registry.redhat.com
や quay.io
などの外部レジストリーからイメージを取得し、プライベートレジストリーに保存するプロセスです。
次の手順では、ImageSetConfiguration
オブジェクトを使用するバイナリーである、oc-mirror
ツールが使用されます。このファイルで、以下の情報を指定できます。
-
ミラーリングする OpenShift Container Platform バージョン。バージョンは
quay.io
にあります。 - ミラーリングする追加の Operator。パッケージは個別に選択します。
- リポジトリーに追加する追加のイメージ。
前提条件
- ミラーリングプロセスを開始する前に、レジストリーサーバーが実行されていることを確認する。
手順
イメージのミラーリングを設定するには、以下の手順を実行します。
-
${HOME}/.docker/config.json
ファイルが、ミラーリング元のレジストリーとイメージのプッシュ先のプライベートレジストリーで更新されていることを確認します。 次の例を使用して、ミラーリングに使用する
ImageSetConfiguration
オブジェクトを作成します。環境に合わせて必要に応じて値を置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ミラーリングプロセスを開始します。
oc-mirror --v2 --config imagesetconfig.yaml \ --workspace file://mirror-file docker://<registry>
$ oc-mirror --v2 --config imagesetconfig.yaml \ --workspace file://mirror-file docker://<registry>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ミラーリングプロセスが完了すると、
mirror-file
という名前の新しいフォルダーが作成されます。このフォルダーには、ImageDigestMirrorSet
(IDMS)、ImageTagMirrorSet
(ITMS)、およびホステッドクラスターに適用するカタログソースが含まれます。imagesetconfig.yaml
ファイルを次のように設定して、OpenShift Container Platform のナイトリーバージョンまたは CI バージョンをミラーリングします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部分的な非接続環境の場合は、次のコマンドを入力して、イメージセット設定からレジストリーにイメージをミラーリングします。
oc mirror -c imagesetconfig.yaml \ --workspace file://<file_path> docker://<mirror_registry_url> --v2
$ oc mirror -c imagesetconfig.yaml \ --workspace file://<file_path> docker://<mirror_registry_url> --v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は、「部分的な非接続環境でのイメージセットのミラーリング」を参照してください。
完全な非接続環境の場合は、次の手順を実行します。
次のコマンドを入力して、指定したイメージセット設定からディスクにイメージをミラーリングします。
oc mirror -c imagesetconfig.yaml file://<file_path> --v2
$ oc mirror -c imagesetconfig.yaml file://<file_path> --v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は、「完全な非接続環境でのイメージセットのミラーリング」を参照してください。
次のコマンドを入力して、ディスク上のイメージセットファイルを処理し、その内容をターゲットミラーレジストリーにミラーリングします。
oc mirror -c imagesetconfig.yaml \ --from file://<file_path> docker://<mirror_registry_url> --v2
$ oc mirror -c imagesetconfig.yaml \ --from file://<file_path> docker://<mirror_registry_url> --v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 非接続ネットワークへのインストール の手順に従って、最新の multicluster engine Operator イメージをミラーリングします。
6.3.9. 管理クラスターでのオブジェクトの適用 リンクのコピーリンクがクリップボードにコピーされました!
ミラーリングプロセスが完了したら、管理クラスターに 2 つのオブジェクトを適用する必要があります。
-
ImageContentSourcePolicy
(ICSP) またはImageDigestMirrorSet
(IDMS) - カタログソース
oc-mirror
ツールを使用すると、出力アーティファクトは oc-mirror-workspace/results-XXXXXX/
という名前のフォルダーに保存されます。
ICSP または IDMS は、ノードを再起動せずに、各ノードの kubelet を再起動する MachineConfig
の変更を開始します。ノードが READY
としてマークされたら、新しく生成されたカタログソースを適用する必要があります。
カタログソースは、カタログイメージのダウンロードや処理を行い、そのイメージに含まれるすべての PackageManifests
を取得するなど、openshift-marketplace
Operator でアクションを開始します。
手順
新しいソースを確認するには、新しい
CatalogSource
をソースとして使用して次のコマンドを実行します。oc get packagemanifest
$ oc get packagemanifest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アーティファクトを適用するには、次の手順を実行します。
次のコマンドを入力して、ICSP または IDMS アーティファクトを作成します。
oc apply -f oc-mirror-workspace/results-XXXXXX/imageContentSourcePolicy.yaml
$ oc apply -f oc-mirror-workspace/results-XXXXXX/imageContentSourcePolicy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードの準備が完了するまで待ってから、次のコマンドを入力します。
oc apply -f catalogSource-XXXXXXXX-index.yaml
$ oc apply -f catalogSource-XXXXXXXX-index.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OLM カタログをミラーリングし、ホステッドクラスターがミラーを参照するように設定します。
管理
(デフォルト) OLMCatalogPlacement モードを使用する場合、OLM カタログに使用されるイメージストリームは、管理クラスター上の ICSP からのオーバーライド情報で自動的に修正されません。-
OLM カタログが元の名前とタグを使用して内部レジストリーに適切にミラーリングされている場合は、
hypershift.openshift.io/olm-catalogs-is-registry-overrides
アノテーションをHostedCluster
リソースに追加します。形式は"sr1=dr1,sr2=dr2"
です。ソースレジストリーの文字列がキーで、宛先レジストリーが値です。 OLM カタログのイメージストリームメカニズムを回避するには、
HostedCluster
リソースで次の 4 つのアノテーションを使用して、OLM Operator カタログに使用する 4 つのイメージのアドレスを直接指定します。-
hypershift.openshift.io/certified-operators-catalog-image
-
hypershift.openshift.io/community-operators-catalog-image
-
hypershift.openshift.io/redhat-marketplace-catalog-image
-
hypershift.openshift.io/redhat-operators-catalog-image
-
-
OLM カタログが元の名前とタグを使用して内部レジストリーに適切にミラーリングされている場合は、
この場合、イメージストリームは作成されないため、Operator の更新を取得するために内部ミラーを更新するときに、アノテーションの値を更新する必要があります。
次のステップ
Hosted Control Plane の非接続インストールのために multicluster engine Operator をデプロイする の手順を実行して、multicluster engine Operator をデプロイします。
6.3.10. AgentServiceConfig リソースのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
AgentServiceConfig
カスタムリソースは、multicluster engine Operator の一部である Assisted Service アドオンの重要なコンポーネントです。このリソースはベアメタルクラスターをデプロイします。アドオンが有効な場合に、AgentServiceConfig
リソースをデプロイしてアドオンを設定します。
AgentServiceConfig
リソースの設定に加えて、multicluster engine Operator が非接続環境で適切に機能するように、追加の config map を含める必要があります。
手順
次の config map を追加してカスタムレジストリーを設定します。これには、デプロイメントをカスタマイズするための非接続環境の情報が含まれています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
dns.base.domain.name
は DNS ベースドメイン名に置き換えます。
オブジェクトには、以下の 2 つのフィールドが含まれます。
- カスタム CA: このフィールドには、デプロイメントのさまざまなプロセスに読み込まれる認証局 (CA) が含まれます。
-
レジストリー:
Registries.conf
フィールドには、元のソースレジストリーではなくミラーレジストリーから使用する必要があるイメージと namespace に関する情報が含まれています。
次の例に示すように、
AssistedServiceConfig
オブジェクトを追加して、Assisted Service を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
metadata.annotations["unsupported.agent-install.openshift.io/assisted-service-configmap"]
アノテーションは、Operator が動作をカスタマイズするために使用する config map 名を参照します。- 2
spec.mirrorRegistryRef.name
アノテーションは、Assisted Service Operator が使用する非接続のレジストリー情報を含む config map を指します。この config map は、デプロイメントプロセス中にこれらのリソースを追加します。- 3
spec.osImages
フィールドには、この Operator がデプロイできるさまざまなバージョンが含まれています。このフィールドは必須です。この例では、RootFS
ファイルとLiveISO
ファイルがすでにダウンロードされていることを前提としています。- 4
- デプロイする OpenShift Container Platform リリースごとに
cpuArchitecture
サブセクションを追加します。この例では、4.14 および 4.15 のcpuArchitecture
サブセクションが含まれています。 - 5
rootFSUrl フィールド
とurl
フィールドで、dns.base.domain.name
を DNS ベースドメイン名に置き換えます。
すべてのオブジェクトを 1 つのファイルに連結し、管理クラスターに適用し、これらのオブジェクトをデプロイします。起動するには、以下のコマンドを実行します。
oc apply -f agentServiceConfig.yaml
$ oc apply -f agentServiceConfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは 2 つの Pod をトリガーします。
出力例
assisted-image-service-0 1/1 Running 2 11d assisted-service-668b49548-9m7xw 2/2 Running 5 11d
assisted-image-service-0 1/1 Running 2 11d
1 assisted-service-668b49548-9m7xw 2/2 Running 5 11d
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
TLS 証明書を設定します。
6.3.11. Hosted Control Plane の非接続インストールのために TLS 証明書を設定する リンクのコピーリンクがクリップボードにコピーされました!
非接続デプロイメントで適切な機能を確保するには、管理クラスターとホステッドクラスターのワーカーノードでレジストリー CA 証明書を設定する必要があります。
6.3.11.1. 管理クラスターにレジストリー CA を追加する リンクのコピーリンクがクリップボードにコピーされました!
管理クラスターにレジストリー CA を追加するには、次の手順を実行します。
手順
次の例のような config map を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター全体のオブジェクト
image.config.openshift.io
にパッチを適用して、次の仕様を含めます。spec: additionalTrustedCA: - name: registry-config
spec: additionalTrustedCA: - name: registry-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このパッチの結果、コントロールプレーンノードがプライベートレジストリーからイメージを取得できるようになります。また、HyperShift Operator がホステッドクラスターのデプロイメント用の OpenShift Container Platform ペイロードを抽出できるようになります。
オブジェクトにパッチを適用するプロセスが完了するまでに数分かかる場合があります。
6.3.11.2. ホステッドクラスターのワーカーノードにレジストリー CA を追加する リンクのコピーリンクがクリップボードにコピーされました!
ホステッドクラスターのデータプレーンワーカーがプライベートレジストリーからイメージを取得できるようにするために、ワーカーノードにレジストリー CA を追加する必要があります。
手順
hc.spec.additionalTrustBundle
ファイルに次の仕様を追加します。spec: additionalTrustBundle: - name: user-ca-bundle
spec: additionalTrustBundle: - name: user-ca-bundle
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
user-ca-bundle
エントリーは、次の手順で作成する config map です。
HostedCluster
オブジェクトの作成先と同じ namespace で、user-ca-bundle
config map を作成します。config map は次の例のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
HostedCluster
オブジェクトの作成先の namespace を指定します。
6.3.12. ベアメタルでのホステッドクラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
ホステッドクラスターは、コントロールプレーンと API エンドポイントが管理クラスターでホストされている OpenShift Container Platform クラスターです。ホステッドクラスターには、コントロールプレーンとそれに対応するデータプレーンが含まれます。
6.3.12.1. ホステッドクラスターオブジェクトのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
通常、HyperShift Operator は HostedControlPlane
namespace を作成します。ただし、この場合は、HyperShift Operator が HostedCluster
オブジェクトの調整を開始する前に、すべてのオブジェクトを含める必要があります。その後、Operator がリコンシリエーションプロセスを開始すると、所定の場所にあるすべてのオブジェクトを見つけることができます。
手順
namespace に関する次の情報を含めて、YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow config map とシークレットに関する次の情報を含む YAML ファイルを作成し、
HostedCluster
デプロイメントに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow RBAC ロールを含む YAML ファイルを作成し、Assisted Service エージェントが Hosted Control Plane と同じ
HostedControlPlane
namespace に配置し、引き続きクラスター API で管理されるようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow HostedCluster
オブジェクトに関する情報を含む YAML ファイルを作成し、必要に応じて値を置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 7 9 12 13
<hosted_cluster_name>
は、ホステッドクラスターに置き換えます。- 2 8
<hosted_cluster_namespace>
は、ホステッドクラスターの namespace の名前に置き換えます。- 3
imageContentSources
セクションには、ホステッドクラスター内のユーザーワークロードのミラー参照が含まれます。- 4 5 6 10
<dns.base.domain.name>
は、DNS ベースドメイン名に置き換えます。- 11
<4.x.y>
は、使用するサポート対象の OpenShift Container Platform バージョンに置き換えます。
OpenShift Container Platform リリースの HyperShift Operator リリースを指すアノテーションを
HostedCluster
オブジェクトに追加します。次のコマンドを入力して、イメージペイロードを取得します。
oc adm release info \ registry.<dns.base.domain.name>:5000/openshift-release-dev/ocp-release:<4.x.y>-x86_64 \ | grep hypershift
$ oc adm release info \ registry.<dns.base.domain.name>:5000/openshift-release-dev/ocp-release:<4.x.y>-x86_64 \ | grep hypershift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この場合の
<dns.base.domain.name>
は DNS ベースドメイン名で、<4.x.y>
は使用するサポート対象の OpenShift Container Platform バージョンです。出力例
hypershift sha256:31149e3e5f8c5e5b5b100ff2d89975cf5f7a73801b2c06c639bf6648766117f8
hypershift sha256:31149e3e5f8c5e5b5b100ff2d89975cf5f7a73801b2c06c639bf6648766117f8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform Images namespace を使用して、次のコマンドを入力してダイジェストを確認します。
podman pull registry.<dns.base.domain.name>:5000/openshift-release-dev/ocp-v4.0-art-dev@sha256:31149e3e5f8c5e5b5b100ff2d89975cf5f7a73801b2c06c639bf6648766117f8
podman pull registry.<dns.base.domain.name>:5000/openshift-release-dev/ocp-v4.0-art-dev@sha256:31149e3e5f8c5e5b5b100ff2d89975cf5f7a73801b2c06c639bf6648766117f8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dns.base.domain.name
は DNS ベースドメイン名です。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HostedCluster
オブジェクトに設定するリリースイメージでは、タグではなくダイジェストを使用する必要があります (例:quay.io/openshift-release-dev/ocp-release@sha256:e3ba11bd1e5e8ea5a0b36a75791c90f29afb0fdbe4125be4e48f69c76a5c47a0
)。
YAML ファイルで定義したすべてのオブジェクトを 1 つのファイルに連結し、管理クラスターに対して適用して作成します。起動するには、以下のコマンドを実行します。
oc apply -f 01-4.14-hosted_cluster-nodeport.yaml
$ oc apply -f 01-4.14-hosted_cluster-nodeport.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホステッドクラスターが利用可能な場合、出力は次の例のようになります。
出力例
NAMESPACE NAME VERSION KUBECONFIG PROGRESS AVAILABLE PROGRESSING MESSAGE clusters hosted-dual hosted-admin-kubeconfig Partial True False The hosted control plane is available
NAMESPACE NAME VERSION KUBECONFIG PROGRESS AVAILABLE PROGRESSING MESSAGE clusters hosted-dual hosted-admin-kubeconfig Partial True False The hosted control plane is available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.12.2. ホステッドクラスターの NodePool オブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
NodePool
は、ホステッドクラスターに関連付けられたスケーラブルなワーカーノードのセットです。NodePool
マシンアーキテクチャーは特定のプール内で一貫性を保ち、コントロールプレーンのマシンアーキテクチャーから独立しています。
手順
NodePool
オブジェクトに関する次の情報を含む YAML ファイルを作成し、必要に応じて値を置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<hosted_cluster_name>
は、ホステッドクラスターに置き換えます。- 2
<hosted_cluster_namespace>
は、ホステッドクラスターの namespace の名前に置き換えます。- 3
- ノードが削除された場合、ノードは再作成されないため、
autoRepair
フィールドはfalse
に設定されます。 - 4
upgradeType
はInPlace
に設定されます。これは、アップグレード中に同じベアメタルノードが再利用されることを示します。- 5
- この
NodePool
に含まれるすべてのノードは、OpenShift Container Platform バージョン4.x.y-x86_64
に基づいています。<dns.base.domain.name>
の値は、DNS ベースドメイン名に置き換えます。4.x.y
の値は、使用するサポート対象の OpenShift Container Platform のバージョンに置き換えます。 - 6
replicas
の値を2
に設定すると、ホステッドクラスターに 2 つのノードプールレプリカを作成できます。
次のコマンドを入力して、
NodePool
オブジェクトを作成します。oc apply -f 02-nodepool.yaml
$ oc apply -f 02-nodepool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters hosted-dual hosted 0 False False 4.x.y-x86_64
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters hosted-dual hosted 0 False False 4.x.y-x86_64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.12.3. ホステッドクラスターの InfraEnv リソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
InfraEnv
リソースは、pullSecretRef
や sshAuthorizedKey
などの重要な詳細を含む Assisted Service オブジェクトです。これらの詳細は、ホステッドクラスター用にカスタマイズされた Red Hat Enterprise Linux CoreOS (RHCOS) ブートイメージを作成するために使用されます。
複数の InfraEnv
リソースをホストすることができます。各リソースは特定のタイプのホストを採用できます。たとえば、大きな RAM 容量を持つホスト間でサーバーファームを分割することができます。
手順
InfraEnv
リソースに関する次の情報を含めて YAML ファイルを作成し、必要に応じて値を置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
InfraEnv
リソースを作成します。oc apply -f 03-infraenv.yaml
$ oc apply -f 03-infraenv.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME ISO CREATED AT clusters-hosted-dual hosted 2023-09-11T15:14:10Z
NAMESPACE NAME ISO CREATED AT clusters-hosted-dual hosted 2023-09-11T15:14:10Z
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.12.4. ホステッドクラスターのベアメタルホスト作成 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルホスト は、物理的な詳細と論理詳細を含む openshift-machine-api
オブジェクトで、Metal3 Operator によって識別できるようになっています。これらの詳細は、agents と呼ばれる他の Assisted Service オブジェクトに関連付けられています。
前提条件
- ベアメタルホストと宛先ノードを作成する前に、宛先マシンを準備しておく必要があります。
- クラスターで使用するために、ベアメタルインフラストラクチャーに Red Hat Enterprise Linux CoreOS (RHCOS) コンピュートマシンをインストールした。
手順
ベアメタルホストを作成するには、以下の手順を実行します。
次の情報を含む YAML ファイルを作成します。ベアメタルホストに関して入力する詳細情報については、「BMO を使用して、ユーザーがプロビジョニングしたクラスターで新しいホストをプロビジョニングする」を参照してください。
ベアメタルホストの認証情報を保持するシークレットが 1 つ以上あるため、ワーカーノードごとに少なくとも 2 つのオブジェクトを作成する必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<hosted_cluster_name>
は、ホステッドクラスターに置き換えます。- 2 5
<hosted_cluster_name>
は、ホステッドクラスターに置き換えます。<hosted_cluster_namespace>
は、ホステッドクラスターの namespace の名前に置き換えます。- 3
- Baseboard Management Controller (BMC) のパスワードを Base64 形式で指定します。
- 4
- BMC のユーザー名を Base64 形式で指定します。
- 6
<hosted_cluster_name>
は、ホステッドクラスターに置き換えます。infraenvs.agent-install.openshift.io
フィールドは、Assisted Installer とBareMetalHost
オブジェクト間のリンクとして機能します。- 7
<hosted_cluster_name>
は、ホステッドクラスターに置き換えます。bmac.agent-install.openshift.io/hostname
フィールドは、デプロイ時に採用されるノード名を表します。- 8
automatedCleaningMode
フィールドは、Metal3 Operator によってノードが消去されるのを防ぎます。- 9
disableCertificateVerification
フィールドをtrue
に設定して、クライアントからの証明書検証を回避します。- 10
<hosted_cluster_name>
は、ホステッドクラスターに置き換えます。address
フィールドは、ワーカーノードの BMC アドレスを示します。- 11
<hosted_cluster_name>
は、ホステッドクラスターに置き換えます。credentialsName
フィールドは、ユーザーとパスワードの認証情報が保存されるシークレットを指します。- 12
bootMACAddress
フィールドは、ノードの起動元のインターフェイス MAC アドレスを示します。- 13
online
フィールドは、BareMetalHost
オブジェクトが作成された後のノードの状態を定義します。
次のコマンドを入力して、
BareMetalHost
オブジェクトをデプロイします。oc apply -f 04-bmh.yaml
$ oc apply -f 04-bmh.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロセス中に、次の出力が確認できます。
この出力は、プロセスがノードに到達しようとしていることを示しています。
出力例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 registering true 2s clusters-hosted hosted-worker1 registering true 2s clusters-hosted hosted-worker2 registering true 2s
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 registering true 2s clusters-hosted hosted-worker1 registering true 2s clusters-hosted hosted-worker2 registering true 2s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この出力は、ノードが起動していることを示しています。
出力例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 provisioning true 16s clusters-hosted hosted-worker1 provisioning true 16s clusters-hosted hosted-worker2 provisioning true 16s
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 provisioning true 16s clusters-hosted hosted-worker1 provisioning true 16s clusters-hosted hosted-worker2 provisioning true 16s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この出力は、ノードが正常に起動したことを示しています。
出力例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 provisioned true 67s clusters-hosted hosted-worker1 provisioned true 67s clusters-hosted hosted-worker2 provisioned true 67s
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 provisioned true 67s clusters-hosted hosted-worker1 provisioned true 67s clusters-hosted hosted-worker2 provisioned true 67s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ノードが起動したら、次の例に示すように、namespace のエージェントに注目してください。
出力例
NAMESPACE NAME CLUSTER APPROVED ROLE STAGE clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0411 true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0412 true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0413 true auto-assign
NAMESPACE NAME CLUSTER APPROVED ROLE STAGE clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0411 true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0412 true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0413 true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エージェントは、インストールに使用できるノードを表します。ホステッドクラスターにノードを割り当てるには、ノードプールをスケールアップします。
6.3.12.5. ノードプールのスケールアップ リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルホストを作成すると、そのステータスが Registering
Provisioning
、Provisioned
に変わります。ノードは、エージェントの LiveISO
と、agent
という名前のデフォルトの Pod で始まります。このエージェントは、Assisted Service Operator から OpenShift Container Platform ペイロードをインストールする指示を受け取ります。
手順
ノードプールをスケールアップするには、次のコマンドを入力します。
oc -n <hosted_cluster_namespace> scale nodepool <hosted_cluster_name> \ --replicas 3
$ oc -n <hosted_cluster_namespace> scale nodepool <hosted_cluster_name> \ --replicas 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
-
<hosted_cluster_namespace>
は、ホステッドクラスターの namespace の名前です。 -
<hosted_cluster_name>
は、ホステッドクラスターの名前です。
-
スケーリングプロセスが完了すると、エージェントがホステッドクラスターに割り当てられていることがわかります。
出力例
NAMESPACE NAME CLUSTER APPROVED ROLE STAGE clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0411 hosted true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0412 hosted true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0413 hosted true auto-assign
NAMESPACE NAME CLUSTER APPROVED ROLE STAGE clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0411 hosted true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0412 hosted true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0413 hosted true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow また、ノードプールレプリカが設定されていることにも注意してください。
出力例
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters hosted hosted 3 False False <4.x.y>-x86_64 Minimum availability requires 3 replicas, current 0 available
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters hosted hosted 3 False False <4.x.y>-x86_64 Minimum availability requires 3 replicas, current 0 available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <4.x.y>
は、使用するサポート対象の OpenShift Container Platform バージョンに置き換えます。- ノードがクラスターに参加するまで待ちます。プロセス中に、エージェントはステージとステータスに関する最新情報を提供します。