6.4. SiteConfig CR から ClusterInstance CR への移行の実行
古いパイプラインから SiteConfig CR を削除し、対応する ClusterInstance CR を新しいパイプラインに追加することで、SiteConfig CR を使用するシングルノードの OpenShift クラスターを ClusterInstance CR を使用するように移行します。
前提条件
-
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 -
Argo CD プロジェクトとアプリケーションが含まれる並列 Argo CD パイプラインを設定した。これは、
ClusterInstanceCR を使用してクラスターを管理します。 -
元の
SiteConfigCR パイプラインを管理する Argo CD アプリケーションは、同期ポリシーprune=falseで設定されています。この設定により、このアプリケーションからターゲットクラスターを削除した後もリソースがそのまま残ります。 - シングルノードの OpenShift クラスター設定が含まれる Git リポジトリーにアクセスできる。
- ハブクラスターに Red Hat Advanced Cluster Management (RHACM) バージョン 2.12 以降がインストールされている。
- SiteConfig Operator がハブクラスターにインストールされ、実行されている。
- Podman がインストール済みで、registry.redhat.io コンテナーイメージレジストリーにアクセスできます。
手順
site-configsフォルダー構造を、ClusterInstanceCR を格納する予定の新しいsite-configs-v2ディレクトリーにミラーリングします。以下はその例です。site-configs-v2/ ├── hub-1/1 │ └── extra-manifest/ ├── pre-reqs/ │ └── sno1/2 ├── reference-manifest/ │ └── 4.20/ └── resources/Git 内の関連ファイル内のリソースをコメントアウトして、元の Argo CD アプリケーションからターゲットクラスターを削除します。
以下の例のように、
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.yamlsite-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/
変更を Git リポジトリーにコミットします。
注記変更をコミットした後、元の Argo CD アプリケーションは引き続きターゲットクラスターのリソースのステータスを監視しようとするため、同期ステータスとして
OutOfSyncを報告します。ただし、同期ポリシーがprune=falseに設定されているため、Argo CD アプリケーションはリソースを削除しません。元の 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 アプリケーションラベルは
sno1namespace 内のすべてのリソースから削除され、同期ステータスはSyncedに戻ります。ztp-site-generateコンテナーイメージに含まれるsiteconfig-converterツールを使用して、ターゲットクラスターのClusterInstanceCR を作成します。注記siteconfig-converter ツールは、次の非推奨フィールドを使用する、
SiteConfigCR 内のAgentClusterInstallリソースの以前のバージョンを変換できません。-
apiVIP -
ingressVIP -
manifestsConfigMapRef
この問題を解決するには、次のいずれかのオプションを実行できます。
- これらのフィールドが含まれるカスタムクラスターテンプレートを作成します。カスタムテンプレートの作成の詳細は、SiteConfig Operator を使用してカスタムテンプレートを作成する を参照してください。
-
AgentClusterInstallリソースの作成を抑制するには、それをClusterInstanceCR のsuppressedManifestsリストに追加するか、siteconfig-converterツールで-sフラグを使用します。クラスターを再インストールする場合は、suppressedManifestsリストからリソースを削除する必要があります。
次のコマンドを実行して、
ztp-site-generateコンテナーイメージをプルします。podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:4.20次のコマンドを実行して、コンテナーを通じて
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>は、ターゲットのSiteConfigCR ファイルへのパスに置き換えます。出力例
Successfully read SiteConfig: sno1/sno1 Converted cluster 1 (sno1) to ClusterInstance: /resources/output/sno1.yaml WARNING: extraManifests field is not supported in ClusterInstance and will be ignored. Create one or more configmaps with the exact desired set of CRs for the cluster and include them in the extraManifestsRefs. 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 Using absolute path for input file: /resources/sno1.yaml Running siteconfig-generator from directory: /resources Found extraManifests directory: /resources/output/extra-manifests/sno1 Moved sno1_containerruntimeconfig_enable-crun-master.yaml to /resources/output/extra-manifests/sno1_containerruntimeconfig_enable-crun-master.yaml Moved sno1_containerruntimeconfig_enable-crun-worker.yaml to /resources/output/extra-manifests/sno1_containerruntimeconfig_enable-crun-worker.yaml Moved 2 extraManifest files from /resources/output/extra-manifests/sno1 to /resources/output/extra-manifests Removed directory: /resources/output/extra-manifests/sno1 --- Kustomization.yaml Generator --- Scanning directory: /resources/output/extra-manifests Found and adding: extra-manifests/sno1_containerruntimeconfig_enable-crun-master.yaml Found and adding: extra-manifests/sno1_containerruntimeconfig_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/sno1_containerruntimeconfig_enable-crun-master.yaml - extra-manifests/sno1_containerruntimeconfig_enable-crun-worker.yaml name: extra-manifests-cm namespace: sno1 generatorOptions: disableNameSuffixHash: true ------------------------------------注記ClusterInstanceCR では、追加のマニフェストをConfigMapリソースで定義する必要があります。この要件を満たすために、
siteconfig-converterツールはkustomization.yamlスニペットを生成します。生成されたスニペットは、Kustomize のconfigMapGeneratorを使用して、マニフェストファイルを必要なConfigMapリソースに自動的にパッケージ化します。ConfigMapリソースが他のクラスターリソースと併せて作成および管理されるようにするには、このスニペットを元のkustomization.yamlファイルにマージする必要があります。
-
-
新しいパイプラインの
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/- 変更を Git リポジトリーにコミットします。
検証
次のコマンドを実行して、
ClusterInstanceCR が正常にデプロイされ、プロビジョニングステータスが完了を示していることを確認します。$ oc get clusterinstance -A出力例
NAME PAUSED PROVISIONSTATUS PROVISIONDETAILS AGE clusterinstance.siteconfig.open-cluster-management.io/sno1 Completed Provisioning completed 27sこの時点では、
ClusterInstanceCR を使用する新しい Argo CD アプリケーションがsno1クラスターを管理しています。すべてのターゲットクラスターが新しいパイプラインに移行されるまで、これらのステップを繰り返して一度に 1 つ以上のクラスターを移行します。site-configs-v2/ディレクトリー内のフォルダー構造とファイルに、sno1クラスターの移行されたリソースが含まれていることを確認します。以下はその例です。site-configs-v2/ ├── hub-1/ │ ├── sno1.yaml1 ├── extra-manifest/ │ ├── enable-crun-worker.yaml2 │ └── enable-crun-master.yaml ├── kustomization.yaml3 ├── pre-reqs/ │ └── sno1/ │ ├── bmc-credentials.yaml │ ├── namespace.yaml │ └── pull-secret.yaml ├── kustomization.yaml ├── reference-manifest/ │ └── 4.20/ └── resources/ ├── active-ocp-version.yaml └── kustomization.yaml- 1
sno1クラスター用のClusterInstanceCR です。- 2
- このツールは、
ClusterInstanceCR によって参照される追加のマニフェストを自動的に生成します。生成後、ファイル名が変更される可能性があります。関連するkustomization.yamlファイル内の元の命名規則に合わせて、ファイルの名前を変更できます。 - 3
- このツールは、追加のマニフェストを指定する
ConfigMapリソースを作成するためのkuztomization.yamlファイルスニペットを生成します。生成されたkustomizationスニペットは、元のkuztomization.yamlファイルとマージできます。
6.4.1. siteconfig-converter ツールの参照フラグ リンクのコピーリンクがクリップボードにコピーされました!
次のマトリックスは、siteconfig-converter ツールのフラグについて説明しています。
| フラグ | タイプ | 説明 |
|---|---|---|
| -d | string |
変換された |
| -t | string |
namespace/名前の形式で、クラスターのテンプレート参照のコンマ区切りリストを定義します。デフォルト値は |
| -n | string |
namespace/名前の形式で、ノードのテンプレート参照のコンマ区切りリストを定義します。デフォルト値は |
| -m | string |
追加のマニフェスト参照に使用する |
| -s | string | クラスターレベルで抑制するマニフェスト名のコンマ区切りリストを定義します。 |
| -w | boolean |
変換された YAML ファイルの先頭に、変換の警告をコメントとして書き込みます。デフォルト値は |
| -c | boolean |
元の |