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.0 1 spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.9.0-x86_64 2
マネージドクラスターの
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: Opaque
Image 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: false 1
- 1
true
に設定すると KlusterletAddonConfig が有効になり、false
に設定すると KlusterletAddonConfig が無効になります。searchCollector
を無効にした状態に維持します。
ManagedCluster
カスタムリソースを作成します。apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: <cluster_name> spec: hubAcceptsClient: true
InfraEnv
カスタムリソースを作成します。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-secret
BareMetalHost
カスタムリソースを作成します。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 managedcluster
True
はマネージドクラスターの準備が整っていることを示します。エージェントのステータスを確認します。
$ 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 2d19h
AVAILABLE
列のステータスがTrue
の場合、マネージドクラスターはハブによって管理されます。AVAILABLE
列のステータスがUnknown
の場合、マネージドクラスターはハブによって管理されていません。その他の情報を取得するには、以下の手順を使用します。AgentClusterInstall
インストールのステータスを確認します。$ oc get clusterdeployment -n <cluster_name>
出力例
NAME PLATFORM REGION CLUSTERTYPE INSTALLED INFRAID VERSION POWERSTATE AGE Sno0026 agent-baremetal false Initialized 2d14h
INSTALLED
列のステータスがfalse
の場合、インストールは失敗していました。インストールが失敗した場合は、以下のコマンドを実行して
AgentClusterInstall
リソースのステータスを確認します。$ oc describe agentclusterinstall -n <cluster_name> <cluster_name>
エラーを解決し、クラスターをリセットします。
クラスターのマネージドクラスターリソースを削除します。
$ oc delete managedcluster <cluster_name>
クラスターの namespace を削除します。
$ oc delete namespace <cluster_name>
これにより、このクラスター用に作成された namespace スコープのカスタムリソースがすべて削除されます。続行する前に、
ManagedCluster
CR の削除が完了するのを待つ必要があります。- マネージドクラスターのカスタムリソースを再作成します。