第11章 PolicyGenerator または PolicyGenTemplate CR でのハブテンプレートの使用
Topology Aware Lifecycle Manager は、GitOps Zero Touch Provisioning (ZTP) で使用される設定ポリシーで、Red Hat Advanced Cluster Management (RHACM) ハブクラスターテンプレート機能をサポートします。
ハブ側のクラスターテンプレートを使用すると、ターゲットクラスターに合わせて動的にカスタマイズできる設定ポリシーを定義できます。これにより、設定は似ているが値が異なる多くのクラスターに対して個別のポリシーを作成する必要がなくなります。
ポリシーテンプレートは、ポリシーが定義されている namespace と同じ namespace に制限されています。これは、ハブテンプレートで参照されるオブジェクトを、ポリシーが作成されたのと同じ namespace に作成する必要があることを意味します。
				PolicyGenTemplate CR を使用してポリシーを管理し、マネージドクラスターにデプロイすることは、OpenShift Container Platform の今後のリリースでは非推奨になります。同等の機能および改善された機能は、Red Hat Advanced Cluster Management (RHACM) および PolicyGenerator CR を使用する場合に利用できます。
			
				PolicyGenerator リソースの詳細は、RHACM Policy Generator のドキュメントを参照してください。
			
11.1. グループ PolicyGenerator または PolicyGentemplate CR でのグループとサイト設定の指定
				ハブテンプレートを使用して、マネージドクラスターに適用される生成済みポリシーにグループとサイトの値を入力することで、ConfigMap CR でクラスターのフリート設定を管理できます。PolicyGenerator または PolicyGentemplate CR のサイトでハブテンプレートを使用すると、サイトごとにポリシー CR を作成する必要がなくなります。
			
				ハードウェアの種類や地域などのユースケースに応じて、フリート内のクラスターをさまざまなカテゴリーにグループ化できます。各クラスターには、そのクラスターが属するグループ (複数可) に対応するラベルが必要です。各グループの設定値を異なる ConfigMap CR で管理する場合は、ハブテンプレートを使用してグループ内のすべてのクラスターに変更を適用するために必要なグループポリシー CR は 1 つだけです。
			
				次の例は、3 つの ConfigMap CR と 1 つの PolicyGenerator CR を使用して、ハードウェアタイプとリージョン別にグループ化されたクラスターに、サイト設定とグループ設定の両方を適用する方法を示しています。
			
					ConfigMap CR には、1 MiB のサイズ制限 (Kubernetes ドキュメント) があります。ConfigMap CR の実際のサイズは、last-applied-configuration アノテーションによってさらに制限されます。last-applied-configuration 制限を回避するには、次のアノテーションをテンプレート ConfigMap に追加します。
				
argocd.argoproj.io/sync-options: Replace=true
argocd.argoproj.io/sync-options: Replace=true前提条件
- 
						OpenShift CLI (oc) がインストールされている。
- 
						cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセスでき、GitOps ZTP ArgoCD アプリケーションのソースリポジトリーとして定義されている必要があります。
手順
- グループとサイトの設定を含む 3 つの - ConfigMapCR を作成します。- group-hardware-types-configmapという名前の- ConfigMapCR を作成して、ハードウェア固有の設定を保持します。以下に例を示します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- argocd.argoproj.io/sync-optionsアノテーションは、- ConfigMapのサイズが 1 MiB より大きい場合にのみ必要です。
 
- group-zones-configmapという名前の- ConfigMapCR を作成して、地域設定を保持します。以下に例を示します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- site-data-configmapという名前の- ConfigMapCR を作成して、サイト固有の設定を保持します。以下に例を示します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 注記- 各 - ConfigMapCR は、- PolicyGeneratorCR グループから生成されるポリシーと同じ namespace に存在する必要があります。
- 
						Git で ConfigMapCR をコミットし、Argo CD アプリケーションが監視する Git リポジトリーにプッシュします。
- ハードウェアタイプとリージョンラベルをクラスターに適用します。次のコマンドは、 - du-sno-1-zone-1という名前のシングルクラスターに適用され、- "hardware-type": "hardware-type-1"および- "group-du-sno-zone": "zone-1"のラベルが選択されます。- oc patch managedclusters.cluster.open-cluster-management.io/du-sno-1-zone-1 --type merge -p '{"metadata":{"labels":{"hardware-type": "hardware-type-1", "group-du-sno-zone": "zone-1"}}}'- $ oc patch managedclusters.cluster.open-cluster-management.io/du-sno-1-zone-1 --type merge -p '{"metadata":{"labels":{"hardware-type": "hardware-type-1", "group-du-sno-zone": "zone-1"}}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要件に応じて、ハブテンプレートを使用して - ConfigMapオブジェクトから必要なデータを取得する- PolicyGeneratorまたは- PolicyGentemplateCR グループを作成します。- グループ - PolicyGeneratorCR を作成します。この例の- PolicyGeneratorCR は、- policyDefaults.placementフィールドの下にリストされているラベルに一致するクラスターのロギング、VLAN ID、NIC、およびパフォーマンスプロファイルを設定します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- グループ - PolicyGenTemplateCR を作成します。例として挙げたこの- PolicyGenTemplateCR は、- spec.bindingRulesの下にリストされているラベルに一致するクラスターのロギング、VLAN ID、NIC、およびパフォーマンスプロファイルを設定します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 注記- サイト固有の設定値を取得するには、 - .ManagedClusterNameフィールドを使用します。これは、ターゲットマネージドクラスターの名前に設定されたテンプレートコンテキスト値です。- グループ固有の設定を取得するには、 - .ManagedClusterLabelsフィールドを使用します。これは、マネージドクラスターのラベルの値に設定されたテンプレートコンテキスト値です。
- PolicyGeneratorまたは- PolicyGentemplateCR のサイトを Git でコミットし、ArgoCD アプリケーションによって監視される Git リポジトリーにプッシュします。注記- 参照された - ConfigMapCR に対するその後の変更は、適用されたポリシーに自動的に同期されません。新しい- ConfigMapの変更を手動で同期して、既存の- PolicyGeneratorCR を更新する必要があります。「新しい ConfigMap の変更を既存の PolicyGenerator または PolicyGenTemplate CR に同期する」を参照してください。- 複数のクラスターに同じ - PolicyGeneratorまたは- PolicyGentemplateCR を使用できます。設定に変更がある場合、各クラスターの設定とマネージドクラスターのラベルを保持する- ConfigMapオブジェクトのみ変更する必要があります。