19.13. 単一のマネージドクラスターをインストールするためのカスタムリソースの作成
この手順では、単一のマネージドクラスターを手動で作成してデプロイする方法を説明します。複数のクラスター (数百など) を作成する場合は、複数のマネージドクラスターの ZTP カスタムリソースの作成で説明されている SiteConfig メソッドを使用します。
前提条件
- Assisted Installer サービスを有効にします。
ネットワーク接続を確認します。
- ハブ内のコンテナーは、ターゲットのベアメタルホストの Baseboard Management Controller (BMC) アドレスに到達できる必要があります。
マネージドクラスターは、ハブの API
hostnameおよび*.appホスト名を解決し、到達できる必要があります。ハブの API および*.appホスト名の例:console-openshift-console.apps.hub-cluster.internal.domain.com api.hub-cluster.internal.domain.comハブは、マネージドクラスターの API および
*.appホスト名を解決して到達できる必要があります。以下は、マネージドクラスターの API および*.appホスト名の例です。console-openshift-console.apps.sno-managed-cluster-1.internal.domain.com api.sno-managed-cluster-1.internal.domain.com- ターゲットのベアメタルホストから IP 到達可能な DNS サーバー。
以下のハードウェアの最小要件を備えた、マネージドクラスターのターゲットベアメタルホスト:
- 4 CPU または 8 vCPU
- 32 GiB RAM
- ルートファイルシステムの 120 GiB ディスク
非接続環境で作業する場合は、リリースイメージをミラーリングする必要があります。以下のコマンドを使用して、リリースイメージをミラーリングします。
oc adm release mirror -a <pull_secret.json> --from=quay.io/openshift-release-dev/ocp-release:{{ mirror_version_spoke_release }} --to={{ provisioner_cluster_registry }}/ocp4 --to-release-image={{ provisioner_cluster_registry }}/ocp4:{{ mirror_version_spoke_release }}スポーククラスター ISO を生成するために使用される ISO および
rootfsを HTTP サーバーにミラーリングし、そこからイメージをプルできるように設定を設定している。イメージは、
ClusterImageSetのバージョンと一致する必要があります。4.9.0 バージョンをデプロイするには、rootfsおよび ISO を 4.9.0 に設定する必要があります。
手順
デプロイが必要な特定のクラスターバージョンごとに
ClusterImageSetを作成します。ClusterImageSetのフォーマットは以下のとおりです。apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: openshift-4.9.0-rc.01 spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.9.0-x86_642 マネージドクラスターの
namespace定義を作成します。apiVersion: v1 kind: Namespace metadata: name: <cluster_name>1 labels: name: <cluster_name>2 BMC Secretカスタムリソースを作成します。apiVersion: v1 data: password: <bmc_password>1 username: <bmc_username>2 kind: Secret metadata: name: <cluster_name>-bmc-secret namespace: <cluster_name> type: OpaqueImage Pull Secretカスタムリソースを作成します。apiVersion: v1 data: .dockerconfigjson: <pull_secret>1 kind: Secret metadata: name: assisted-deployment-pull-secret namespace: <cluster_name> type: kubernetes.io/dockerconfigjson- 1
- OpenShift Container Platform プルシークレット。base-64 でエンコードされている必要があります。
AgentClusterInstallカスタムリソースを作成します。apiVersion: extensions.hive.openshift.io/v1beta1 kind: AgentClusterInstall metadata: # Only include the annotation if using OVN, otherwise omit the annotation annotations: agent-install.openshift.io/install-config-overrides: '{"networking":{"networkType":"OVNKubernetes"}}' name: <cluster_name> namespace: <cluster_name> spec: clusterDeploymentRef: name: <cluster_name> imageSetRef: name: <cluster_image_set>1 networking: clusterNetwork: - cidr: <cluster_network_cidr>2 hostPrefix: 23 machineNetwork: - cidr: <machine_network_cidr>3 serviceNetwork: - <service_network_cidr>4 provisionRequirements: controlPlaneAgents: 1 workerAgents: 0 sshPublicKey: <public_key>5 - 1
- ベアメタルホストに OpenShift Container Platform をインストールするために使用される ClusterImageSet カスタムリソースの名前。
- 2
- クラスターノード間の通信に使用される CIDR 表記の IPv4 または IPv6 アドレスのブロック。
- 3
- ターゲットのベアメタルホストの外部通信に使用される CIDR 表記の IPv4 または IPv6 アドレスのブロック。DU 単一ノードクラスターをプロビジョニングするときに API および Ingress VIP アドレスを決定するためにも使用されます。
- 4
- クラスターサービスの内部通信に使用される CIDR 表記の IPv4 または IPv6 アドレスのブロック。
- 5
- プレーンテキストとして入力されました。インストールが完了したら、公開鍵を使用してノードに SSH で接続できます。
注記この時点で、マネージドクラスターの静的 IP を設定する場合は、マネージドクラスターの静的 IP アドレスを設定する方法については、本書の手順を参照してください。
ClusterDeploymentカスタムリソースを作成します。apiVersion: hive.openshift.io/v1 kind: ClusterDeployment metadata: name: <cluster_name> namespace: <cluster_name> spec: baseDomain: <base_domain>1 clusterInstallRef: group: extensions.hive.openshift.io kind: AgentClusterInstall name: <cluster_name> version: v1beta1 clusterName: <cluster_name> platform: agentBareMetal: agentSelector: matchLabels: cluster-name: <cluster_name> pullSecretRef: name: assisted-deployment-pull-secret- 1
- マネージドクラスターのベースドメイン。
KlusterletAddonConfigカスタムリソースを作成します。apiVersion: agent.open-cluster-management.io/v1 kind: KlusterletAddonConfig metadata: name: <cluster_name> namespace: <cluster_name> spec: clusterName: <cluster_name> clusterNamespace: <cluster_name> clusterLabels: cloud: auto-detect vendor: auto-detect applicationManager: enabled: true certPolicyController: enabled: false iamPolicyController: enabled: false policyController: enabled: true searchCollector: enabled: false1 - 1
trueに設定すると KlusterletAddonConfig が有効になり、falseに設定すると KlusterletAddonConfig が無効になります。searchCollectorを無効にした状態に維持します。
ManagedClusterカスタムリソースを作成します。apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: <cluster_name> spec: hubAcceptsClient: trueInfraEnvカスタムリソースを作成します。apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv metadata: name: <cluster_name> namespace: <cluster_name> spec: clusterRef: name: <cluster_name> namespace: <cluster_name> sshAuthorizedKey: <public_key>1 agentLabels:2 location: "<label-name>" pullSecretRef: name: assisted-deployment-pull-secretBareMetalHostカスタムリソースを作成します。apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: <cluster_name> namespace: <cluster_name> annotations: inspect.metal3.io: disabled labels: infraenvs.agent-install.openshift.io: "<cluster_name>" spec: bootMode: "UEFI" bmc: address: <bmc_address>1 disableCertificateVerification: true credentialsName: <cluster_name>-bmc-secret bootMACAddress: <mac_address>2 automatedCleaningMode: disabled online: trueオプションで、アノテーションとして
bmac.agent-install.openshift.io/hostname: <host-name>を追加して、マネージドクラスターのホスト名を設定できます。アノテーションを追加しない場合、ホスト名はデフォルトで DHCP サーバーまたはローカルホストのホスト名になります。- カスタムリソースを作成したら、生成されたカスタムリソースのディレクトリー全体を、カスタムリソースを保存するために作成した Git リポジトリーにプッシュします。
次のステップ
追加のクラスターをプロビジョニングするには、それぞれのクラスターについてこの手順を繰り返します。
19.13.1. マネージドクラスターの静的 IP アドレスの設定 リンクのコピーリンクがクリップボードにコピーされました!
オプションで、AgentClusterInstall カスタムリソースの作成後に、マネージドクラスターの静的 IP アドレスを設定できます。
ClusterDeployment カスタムリソースを作成する前に、このカスタムリソースを作成する必要があります。
前提条件
-
AgentClusterInstallカスタムリソースをデプロイして設定します。
手順
NMStateConfigカスタムリソースを作成します。apiVersion: agent-install.openshift.io/v1beta1 kind: NMStateConfig metadata: name: <cluster_name> namespace: <cluster_name> labels: sno-cluster-<cluster-name>: <cluster_name> spec: config: interfaces: - name: eth0 type: ethernet state: up ipv4: enabled: true address: - ip: <ip_address>1 prefix-length: <public_network_prefix>2 dhcp: false dns-resolver: config: server: - <dns_resolver>3 routes: config: - destination: 0.0.0.0/0 next-hop-address: <gateway>4 next-hop-interface: eth0 table-id: 254 interfaces: - name: "eth0"5 macAddress: <mac_address>6 -
BareMetalHostカスタムリソースを作成するときは、その MAC アドレスの 1 つがNMStateConfigターゲットのベアメタルホストの MAC アドレスと一致することを確認してください。 InfraEnvカスタムリソースの作成時に、InfraEnvカスタムリソースのNMStateConfigカスタムリソースからラベル を参照します。apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv metadata: name: <cluster_name> namespace: <cluster_name> spec: clusterRef: name: <cluster_name> namespace: <cluster_name> sshAuthorizedKey: <public_key> agentLabels:1 location: "<label-name>" pullSecretRef: name: assisted-deployment-pull-secret nmStateConfigLabelSelector: matchLabels: sno-cluster-<cluster-name>: <cluster_name> # Match this label- 1
- 一致するラベルを設定します。ラベルは、エージェントの起動時に適用されます。
19.13.2. クラスターをプロビジョニングする自動検出イメージ ISO プロセス リンクのコピーリンクがクリップボードにコピーされました!
カスタムリソースを作成すると、以下のアクションが自動的に行われます。
- Discovery イメージの ISO ファイルが生成され、ターゲットマシンで起動します。
- ターゲットマシンで ISO ファイルが正常に起動すると、ターゲットマシンのハードウェア情報を報告します。
- すべてのホストの検出後に、OpenShift Container Platform がインストールされます。
-
OpenShift Container Platform のインストールが完了すると、ハブは
klusterletサービスをターゲットクラスターにインストールします。 - 要求されたアドオンサービスがターゲットクラスターにインストールされている。
Discovery イメージの ISO プロセスは、マネージドクラスターのハブに Agent カスタムリソースが作成されると終了します。
19.13.3. マネージドクラスターステータスの確認 リンクのコピーリンクがクリップボードにコピーされました!
クラスターのステータスをチェックして、クラスターのプロビジョニングが正常に行われたことを確認します。
前提条件
-
すべてのカスタムリソースが設定およびプロビジョニングされ、プロビジョニングされ、マネージドクラスターのハブで
Agentカスタムリソースが作成されます。
手順
マネージドクラスターのステータスを確認します。
$ oc get managedclusterTrueはマネージドクラスターの準備が整っていることを示します。エージェントのステータスを確認します。
$ oc get agent -n <cluster_name>describeコマンドを使用して、エージェントの条件に関する詳細な説明を指定します。認識できるステータスには、BackendError、InputError、ValidationsFailing、InstallationFailed、およびAgentIsConnectedが含まれます。これらのステータスは、AgentおよびAgentClusterInstallカスタムリソースに関連します。$ oc describe agent -n <cluster_name>クラスターのプロビジョニングのステータスを確認します。
$ oc get agentclusterinstall -n <cluster_name>describeコマンドを使用して、クラスターのプロビジョニングステータスの詳細な説明を指定します。$ oc describe agentclusterinstall -n <cluster_name>マネージドクラスターのアドオンサービスのステータスを確認します。
$ oc get managedclusteraddon -n <cluster_name>マネージドクラスターの
kubeconfigファイルの認証情報を取得します。$ oc get secret -n <cluster_name> <cluster_name>-admin-kubeconfig -o jsonpath={.data.kubeconfig} | base64 -d > <directory>/<cluster_name>-kubeconfig
19.13.4. 非接続環境でのマネージドクラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
前述の手順を完了したら、以下の手順に従って非接続環境でマネージドクラスターを設定します。
前提条件
- Red Hat Advanced Cluster Management (RHACM) 2.3 の非接続インストール。
-
rootfsおよびisoイメージを HTTPD サーバーでホストします。
手順
ミラーレジストリー設定を含む
ConfigMapを作成します。apiVersion: v1 kind: ConfigMap metadata: name: assisted-installer-mirror-config namespace: assisted-installer labels: app: assisted-service data: ca-bundle.crt: <certificate>1 registries.conf: |2 unqualified-search-registries = ["registry.access.redhat.com", "docker.io"] [[registry]] location = <mirror_registry_url>3 insecure = false mirror-by-digest-only = trueこれにより、以下のように
AgentServiceConfigカスタムリソースのmirrorRegistryRefが更新されます。出力例
apiVersion: agent-install.openshift.io/v1beta1 kind: AgentServiceConfig metadata: name: agent namespace: assisted-installer spec: databaseStorage: volumeName: <db_pv_name> accessModes: - ReadWriteOnce resources: requests: storage: <db_storage_size> filesystemStorage: volumeName: <fs_pv_name> accessModes: - ReadWriteOnce resources: requests: storage: <fs_storage_size> mirrorRegistryRef: name: 'assisted-installer-mirror-config' osImages: - openshiftVersion: <ocp_version> rootfs: <rootfs_url>1 url: <iso_url>2 非接続インストールでは、オフラインネットワーク経由で到達可能な NTP クロックをデプロイする必要があります。これは、chrony をサーバーとして機能するように設定する、
/etc/chrony.confファイルを編集し、以下の許可された IPv6 範囲を追加します。# Allow NTP client access from local network. #allow 192.168.0.0/16 local stratum 10 bindcmdaddress :: allow 2620:52:0:1310::/64
19.13.5. 非接続環境での IPv6 アドレスの設定 リンクのコピーリンクがクリップボードにコピーされました!
オプションとして、AgentClusterInstall カスタムリソースを作成する場合、マネージドクラスターの IPv6 アドレスを設定できます。
手順
AgentClusterInstallカスタムリソースで、IPv6 アドレスのclusterNetworkおよびserviceNetworkの IP アドレスを変更します。apiVersion: extensions.hive.openshift.io/v1beta1 kind: AgentClusterInstall metadata: # Only include the annotation if using OVN, otherwise omit the annotation annotations: agent-install.openshift.io/install-config-overrides: '{"networking":{"networkType":"OVNKubernetes"}}' name: <cluster_name> namespace: <cluster_name> spec: clusterDeploymentRef: name: <cluster_name> imageSetRef: name: <cluster_image_set> networking: clusterNetwork: - cidr: "fd01::/48" hostPrefix: 64 machineNetwork: - cidr: <machine_network_cidr> serviceNetwork: - "fd02::/112" provisionRequirements: controlPlaneAgents: 1 workerAgents: 0 sshPublicKey: <public_key>-
定義した IPv6 アドレスを使用して、
NMStateConfigカスタムリソースを更新します。
19.13.6. マネージドクラスターのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、マネージドクラスターで発生する可能性のあるインストール問題を診断します。
手順
マネージドクラスターのステータスを確認します。
$ oc get managedcluster出力例
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE SNO-cluster true True True 2d19hAVAILABLE列のステータスがTrueの場合、マネージドクラスターはハブによって管理されます。AVAILABLE列のステータスがUnknownの場合、マネージドクラスターはハブによって管理されていません。その他の情報を取得するには、以下の手順を使用します。AgentClusterInstallインストールのステータスを確認します。$ oc get clusterdeployment -n <cluster_name>出力例
NAME PLATFORM REGION CLUSTERTYPE INSTALLED INFRAID VERSION POWERSTATE AGE Sno0026 agent-baremetal false Initialized 2d14hINSTALLED列のステータスがfalseの場合、インストールは失敗していました。インストールが失敗した場合は、以下のコマンドを実行して
AgentClusterInstallリソースのステータスを確認します。$ oc describe agentclusterinstall -n <cluster_name> <cluster_name>エラーを解決し、クラスターをリセットします。
クラスターのマネージドクラスターリソースを削除します。
$ oc delete managedcluster <cluster_name>クラスターの namespace を削除します。
$ oc delete namespace <cluster_name>これにより、このクラスター用に作成された namespace スコープのカスタムリソースがすべて削除されます。続行する前に、
ManagedClusterCR の削除が完了するのを待つ必要があります。- マネージドクラスターのカスタムリソースを再作成します。