2.7. SiteConfig の高度なトピック


SiteConfig オペレーターは、カスタムテンプレートの作成やワーカーノードのスケーリングなど、追加の機能を提供します。これは、ほとんどのユースケースに適用される標準操作を拡張します。SiteConfig Operator の高度なトピックは、以下のドキュメントを参照してください。

2.7.1. SiteConfig Operator を使用してカスタムテンプレートを作成する

デフォルトのテンプレートセットに用意されていないユーザー定義テンプレートを作成します。

必要なアクセス権: クラスター管理者

カスタムテンプレートを作成するには、次の手順を実行します。

  1. ConfigMap オブジェクトにクラスターレベルのテンプレートが含まれる YAML ファイルを、my-custom-secret.yaml という名前で作成します。

    Copy to Clipboard Toggle word wrap
    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 アノテーションは、マニフェストが作成、更新、または削除される順序を制御します。
  2. 次のコマンドを実行して、ハブクラスターにカスタムテンプレートを適用します。

    Copy to Clipboard Toggle word wrap
    oc apply -f my-custom-secret.yaml
  3. clusterinstance-my-custom-secret.yaml という名前の ClusterInstance カスタムリソースでテンプレートを参照します。

    Copy to Clipboard Toggle word wrap
    spec:
        ...
      templateRefs:
        - name: ai-cluster-templates-v1.yaml
          namespace: rhacm
        - name: my-custom-secret.yaml
          namespace: rhacm
        ...
  4. 次のコマンドを実行して、ClusterInstance カスタムリソースを適用します。

    Copy to Clipboard Toggle word wrap
    oc apply -f clusterinstance-my-custom-secret.yaml

2.7.2. SiteConfig Operator を使用してシングルノード OpenShift クラスターをスケーリングする

SiteConfig Operator によってインストールされたマネージドクラスターをスケールインします。ワーカーノードを削除することでクラスターをスケールインできます。

必要なアクセス権: クラスター管理者

2.7.2.1. 前提条件

2.7.2.2. ワーカーノードにアノテーションを追加する

削除するワーカーノードにアノテーションを追加します。

マネージドクラスターからワーカーノードにアノテーションを付けるには、次の手順を実行します。

  1. クラスターのプロビジョニングに使用される ClusterInstance カスタムリソースのワーカーノードエントリーの extraAnnotations フィールドに、アノテーションを追加します。

    Copy to Clipboard Toggle word wrap
    spec:
       ...
       nodes:
       - hostName: "worker-node2.example.com"
          role: "worker"
          ironicInspect: ""
          extraAnnotations:
            BareMetalHost:
              bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: "true"
    ...
  2. 変更を適用します。以下のオプションを参照してください。

    1. Red Hat OpenShift GitOps を使用せずに Red Hat Advanced Cluster Management を使用している場合は、ハブクラスターで次のコマンドを実行します。
    Copy to Clipboard Toggle word wrap
    oc apply -f <clusterinstance>.yaml
    1. GitOps ZTP を使用している場合は、Git リポジトリーにプッシュし、Argo CD が変更を同期するのを待ちます。
  3. ハブクラスターで次のコマンドを実行して、アノテーションが BaremetalHost ワーカーリソースに適用されていることを確認します。

    Copy to Clipboard Toggle word wrap
    oc get bmh -n <clusterinstance_namespace> worker-node2.example.com -ojsonpath='{.metadata.annotations}' | jq

    アノテーションが正常に適用された場合の出力例を次に示します。

