6.2. ClusterInstance CR 用の並列 Argo CD パイプラインの準備
新しい ClusterInstance CR と関連するクラスターリソースを管理するための並列 Argo CD プロジェクトとアプリケーションを作成します。
前提条件
-
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - GitOps ZTP 環境を適切に設定した。
- Assisted Installer サービスを適切にインストールおよび設定した。
- シングルノードの OpenShift クラスター設定が含まれる Git リポジトリーにアクセスできる。
手順
並列 Argo プロジェクトとアプリケーション用の YAML ファイルを作成します。
AppProjectリソースを定義する YAML ファイルを作成します。ztp-app-project-v2.yamlのサンプルファイルapiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: ztp-app-project-v2 namespace: openshift-gitops spec: clusterResourceWhitelist: - group: hive.openshift.io kind: ClusterImageSet - group: hive.openshift.io kind: ClusterImageSet - group: cluster.open-cluster-management.io kind: ManagedCluster - group: "" kind: Namespace destinations: - namespace: '*' server: '*' namespaceResourceWhitelist: - group: "" kind: ConfigMap - group: "" kind: Namespace - group: "" kind: Secret - group: agent-install.openshift.io kind: InfraEnv - group: agent-install.openshift.io kind: NMStateConfig - group: extensions.hive.openshift.io kind: AgentClusterInstall - group: hive.openshift.io kind: ClusterDeployment - group: metal3.io kind: BareMetalHost - group: metal3.io kind: HostFirmwareSettings - group: agent.open-cluster-management.io kind: KlusterletAddonConfig - group: cluster.open-cluster-management.io kind: ManagedCluster - group: siteconfig.open-cluster-management.io kind: ClusterInstance1 sourceRepos: - '*'- 1
ClusterInstanceCR は、SiteConfigCR の代わりにsiteconfig.open-cluster-management.ioオブジェクトを管理します。
Applicationリソースを定義する YAML ファイルを作成します。clusters-v2.yamlのサンプルファイルapiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: clusters-v2 namespace: openshift-gitops spec: destination: namespace: clusters-sub server: https://kubernetes.default.svc ignoreDifferences: - group: cluster.open-cluster-management.io kind: ManagedCluster managedFieldsManagers: - controller project: ztp-app-project-v21 source: path: site-configs-v22 repoURL: http://infra.5g-deployment.lab:3000/student/ztp-repository.git targetRevision: main syncPolicy: syncOptions: - CreateNamespace=true - PrunePropagationPolicy=background - RespectIgnoreDifferences=true注記デフォルトで、
auto-syncが有効になっています。ただし、同期は、クラスターの設定データを新しい設定フォルダー (この例では、site-configs-v2/フォルダー) にプッシュした場合にのみ実行されます。
ClusterInstanceCR と関連リソースが格納されたルートフォルダーを Git リポジトリーに作成してコミットします。以下はその例です。$ mkdir site-configs-v2 $ touch site-configs-v2/.gitkeep $ git commit -s -m “Creates cluster-instance folder” $ git push origin main.gitkeepファイルは、空のフォルダーが Git によって追跡されるようにするためのプレースホルダーです。注記パイプラインのセットアップ中に、ルート
site-configs-v2/フォルダーの作成およびコミットのみ行う必要があります。クラスターの移行手順中に、完全なsite-configs/フォルダー構造をsite-configs-v2/にミラーリングします。
次のコマンドを実行して、
AppProjectおよびApplicationリソースをハブクラスターに適用します。$ oc apply -f ztp-app-project-v2.yaml $ oc apply -f clusters-v2.yaml
検証
次のコマンドを実行して、元の Argo CD プロジェクト (
ztp-app-project) と新しい Argo CD プロジェクト (ztp-app-project-v2) がハブクラスターに存在することを確認します。$ oc get appprojects -n openshift-gitops出力例
NAME AGE default 46h policy-app-project 42h ztp-app-project 18h ztp-app-project-v2 14s次のコマンドを実行して、元の Argo CD アプリケーション (
clusters) と新しい Argo CD アプリケーション (clusters-v2) がハブクラスター上に存在することを確認します。$ oc get application.argo -n openshift-gitops出力例
NAME SYNC STATUS HEALTH STATUS clusters Synced Healthy clusters-v2 Synced Healthy policies Synced Healthy