6.4. SiteConfig CR から ClusterInstance CR への移行の実行


古いパイプラインから SiteConfig CR を削除し、対応する ClusterInstance CR を新しいパイプラインに追加することで、SiteConfig CR を使用するシングルノードの OpenShift クラスターを ClusterInstance CR を使用するように移行します。

前提条件

  • cluster-admin 権限を持つユーザーとしてハブクラスターにログインしている。
  • Argo CD プロジェクトとアプリケーションが含まれる並列 Argo CD パイプラインを設定した。これは、ClusterInstance CR を使用してクラスターを管理します。
  • 元の SiteConfig CR パイプラインを管理する Argo CD アプリケーションは、同期ポリシー prune=false で設定されています。この設定により、このアプリケーションからターゲットクラスターを削除した後もリソースがそのまま残ります。
  • シングルノードの OpenShift クラスター設定が含まれる Git リポジトリーにアクセスできる。
  • ハブクラスターに Red Hat Advanced Cluster Management (RHACM) バージョン 2.12 以降がインストールされている。
  • SiteConfig Operator がハブクラスターにインストールされ、実行されている。
  • Podman がインストール済みで、registry.redhat.io コンテナーイメージレジストリーにアクセスできます。

手順

  1. site-configs フォルダー構造を、ClusterInstance CR を格納する予定の新しい site-configs-v2 ディレクトリーにミラーリングします。以下はその例です。

    site-configs-v2/
    ├── hub-1/ 
    1
    
    │   └── extra-manifest/
    ├── pre-reqs/
    │   └── sno1/ 
    2
    
    ├── reference-manifest/
    │   └── 4.21/
    └── resources/
    1
    hub-1/ フォルダーには、各クラスターの ClusterInstance CR が含まれます。
    2
    ターゲットクラスター (この例では sno1) をミラーリングして、イメージレジストリープルシークレット、ベースボード管理コントローラーの認証情報などの前提条件として必要なリソースを含めます。
  2. Git 内の関連ファイル内のリソースをコメントアウトして、元の Argo CD アプリケーションからターゲットクラスターを削除します。

    1. 以下の例のように、site-configs/kustomization.yaml ファイルからターゲットクラスターをコメントアウトします。

      $ cat site-configs/kustomization.yaml

      更新された site-configs/kustomization.yaml ファイルの例

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      resources:
         - pre-reqs/
         #- resources/
      generators:
         #- hub-1/sno1.yaml
         - hub-1/sno2.yaml
         - hub-1/sno3.yaml

    2. site-configs/pre-reqs/kustomization.yaml ファイルからターゲットクラスターをコメントアウトします。これにより、移行が必要な site-configs/pre-reqs/sno1 フォルダーが削除されます。このフォルダーには、イメージレジストリープルシークレット、ベースボード管理コントローラーの認証情報などのリソースが含まれます。以下はその例です。

      $ cat site-configs/pre-reqs/kustomization.yaml

      更新された site-configs/pre-reqs/kustomization.yaml ファイルの例

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      resources:
        #- sno1/
        - sno2/
        - sno3/

  3. 変更を Git リポジトリーにコミットします。

    注記

    変更をコミットした後、元の Argo CD アプリケーションは引き続きターゲットクラスターのリソースのステータスを監視しようとするため、同期ステータスとして OutOfSync を報告します。ただし、同期ポリシーが prune=false に設定されているため、Argo CD アプリケーションはリソースを削除しません。

  4. 元の Argo CD アプリケーションがクラスターリソースを管理しないようにするには、次のコマンドを実行して、リソースから Argo CD アプリケーションラベルを削除します。

    $ for cr in bmh,hfs,clusterdeployment,agentclusterinstall,infraenv,nmstateconfig,configmap,klusterletaddonconfig,secrets; do oc label $cr app.kubernetes.io/instance- --all -n sno1; done && oc label ns sno1 app.kubernetes.io/instance- && oc label managedclusters sno1 app.kubernetes.io/instance-

    Argo CD アプリケーションラベルは sno1 namespace 内のすべてのリソースから削除され、同期ステータスは Synced に戻ります。

  5. ztp-site-generate コンテナーイメージに含まれる siteconfig-converter ツールを使用して、ターゲットクラスターの ClusterInstance CR を作成します。

    注記

    siteconfig-converter ツールは、次の非推奨フィールドを使用する、SiteConfig CR 内の AgentClusterInstall リソースの以前のバージョンを変換できません。

    • apiVIP
    • ingressVIP
    • manifestsConfigMapRef

    この問題を解決するには、次のいずれかのオプションを実行できます。

    • これらのフィールドが含まれるカスタムクラスターテンプレートを作成します。カスタムテンプレートの作成の詳細は、SiteConfig Operator を使用してカスタムテンプレートを作成する を参照してください。
    • AgentClusterInstall リソースの作成を抑制するには、それを ClusterInstance CR の suppressedManifests リストに追加するか、siteconfig-converter ツールで -s フラグを使用します。クラスターを再インストールする場合は、suppressedManifests リストからリソースを削除する必要があります。
    1. 次のコマンドを実行して、ztp-site-generate コンテナーイメージをプルします。

      podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:4.21
    2. 次のコマンドを実行して、コンテナーを通じて siteconfig-converter ツールを対話的に実行します。

      $ podman run -v "${PWD}":/resources:Z,U -it registry.redhat.io/openshift4/ztp-site-generate-rhel8:{product-version} siteconfig-converter -d /resources/<output_folder> /resources/<path_to_siteconfig_resource>
      • <output_folder> は、生成されたファイルの出力ディレクトリーに置き換えます。
      • <path_to_siteconfig_resource> は、ターゲットの SiteConfig CR ファイルへのパスに置き換えます。

        出力例

        Successfully read SiteConfig: sno1/sno1
        Converted cluster 1 (sno1) to ClusterInstance: /resources/output/sno1.yaml
        WARNING: Added default extraManifest ConfigMap 'extra-manifests-cm' to extraManifestsRefs. This configmap is created automatically.
        Successfully converted 1 cluster(s) to ClusterInstance files in /resources/output: sno1.yaml
        Generating ConfigMap kustomization files...
        Using ConfigMap name: extra-manifests-cm, namespace: sno1, manifests directory: extra-manifests
        Generating ConfigMap kustomization files with name: extra-manifests-cm, namespace: sno1, manifests directory: extra-manifests
        Generating extraManifests for SiteConfig: /resources/sno1.yaml
        Successfully generated extra manifests in /resources/output/extra-manifests
        --- Kustomization.yaml Generator ---
        Scanning directory: /resources/output/extra-manifests
        Found and adding: extra-manifests/enable-crun-master.yaml
        Found and adding: extra-manifests/enable-crun-worker.yaml
        ------------------------------------
        kustomization-configMapGenerator-snippet.yaml generated successfully at: /resources/output/kustomization-configMapGenerator-snippet.yaml
        Content:
        apiVersion: kustomize.config.k8s.io/v1beta1
        kind: Kustomization
        configMapGenerator:
            - files:
                - extra-manifests/enable-crun-master.yaml
                - extra-manifests/enable-crun-worker.yaml
              name: extra-manifests-cm
              namespace: sno1
        generatorOptions:
            disableNameSuffixHash: true
        
        ------------------------------------

        注記

        ClusterInstance CR では、追加のマニフェストを ConfigMap リソースで定義する必要があります。

        この要件を満たすために、siteconfig-converter ツールは kustomization.yaml スニペットを生成します。生成されたスニペットは、Kustomize の configMapGenerator を使用して、マニフェストファイルを必要な ConfigMap リソースに自動的にパッケージ化します。ConfigMap リソースが他のクラスターリソースと併せて作成および管理されるようにするには、このスニペットを元の kustomization.yaml ファイルにマージする必要があります。

  6. 新しいパイプラインの Kustomization ファイルでターゲットクラスターを参照することで、新しい Argo CD アプリケーションがターゲットクラスターを管理するように設定します。以下はその例です。

    $ cat site-configs-v2/kustomization.yaml

    更新された site-configs-v2/kustomization.yaml ファイルの例

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    resources:
      - resources/
      - pre-reqs/
      - hub-1/sno1.yaml

    $ cat  site-configs-v2/pre-reqs/kustomization.yaml

    更新された site-configs-v2/pre-reqs/kustomization.yaml ファイルの例

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    resources:
      - sno1/

  7. 変更を Git リポジトリーにコミットします。

