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ディレクトリーにミラーリングします。以下はその例です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Git 内の関連ファイル内のリソースをコメントアウトして、元の Argo CD アプリケーションからターゲットクラスターを削除します。
以下の例のように、
site-configs/kustomization.yamlファイルからターゲットクラスターをコメントアウトします。cat site-configs/kustomization.yaml
$ cat site-configs/kustomization.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された
site-configs/kustomization.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow site-configs/pre-reqs/kustomization.yamlファイルからターゲットクラスターをコメントアウトします。これにより、移行が必要なsite-configs/pre-reqs/sno1フォルダーが削除されます。このフォルダーには、イメージレジストリープルシークレット、ベースボード管理コントローラーの認証情報などのリソースが含まれます。以下はその例です。cat site-configs/pre-reqs/kustomization.yaml
$ cat site-configs/pre-reqs/kustomization.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された
site-configs/pre-reqs/kustomization.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
変更を 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-
$ 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-Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:4.20Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、コンテナーを通じて
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>$ 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>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<output_folder>は、生成されたファイルの出力ディレクトリーに置き換えます。 <path_to_siteconfig_resource>は、ターゲットのSiteConfigCR ファイルへのパスに置き換えます。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ClusterInstanceCR では、追加のマニフェストをConfigMapリソースで定義する必要があります。この要件を満たすために、
siteconfig-converterツールはkustomization.yamlスニペットを生成します。生成されたスニペットは、Kustomize のconfigMapGeneratorを使用して、マニフェストファイルを必要なConfigMapリソースに自動的にパッケージ化します。ConfigMapリソースが他のクラスターリソースと併せて作成および管理されるようにするには、このスニペットを元のkustomization.yamlファイルにマージする必要があります。
-
-
新しいパイプラインの
Kustomizationファイルでターゲットクラスターを参照することで、新しい Argo CD アプリケーションがターゲットクラスターを管理するように設定します。以下はその例です。cat site-configs-v2/kustomization.yaml
$ cat site-configs-v2/kustomization.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された
site-configs-v2/kustomization.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat site-configs-v2/pre-reqs/kustomization.yaml
$ cat site-configs-v2/pre-reqs/kustomization.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された
site-configs-v2/pre-reqs/kustomization.yamlファイルの例apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - sno1/
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - sno1/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を Git リポジトリーにコミットします。
検証
次のコマンドを実行して、
ClusterInstanceCR が正常にデプロイされ、プロビジョニングステータスが完了を示していることを確認します。oc get clusterinstance -A
$ oc get clusterinstance -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME PAUSED PROVISIONSTATUS PROVISIONDETAILS AGE clusterinstance.siteconfig.open-cluster-management.io/sno1 Completed Provisioning completed 27s
NAME PAUSED PROVISIONSTATUS PROVISIONDETAILS AGE clusterinstance.siteconfig.open-cluster-management.io/sno1 Completed Provisioning completed 27sCopy to Clipboard Copied! Toggle word wrap Toggle overflow この時点では、
ClusterInstanceCR を使用する新しい Argo CD アプリケーションがsno1クラスターを管理しています。すべてのターゲットクラスターが新しいパイプラインに移行されるまで、これらのステップを繰り返して一度に 1 つ以上のクラスターを移行します。site-configs-v2/ディレクトリー内のフォルダー構造とファイルに、sno1クラスターの移行されたリソースが含まれていることを確認します。以下はその例です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 |
元の |