2.7. SiteConfig の高度なトピック
SiteConfig オペレーターは、カスタムテンプレートの作成やワーカーノードのスケーリングなど、追加の機能を提供します。これは、ほとんどのユースケースに適用される標準操作を拡張します。SiteConfig Operator の高度なトピックは、以下のドキュメントを参照してください。
2.7.1. SiteConfig Operator を使用してカスタムテンプレートを作成する
デフォルトのテンプレートセットに用意されていないユーザー定義テンプレートを作成します。
必要なアクセス権: クラスター管理者
カスタムテンプレートを作成するには、次の手順を実行します。
ConfigMap
オブジェクトにクラスターレベルのテンプレートが含まれる YAML ファイルを、my-custom-secret.yaml
という名前で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: ConfigMap metadata: name: my-custom-secret namespace: rhacm data: MySecret: |- apiVersion: v1 kind: Secret metadata: name: "{{ .Spec.ClusterName }}-my-custom-secret-key" namespace: "clusters" annotations: siteconfig.open-cluster-management.io/sync-wave: "1" type: Opaque data: key: <key>
apiVersion: v1 kind: ConfigMap metadata: name: my-custom-secret namespace: rhacm data: MySecret: |- apiVersion: v1 kind: Secret metadata: name: "{{ .Spec.ClusterName }}-my-custom-secret-key" namespace: "clusters" annotations: siteconfig.open-cluster-management.io/sync-wave: "1"
1 type: Opaque data: key: <key>
- 1
siteconfig.open-cluster-management.io/sync-wave
アノテーションは、マニフェストが作成、更新、または削除される順序を制御します。
次のコマンドを実行して、ハブクラスターにカスタムテンプレートを適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f my-custom-secret.yaml
oc apply -f my-custom-secret.yaml
clusterinstance-my-custom-secret.yaml
という名前のClusterInstance
カスタムリソースでテンプレートを参照します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec: ... templateRefs: - name: ai-cluster-templates-v1.yaml namespace: rhacm - name: my-custom-secret.yaml namespace: rhacm ...
spec: ... templateRefs: - name: ai-cluster-templates-v1.yaml namespace: rhacm - name: my-custom-secret.yaml namespace: rhacm ...
次のコマンドを実行して、
ClusterInstance
カスタムリソースを適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f clusterinstance-my-custom-secret.yaml
oc apply -f clusterinstance-my-custom-secret.yaml
2.7.2. SiteConfig Operator を使用してシングルノード OpenShift クラスターをスケーリングする
SiteConfig Operator によってインストールされたマネージドクラスターをスケールインします。ワーカーノードを削除することでクラスターをスケールインできます。
必要なアクセス権: クラスター管理者
2.7.2.1. 前提条件
- GitOps ZTP を使用している場合は、GitOps ZTP 環境が設定されている。環境を設定するには、GitOps ZTP 用のハブクラスターの準備 を参照してください。
- デフォルトテンプレートがある。デフォルトテンプレートの詳細は、デフォルトのテンプレートセット を参照してください。
- SiteConfig Operator を使用してクラスターをインストールした。SiteConfig Operator を使用してクラスターをインストールするには、SiteConfig Operator を使用してシングルノード OpenShift クラスターをインストールする を参照してください。
2.7.2.2. ワーカーノードにアノテーションを追加する
削除するワーカーノードにアノテーションを追加します。
マネージドクラスターからワーカーノードにアノテーションを付けるには、次の手順を実行します。
クラスターのプロビジョニングに使用される
ClusterInstance
カスタムリソースのワーカーノードエントリーのextraAnnotations
フィールドに、アノテーションを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec: ... nodes: - hostName: "worker-node2.example.com" role: "worker" ironicInspect: "" extraAnnotations: BareMetalHost: bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: "true" ...
spec: ... nodes: - hostName: "worker-node2.example.com" role: "worker" ironicInspect: "" extraAnnotations: BareMetalHost: bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: "true" ...
変更を適用します。以下のオプションを参照してください。
- Red Hat OpenShift GitOps を使用せずに Red Hat Advanced Cluster Management を使用している場合は、ハブクラスターで次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <clusterinstance>.yaml
oc apply -f <clusterinstance>.yaml
- GitOps ZTP を使用している場合は、Git リポジトリーにプッシュし、Argo CD が変更を同期するのを待ちます。
ハブクラスターで次のコマンドを実行して、アノテーションが
BaremetalHost
ワーカーリソースに適用されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get bmh -n <clusterinstance_namespace> worker-node2.example.com -ojsonpath='{.metadata.annotations}' | jq
oc get bmh -n <clusterinstance_namespace> worker-node2.example.com -ojsonpath='{.metadata.annotations}' | jq
アノテーションが正常に適用された場合の出力例を次に示します。
{ "baremetalhost.metal3.io/detached": "assisted-service-controller", "bmac.agent-install.openshift.io/hostname": "worker-node2.example.com", "bmac.agent-install.openshift.io/remove-agent-and-node-on-delete": "true" "bmac.agent-install.openshift.io/role": "master", "inspect.metal3.io": "disabled", "siteconfig.open-cluster-management.io/sync-wave": "1", }
{
"baremetalhost.metal3.io/detached": "assisted-service-controller",
"bmac.agent-install.openshift.io/hostname": "worker-node2.example.com",
"bmac.agent-install.openshift.io/remove-agent-and-node-on-delete": "true"
"bmac.agent-install.openshift.io/role": "master",
"inspect.metal3.io": "disabled",
"siteconfig.open-cluster-management.io/sync-wave": "1",
}
2.7.2.3. ワーカーノードの BareMetalHost
リソースを削除する
削除するワーカーノードの BareMetalHost
リソースを削除します。
マネージドクラスターからワーカーノードを削除するには、次の手順を実行します。
既存の
ClusterInstance
カスタムリソースで削除するノードオブジェクトを、次の設定で更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... spec: ... nodes: - hostName: "worker-node2.example.com" ... pruneManifests: - apiVersion: metal3.io/v1alpha1 kind: BareMetalHost ...
... spec: ... nodes: - hostName: "worker-node2.example.com" ... pruneManifests: - apiVersion: metal3.io/v1alpha1 kind: BareMetalHost ...
変更を適用します。以下のオプションを参照してください。
- Red Hat OpenShift GitOps を使用せずに Red Hat Advanced Cluster Management を使用している場合は、ハブクラスターで次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <clusterinstance>.yaml
oc apply -f <clusterinstance>.yaml
- GitOps ZTP を使用している場合は、Git リポジトリーにプッシュし、Argo CD が変更を同期するのを待ちます。
ハブクラスターで次のコマンドを実行して、
BareMetalHost
リソースが削除されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get bmh -n <clusterinstance_namespace> --watch --kubeconfig <hub_cluster_kubeconfig_filename>
oc get bmh -n <clusterinstance_namespace> --watch --kubeconfig <hub_cluster_kubeconfig_filename>
以下の出力例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME STATE CONSUMER ONLINE ERROR AGE master-node1.example.com provisioned true 81m worker-node2.example.com deprovisioning true 44m worker-node2.example.com powering off before delete true 20h worker-node2.example.com deleting true 50m
NAME STATE CONSUMER ONLINE ERROR AGE master-node1.example.com provisioned true 81m worker-node2.example.com deprovisioning true 44m worker-node2.example.com powering off before delete true 20h worker-node2.example.com deleting true 50m
ハブクラスターで次のコマンドを実行して、
Agent
リソースが削除されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get agents -n <clusterinstance_namespace> --kubeconfig <hub_cluster_kubeconfig_filename>
oc get agents -n <clusterinstance_namespace> --kubeconfig <hub_cluster_kubeconfig_filename>
以下の出力例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME CLUSTER APPROVED ROLE STAGE master-node1.example.com <managed_cluster_name> true master Done master-node2.example.com <managed_cluster_name> true master Done master-node3.example.com <managed_cluster_name> true master Done worker-node1.example.com <managed_cluster_name> true worker Done
NAME CLUSTER APPROVED ROLE STAGE master-node1.example.com <managed_cluster_name> true master Done master-node2.example.com <managed_cluster_name> true master Done master-node3.example.com <managed_cluster_name> true master Done worker-node1.example.com <managed_cluster_name> true worker Done
マネージドクラスターで次のコマンドを実行して、
Node
リソースが削除されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get nodes --kubeconfig <managed_cluster_kubeconfig_filename>
oc get nodes --kubeconfig <managed_cluster_kubeconfig_filename>
以下の出力例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME STATUS ROLES AGE VERSION worker-node2.example.com NotReady,SchedulingDisabled worker 19h v1.30.5 worker-node1.example.com Ready worker 19h v1.30.5 master-node1.example.com Ready control-plane,master 19h v1.30.5 master-node2.example.com Ready control-plane,master 19h v1.30.5 master-node3.example.com Ready control-plane,master 19h v1.30.5
NAME STATUS ROLES AGE VERSION worker-node2.example.com NotReady,SchedulingDisabled worker 19h v1.30.5 worker-node1.example.com Ready worker 19h v1.30.5 master-node1.example.com Ready control-plane,master 19h v1.30.5 master-node2.example.com Ready control-plane,master 19h v1.30.5 master-node3.example.com Ready control-plane,master 19h v1.30.5
-
ワーカーノードの
BareMetalHost
オブジェクトが正常に削除されたら、ClusterInstance
リソースのspec.nodes
セクションから、関連付けられたワーカーノード定義を削除します。
2.7.3. SiteConfig Operator を使用してシングルノードの OpenShift クラスターをスケールアウトする
SiteConfig Operator でインストールされたマネージドクラスターをスケールアウトします。ワーカーノードを追加することでクラスターをスケールアウトできます。
必要なアクセス権: クラスター管理者
2.7.3.1. 前提条件
- GitOps ZTP を使用している場合は、GitOps ZTP 環境を設定しておきます。環境を設定するには、GitOps ZTP 用のハブクラスターの準備 を参照してください。
- デフォルトのインストールテンプレートが必要です。デフォルトテンプレートの詳細は、デフォルトのテンプレートセット を参照してください。
- SiteConfig Operator を使用してクラスターをインストールした。SiteConfig Operator を使用してクラスターをインストールするには、SiteConfig Operator を使用してシングルノード OpenShift クラスターをインストールする を参照してください。
2.7.3.2. ワーカーノードを追加する
クラスターのプロビジョニングに使用される ClusterInstance
カスタムリソースを更新して、ワーカーノードを追加します。
マネージドクラスターにワーカーノードを追加するには、次の手順を実行します。
既存の
ClusterInstance
カスタムリソースに新しいノードオブジェクトを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec: ... nodes: - hostName: "<host_name>" role: "worker" templateRefs: - name: ai-node-templates-v1 namespace: rhacm bmcAddress: "<bmc_address>" bmcCredentialsName: name: "<bmc_credentials_name>" bootMACAddress: "<boot_mac_address>" ...
spec: ... nodes: - hostName: "<host_name>" role: "worker" templateRefs: - name: ai-node-templates-v1 namespace: rhacm bmcAddress: "<bmc_address>" bmcCredentialsName: name: "<bmc_credentials_name>" bootMACAddress: "<boot_mac_address>" ...
変更を適用します。以下のオプションを参照してください。
- Red Hat OpenShift GitOps を使用せずに Red Hat Advanced Cluster Management を使用している場合は、ハブクラスターで次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <clusterinstance>.yaml
oc apply -f <clusterinstance>.yaml
- GitOps ZTP を使用している場合は、Git リポジトリーにプッシュし、Argo CD が変更を同期するのを待ちます。
ハブクラスターで次のコマンドを実行して、新しい
BareMetalHost
リソースが追加されたことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get bmh -n <clusterinstance_namespace> --watch --kubeconfig <hub_cluster_kubeconfig_filename>
oc get bmh -n <clusterinstance_namespace> --watch --kubeconfig <hub_cluster_kubeconfig_filename>
以下の出力例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME STATE CONSUMER ONLINE ERROR AGE master-node1.example.com provisioned true 81m worker-node2.example.com provisioning true 44m
NAME STATE CONSUMER ONLINE ERROR AGE master-node1.example.com provisioned true 81m worker-node2.example.com provisioning true 44m
ハブクラスターで次のコマンドを実行して、新しい
Agent
リソースが追加されたことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get agents -n <clusterinstance_namespace> --kubeconfig <hub_cluster_kubeconfig_filename>
oc get agents -n <clusterinstance_namespace> --kubeconfig <hub_cluster_kubeconfig_filename>
以下の出力例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME CLUSTER APPROVED ROLE STAGE master-node1.example.com <managed_cluster_name> true master Done master-node2.example.com <managed_cluster_name> true master Done master-node3.example.com <managed_cluster_name> true master Done worker-node1.example.com <managed_cluster_name> false worker worker-node2.example.com <managed_cluster_name> true worker Starting installation worker-node2.example.com <managed_cluster_name> true worker Installing worker-node2.example.com <managed_cluster_name> true worker Writing image to disk worker-node2.example.com <managed_cluster_name> true worker Waiting for control plane worker-node2.example.com <managed_cluster_name> true worker Rebooting worker-node2.example.com <managed_cluster_name> true worker Joined worker-node2.example.com <managed_cluster_name> true worker Done
NAME CLUSTER APPROVED ROLE STAGE master-node1.example.com <managed_cluster_name> true master Done master-node2.example.com <managed_cluster_name> true master Done master-node3.example.com <managed_cluster_name> true master Done worker-node1.example.com <managed_cluster_name> false worker worker-node2.example.com <managed_cluster_name> true worker Starting installation worker-node2.example.com <managed_cluster_name> true worker Installing worker-node2.example.com <managed_cluster_name> true worker Writing image to disk worker-node2.example.com <managed_cluster_name> true worker Waiting for control plane worker-node2.example.com <managed_cluster_name> true worker Rebooting worker-node2.example.com <managed_cluster_name> true worker Joined worker-node2.example.com <managed_cluster_name> true worker Done
マネージドクラスターで次のコマンドを実行して、新しい
Node
リソースが追加されたことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get nodes --kubeconfig <managed_cluster_kubeconfig_filename>
oc get nodes --kubeconfig <managed_cluster_kubeconfig_filename>
以下の出力例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME STATUS ROLES AGE VERSION worker-node2.example.com Ready worker 1h v1.30.5 worker-node1.example.com Ready worker 19h v1.30.5 master-node1.example.com Ready control-plane,master 19h v1.30.5 master-node2.example.com Ready control-plane,master 19h v1.30.5 master-node3.example.com Ready control-plane,master 19h v1.30.5
NAME STATUS ROLES AGE VERSION worker-node2.example.com Ready worker 1h v1.30.5 worker-node1.example.com Ready worker 19h v1.30.5 master-node1.example.com Ready control-plane,master 19h v1.30.5 master-node2.example.com Ready control-plane,master 19h v1.30.5 master-node3.example.com Ready control-plane,master 19h v1.30.5
2.7.4. 非接続環境向けのミラーリングイメージ
イメージベースのインストール Operator を基礎となる Operator として使用することで、SiteConfig Operator でクラスターをデプロイできます。非接続環境で Image Based Install Operator を使用してクラスターをデプロイする場合は、ミラーイメージを ClusterInstance
カスタムリソースの追加マニフェストとして提供する必要があります。
必要なアクセス権: クラスター管理者
非接続環境のイメージをミラーリングするには、次の手順を実行します。
ミラーレジストリーの場所を含む
ImageDigestMirrorSet
オブジェクト用に、idms-configmap.yaml
という名前の YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kind: ConfigMap apiVersion: v1 metadata: name: "idms-configmap" namespace: "example-sno" data: 99-example-idms.yaml: | apiVersion: config.openshift.io/v1 kind: ImageDigestMirrorSet metadata: name: example-idms spec: imageDigestMirrors: - mirrors: - mirror.registry.example.com/image-repo/image source: registry.example.com/image-repo/image
kind: ConfigMap apiVersion: v1 metadata: name: "idms-configmap" namespace: "example-sno" data: 99-example-idms.yaml: | apiVersion: config.openshift.io/v1 kind: ImageDigestMirrorSet metadata: name: example-idms spec: imageDigestMirrors: - mirrors: - mirror.registry.example.com/image-repo/image source: registry.example.com/image-repo/image
重要: ClusterInstance
リソースと同じ namespace に追加のマニフェストを含む ConfigMap
リソースを定義します。
ハブクラスターで次のコマンドを実行してリソースを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f idms-configmap.yaml
oc apply -f idms-configmap.yaml
ClusterInstance
カスタムリソース内のImageDigestMirrorSet
オブジェクトを参照します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: siteconfig.open-cluster-management.io/v1alpha1 kind: ClusterInstance metadata: name: "example-sno" namespace: "example-sno" spec: ... extraManifestsRefs: - name: idms-configmap ...
apiVersion: siteconfig.open-cluster-management.io/v1alpha1 kind: ClusterInstance metadata: name: "example-sno" namespace: "example-sno" spec: ... extraManifestsRefs: - name: idms-configmap ...