第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 の ポリシージェネレーターの統合 ドキュメントを参照してください。
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オブジェクトのみ変更する必要があります。