Copy to Clipboard Toggle word wrap
{
  "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 リソースを削除します。

マネージドクラスターからワーカーノードを削除するには、次の手順を実行します。

  1. 既存の ClusterInstance カスタムリソースで削除するノードオブジェクトを、次の設定で更新します。

    Copy to Clipboard Toggle word wrap
    ...
    spec:
       ...
       nodes:
         - hostName: "worker-node2.example.com"
           ...
           pruneManifests:
             - apiVersion: metal3.io/v1alpha1
               kind: BareMetalHost
    ...
  2. 変更を適用します。以下のオプションを参照してください。

    1. Red Hat OpenShift GitOps を使用せずに Red Hat Advanced Cluster Management を使用している場合は、ハブクラスターで次のコマンドを実行します。
    Copy to Clipboard Toggle word wrap
    oc apply -f <clusterinstance>.yaml
    1. GitOps ZTP を使用している場合は、Git リポジトリーにプッシュし、Argo CD が変更を同期するのを待ちます。
  3. ハブクラスターで次のコマンドを実行して、BareMetalHost リソースが削除されていることを確認します。

    Copy to Clipboard Toggle word wrap
    oc get bmh -n <clusterinstance_namespace> --watch --kubeconfig <hub_cluster_kubeconfig_filename>

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    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
  4. ハブクラスターで次のコマンドを実行して、Agent リソースが削除されていることを確認します。

    Copy to Clipboard Toggle word wrap
    oc get agents -n <clusterinstance_namespace> --kubeconfig <hub_cluster_kubeconfig_filename>

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    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
  5. マネージドクラスターで次のコマンドを実行して、Node リソースが削除されていることを確認します。

    Copy to Clipboard Toggle word wrap
    oc get nodes --kubeconfig <managed_cluster_kubeconfig_filename>

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    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
  6. ワーカーノードの BareMetalHost オブジェクトが正常に削除されたら、ClusterInstance リソースの spec.nodes セクションから、関連付けられたワーカーノード定義を削除します。

2.7.3. SiteConfig Operator を使用してシングルノードの OpenShift クラスターをスケールアウトする

SiteConfig Operator でインストールされたマネージドクラスターをスケールアウトします。ワーカーノードを追加することでクラスターをスケールアウトできます。

必要なアクセス権: クラスター管理者

2.7.3.1. 前提条件

2.7.3.2. ワーカーノードを追加する

クラスターのプロビジョニングに使用される ClusterInstance カスタムリソースを更新して、ワーカーノードを追加します。

マネージドクラスターにワーカーノードを追加するには、次の手順を実行します。

  1. 既存の ClusterInstance カスタムリソースに新しいノードオブジェクトを定義します。

    Copy to Clipboard Toggle word wrap
    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>"
    ...
  2. 変更を適用します。以下のオプションを参照してください。

    1. Red Hat OpenShift GitOps を使用せずに Red Hat Advanced Cluster Management を使用している場合は、ハブクラスターで次のコマンドを実行します。
    Copy to Clipboard Toggle word wrap
    oc apply -f <clusterinstance>.yaml
    1. GitOps ZTP を使用している場合は、Git リポジトリーにプッシュし、Argo CD が変更を同期するのを待ちます。
  3. ハブクラスターで次のコマンドを実行して、新しい BareMetalHost リソースが追加されたことを確認します。

    Copy to Clipboard Toggle word wrap
    oc get bmh -n <clusterinstance_namespace> --watch --kubeconfig <hub_cluster_kubeconfig_filename>

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    NAME                        STATE          CONSUMER   ONLINE   ERROR   AGE
    master-node1.example.com    provisioned               true             81m
    worker-node2.example.com    provisioning              true             44m
  4. ハブクラスターで次のコマンドを実行して、新しい Agent リソースが追加されたことを確認します。

    Copy to Clipboard Toggle word wrap
    oc get agents -n <clusterinstance_namespace> --kubeconfig <hub_cluster_kubeconfig_filename>

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    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
  5. マネージドクラスターで次のコマンドを実行して、新しい Node リソースが追加されたことを確認します。

    Copy to Clipboard Toggle word wrap
    oc get nodes --kubeconfig <managed_cluster_kubeconfig_filename>

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    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 カスタムリソースの追加マニフェストとして提供する必要があります。

必要なアクセス権: クラスター管理者

非接続環境のイメージをミラーリングするには、次の手順を実行します。

  1. ミラーレジストリーの場所を含む ImageDigestMirrorSet オブジェクト用に、idms-configmap.yaml という名前の YAML ファイルを作成します。

    Copy to Clipboard Toggle word wrap
    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 リソースを定義します。

  1. ハブクラスターで次のコマンドを実行してリソースを作成します。

    Copy to Clipboard Toggle word wrap
    oc apply -f idms-configmap.yaml
  2. ClusterInstance カスタムリソース内の ImageDigestMirrorSet オブジェクトを参照します。

    Copy to Clipboard Toggle word wrap
    apiVersion: siteconfig.open-cluster-management.io/v1alpha1
    kind: ClusterInstance
    metadata:
      name: "example-sno"
      namespace: "example-sno"
    spec:
      ...
      extraManifestsRefs:
        - name: idms-configmap
    ...
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.