検証

  1. 次のコマンドを実行して、ClusterInstance CR が正常にデプロイされ、プロビジョニングステータスが完了を示していることを確認します。

    $ oc get clusterinstance -A

    出力例

    NAME                                                         PAUSED   PROVISIONSTATUS   PROVISIONDETAILS         AGE
    clusterinstance.siteconfig.open-cluster-management.io/sno1            Completed         Provisioning completed   27s

    この時点では、ClusterInstance CR を使用する新しい Argo CD アプリケーションが sno1 クラスターを管理しています。すべてのターゲットクラスターが新しいパイプラインに移行されるまで、これらのステップを繰り返して一度に 1 つ以上のクラスターを移行します。

  2. site-configs-v2/ ディレクトリー内のフォルダー構造とファイルに、sno1 クラスターの移行されたリソースが含まれていることを確認します。以下はその例です。

    site-configs-v2/
    ├── hub-1/
    │   ├── sno1.yaml 
    1
    
    ├── extra-manifest/
    │   ├── enable-crun-worker.yaml 
    2
    
    │   └── enable-crun-master.yaml
    ├── kustomization.yaml 
    3
    
    ├── pre-reqs/
    │   └── sno1/
    │       ├── bmc-credentials.yaml
    │       ├── namespace.yaml
    │       └── pull-secret.yaml
    ├── kustomization.yaml
    ├── reference-manifest/
    │   └── 4.21/
    └── resources/
        ├── active-ocp-version.yaml
        └── kustomization.yaml
    1
    sno1 クラスター用の ClusterInstance CR です。
    2
    このツールは、ClusterInstance CR によって参照される追加のマニフェストを自動的に生成します。
    3
    このツールは、追加のマニフェストを指定する ConfigMap リソースを作成するための kuztomization.yaml ファイルスニペットを生成します。生成された kustomization スニペットは、元の kuztomization.yaml ファイルとマージできます。

6.4.1. siteconfig-converter ツールの参照フラグ

次のマトリックスは、siteconfig-converter ツールのフラグについて説明しています。

Expand
フラグタイプ説明

-d

string

変換された ClusterInstance カスタムリソース (CR) の出力ディレクトリーを定義します。このフラグは必須です。

-t

string

namespace/名前の形式で、クラスターのテンプレート参照のコンマ区切りリストを定義します。デフォルト値は open-cluster-management/ai-cluster-templates-v1 です。

-n

string

namespace/名前の形式で、ノードのテンプレート参照のコンマ区切りリストを定義します。デフォルト値は open-cluster-management/ai-node-templates-v1 です。

-m

string

追加のマニフェスト参照に使用する ConfigMap 名のコンマ区切りリストを定義します。

-s

string

クラスターレベルで抑制するマニフェスト名のコンマ区切りリストを定義します。

-w

boolean

変換された YAML ファイルの先頭に、変換の警告をコメントとして書き込みます。デフォルト値は false です。

-c

boolean

元の SiteConfig CR から変換された ClusterInstance CR にコメントをコピーします。デフォルトは false です。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る