6.4. SiteConfig CR から ClusterInstance CR への移行の実行
古いパイプラインから SiteConfig
CR を削除し、対応する ClusterInstance
CR を新しいパイプラインに追加して、単一ノードの OpenShift クラスターから SiteConfig
CR の使用から ClusterInstance
CR を移行します。
前提条件
-
cluster-admin
権限を持つユーザーとしてハブクラスターにログインしている。 -
ClusterInstance
CR を使用してクラスターを管理する Argo CD プロジェクトおよびアプリケーションを含む並列 Argo CD パイプラインをセットアップしている。 -
元の
SiteConfig
CR パイプラインを管理する Argo CD アプリケーションは、同期ポリシーprune=false
で設定されます。この設定により、ターゲットクラスターをこのアプリケーションから削除しても、リソースがそのまま残ります。 - 単一ノードの OpenShift クラスター設定を含む Git リポジトリーにアクセスできる。
- Red Hat Advanced Cluster Management (RHACM)バージョン 2.12 以降がハブクラスターにインストールされている。
- SiteConfig Operator がハブクラスターにインストールされ、実行されている。
- Podman をインストールし、registry.redhat.io コンテナーイメージレジストリーにアクセスできる。
手順
site-configs
フォルダー構造をClusterInstance
CR が含まれる新しい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.yaml
Copy 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.yaml
Copy 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 アプリケーションはタグクラスターのリソースのステータスをモニターしようとするため、元の Argo CD アプリケーションは
OutOfSync
sync ステータスを報告します。ただし、同期ポリシーが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 アプリケーションラベルは
sno1
namespace のすべてのリソースから削除され、同期ステータスがSynced
に戻ります。ztp-site-generate
コンテナーイメージにパッケージ化されたsiteconfig-converter
ツールを使用して、ターゲットクラスターのClusterInstance
CR を作成します。注記siteconfig-converter ツールは、
SiteConfig
CR で次の非推奨フィールドを使用するAgentClusterInstall
リソースの以前のバージョンを変換できません。-
apiVIP
-
ingressVIP
-
manifestsConfigMapRef
この問題を解決するには、次のいずれかのオプションを行います。
- これらのフィールドを含むカスタムクラスターテンプレートを作成します。カスタムテンプレートの作成の詳細については、SiteConfig 演算子を使用したカスタムテンプレートの作成 を参照してください。
-
AgentClusterInstall
リソースの作成をClusterInstance
CR の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.20
Copy 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>
を、生成されたファイルの出力ディレクトリーに置き換えます。 &
lt;path_to_siteconfig_resource>
をターゲットSiteConfig
CR ファイルへのパスに置き換えます。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ClusterInstance
CR では、追加のマニフェストをConfigMap
リソースで定義する必要があります。この要件を満たすために、
siteconfig-converter
ツールはkustomization.yaml
スニペットを生成します。生成されたスニペットは Kustomize のconfigMapGenerator
を使用して、マニフェストファイルを必要なConfigMap
リソースに自動的にパッケージ化します。このスニペットを元のkustomization.yaml
ファイルにマージして、ConfigMap
リソースが他のクラスターリソースと一緒に作成および管理されることを確認する必要があります。
-
<
-
新しい Argo CD アプリケーションを設定し、新しいパイプライン
Kustomization
ファイルでターゲットクラスターを参照します。次に例を示します。cat site-configs-v2/kustomization.yaml
$ cat site-configs-v2/kustomization.yaml
Copy 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.yaml
Copy 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 リポジトリーに変更をコミットします。
検証
次のコマンドを実行して、
ClusterInstance
CR が正常にデプロイされ、プロビジョニングのステータスが完了したことを確認します。oc get clusterinstance -A
$ oc get clusterinstance -A
Copy 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 27s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この時点で、
ClusterInstance
CR を使用する新規の Argo CD アプリケーションはsno1
クラスターを管理します。すべてのターゲットクラスターが新しいパイプラインに移行するまで、これらの手順を繰り返して、一度に 1 つ以上のクラスターを移行できます。site-configs-v2/
ディレクトリーのフォルダー構造とファイルに、sno1
クラスターの移行したリソースが含まれていることを確認します。次に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
sno1
クラスターのこのClusterInstance
CR。- 2
- このツールは、
ClusterInstance
CR によって参照される追加のマニフェストを自動的に生成します。生成後に、ファイル名が変更される可能性があります。ファイルの名前を変更して、関連するkustomization.yaml
ファイルの元の命名規則に一致させることができます。 - 3
- このツールは、
kuztomization.yaml
ファイルスニペットを生成して、追加のマニフェストを指定するConfigMap
リソースを作成します。生成されたkustomization
スニペットを元のkuztomization.yaml
ファイルにマージできます。
6.4.1. siteconfig-converter ツールの参照フラグ リンクのコピーリンクがクリップボードにコピーされました!
以下のマトリックスは、siteconfig-converter
ツールのフラグについて説明しています。
フラグ | タイプ | 説明 |
---|---|---|
-d | string |
変換された |
-t | string |
クラスターのテンプレート参照のコンマ区切りリストを namespace/name 形式で定義します。デフォルト値は |
-n | string |
ノードのテンプレート参照のコンマ区切りリストを namespace/name 形式で定義します。デフォルト値は |
-m | string |
追加のマニフェスト参照に使用する |
-s | string | クラスターレベルで抑制するように、マニフェスト名のコンマ区切りリストを定義します。 |
-w | boolean |
変換された YAML ファイルのヘッドに、変換警告をコメントとして記述します。デフォルト値は |
-c | boolean |
元の |