2.4. ポリシーコントローラーの高度な設定
ManagedClusterAddOn
カスタムリソースを使用して、マネージドクラスターのポリシーコントローラー設定をカスタマイズできます。次の ManagedClusterAddOn
は、ポリシーフレームワーク、Kubernetes 設定ポリシーコントローラー、証明書ポリシーコントローラー、および IAM ポリシーコントローラーを設定します。
必要なアクセス権限: クラスターの管理者
2.4.1. ガバナンスフレームワークの同時実行性を設定する
各マネージドクラスターのガバナンスフレームワークの同時実行性を設定します。デフォルト値の 2
を変更するには、policy-evaluation-concurrency
アノテーションを引用符で囲んだゼロ以外の整数で設定します。次に、ハブクラスターのマネージドクラスター namespace で、ManagedClusterAddOn
オブジェクト名の値を governance-policy-framework
に設定します。
次の YAML の例を参照してください。ここでは、cluster1
という名前のマネージドクラスターで、同時実行性が 2
に設定されています。
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: governance-policy-framework namespace: cluster1 annotations: policy-evaluation-concurrency: "2" spec: installNamespace: open-cluster-management-agent-addon
client-qps
および client-burst
アノテーションを設定するには、ManagedClusterAddOn
リソースを更新し、パラメーターを定義します。
次の YAML の例では、cluster 1
というマネージドクラスター上で 1 秒あたりのクエリーが 30
に設定され、バーストが 45
に設定されています。
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: governance-policy-framework namespace: cluster1 annotations: client-qps: "30" client-burst: "45" spec: installNamespace: open-cluster-management-agent-addon
2.4.2. 設定ポリシーコントローラーの同時実行性を設定する
マネージドクラスターごとに設定ポリシーコントローラーの並行処理性を設定して、同時に評価できる設定ポリシーの数を変更できます。デフォルト値の 2
を変更するには、policy-evaluation-concurrency
アノテーションを引用符で囲んだゼロ以外の整数で設定します。次いで、ハブクラスターのマネージドクラスター namespace で、ManagedClusterAddOn
オブジェクト名の値を config-policy-controller
に設定します。
注記: 同時実行値を増やすと config-policy-controller
Pod、Kubernetes API サーバー、および OpenShift API サーバー上の CPU とメモリーの使用率が増加します。
次の YAML の例を参照してください。ここでは、cluster1
という名前のマネージドクラスターで同時実行性が 5
に設定されています。
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: config-policy-controller namespace: cluster1 annotations: policy-evaluation-concurrency: "5" spec: installNamespace: open-cluster-management-agent-addon
2.4.3. API サーバーへのリクエストのレートを設定する
設定ポリシーコントローラーが各マネージドクラスター上で行う API サーバーへのリクエストの速度を設定します。レートが増加すると、設定ポリシーコントローラーの応答性が向上し、Kubernetes API サーバーと OpenShift API サーバーの CPU とメモリーの使用率も増加します。デフォルトでは、リクエストのレートは、policy-evaluation-concurrency
設定に応じて調整され、1 秒あたり 30
クエリー (QPS) に設定され、バースト値は 45
で、短期間でより多くのリクエストが発生することを表します。
client-qps
および client-burst
アノテーションを引用符で囲んだゼロ以外の整数で設定することで、レートとバーストを設定できます。ハブクラスターのマネージドクラスター namespace で、ManagedClusterAddOn
オブジェクト名の値を config-policy-controller
に設定できます。
次の YAML の例では、cluster 1
というマネージドクラスター上で 1 秒あたりのクエリーが 20
に設定され、バーストが 100
に設定されています。
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: config-policy-controller namespace: cluster1 annotations: client-qps: "20" client-burst: "100" spec: installNamespace: open-cluster-management-agent-addon
2.4.4. デバッグログを設定する
各ポリシーコントローラーのデバッグログを設定して収集するときに、ログレベルを調整できます。
注: デバッグログの量を減らすと、ログから表示される情報が少なくなります。
ポリシーコントローラーによって発行されるデバッグログを減らして、エラーのみのバグをログに表示するようにできます。デバッグログを減らすには、アノテーションで debug log の値を -1
に設定します。それぞれの値が何を表すかを確認してください。
-
-1
: エラーログのみ -
0
: 情報ログ -
1
: デバッグログ -
2
: 詳細なデバッグログ
Kubernetes 設定コントローラーの第 2 レベルのデバッグ情報を受け取るには、値が 2
の log-level
アノテーションを ManagedClusterAddOn
カスタムリソースに追加します。デフォルトでは、log-level
は 0
に設定されています。つまり、情報メッセージを受信します。以下の例を参照してください。
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: config-policy-controller namespace: cluster1 annotations: log-level: "2" spec: installNamespace: open-cluster-management-agent-addon
さらに、ConfigurationPolicy
リソース内のそれぞれの spec.object-template[]
で、recordDiff
パラメーターを Log
に設定できます。objectDefinition
とマネージドクラスター上のオブジェクトとの差異が、マネージドクラスター上の config-policy-controller
Pod のログに記録されます。以下の例を参照してください。
recordDiff: Log
に設定した ConfigurationPolicy
リソース
apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: my-config-policy spec: object-templates: - complianceType: musthave recordDiff: Log objectDefinition: apiVersion: v1 kind: ConfigMap metadata: name: my-configmap data: fieldToUpdate: "2"
クラスターの ConfigMap
リソースに fieldToUpdate: "1"
がリストされていると、config-policy-controller
Pod のログに次の情報を含む差異が表示されます。
Logging the diff: --- default/my-configmap : existing +++ default/my-configmap : updated @@ -2,3 +2,3 @@ data: - fieldToUpdate: "1" + fieldToUpdate: "2" kind: ConfigMap
重要: セキュアなオブジェクトの差異をログに記録しないでください。差異はプレーンテキストで記録されます。
2.4.5. ガバナンスメトリクス
ポリシーフレームワークは、ポリシーディストリビューションとコンプライアンスを表示するメトリックを公開します。ハブクラスターで policy_governance_info
メトリックを使用してトレンドを表示し、ポリシーの失敗を分析します。メトリックの概要は、次のトピックを参照してください。
2.4.5.1. メトリック: policy_governance_info
OpenShift Container Platform モニタリングコンポーネントは policy_governance_info
メトリックを収集します。可観測性を有効にすると、コンポーネントはいくつかの集約データを収集します。
注記: 可観測性を有効にする場合は、Grafana Explore ページからメトリクスのクエリーを入力します。ポリシーの作成時に、root ポリシーを作成します。フレームワークは、ルートポリシー、Placement
リソース、および PlacementBindings
リソースを監視して、propagated ポリシーを作成する場所の情報を取得し、ポリシーをマネージドクラスターに配布します。
ルートポリシーと伝播ポリシーにはいずれも、ポリシーが準拠している場合は 0
のメトリックが、コンプライアンス違反の場合は 1
が記録されます。
policy_governance_info
メトリックは、以下のラベルを使用します。
-
type
: ラベルの値はroot
またはpropagated
を使用できます。 -
policy
: 関連付けられたルートポリシーの名前。 -
policy_namespace
: ルートポリシーが定義されているハブクラスター上の namespace。 -
cluster_namespace
: ポリシーの分散先のクラスターの namespace。
これらのラベルと値は、クラスターで発生している、追跡が困難なイベントを表示できるクエリーを有効にします。
注記: メトリクスが必要なく、パフォーマンスやセキュリティーに懸念がある場合は、メトリクスの収集を無効にできます。プロパゲーターデプロイメントで DISABLE_REPORT_METRICS
環境変数を true
に設定します。policy_governance_info
メトリックを、可観測性の許可リストにカスタムメトリックとして追加することもできます。詳細は、カスタムメトリクスの追加 を参照してください。
2.4.5.2. メトリック: config_policies_evaluation_duration_seconds
config_policies_evaluation_duration_seconds
ヒストグラムは、クラスターで評価する準備ができているすべての設定ポリシーを処理するのにかかる秒数を追跡します。次のメトリックを使用して、ヒストグラムをクエリーします。
-
config_policies_evaluation_duration_seconds_bucket
: バケットは累積的であり、可能なエントリー (1、3、9、10.5、15、30、60、90、120、180、300、450、600、およびそれ以上) で秒を表します。 -
config_policies_evaluation_duration_seconds_count
: すべてのイベントの数。 -
config_policies_evaluation_duration_seconds_sum
: すべての値の合計。
config_policies_evaluation_duration_seconds
メトリックを使用して、頻繁に評価する必要がないリソース集約型ポリシーの ConfigurationPolicy
evaluationInterval
設定を変更する必要があるかどうかを判断します。また、Kubernetes API サーバーでのリソース使用率が高くなる代わりに、同時実行数を増やすこともできます。詳細は、同時実行の設定 セクションを参照してください。
設定ポリシーの評価に使用された時間に関する情報を取得するには、次の式のような Prometheus クエリーを実行します。
rate(config_policies_evaluation_duration_seconds_sum[10m])/rate (config_policies_evaluation_duration_seconds_count[10m]
open-cluster-management-agent-addon
namespace のマネージドクラスターで実行している config-policy-controller
Pod がメトリックを計算します。デフォルトでは、config-policy-controller
はメトリックを observability に送信しません。
2.4.6. 設定変更を確認する
コントローラーを使用して新しい設定を適用すると、ManifestApplied
パラメーターが ManagedClusterAddOn
で更新されます。その状態のタイムスタンプは、設定を正しく確認するのに役立ちます。たとえば、次のコマンドは、local-cluster
の cert-policy-controller
がいつ更新されたかを確認できます。
oc get -n local-cluster managedclusteraddon cert-policy-controller | grep -B4 'type: ManifestApplied'
次の出力が表示される場合があります。
- lastTransitionTime: "2023-01-26T15:42:22Z" message: manifests of addon are applied successfully reason: AddonManifestApplied status: "True" type: ManifestApplied
2.4.7. 関連情報
- Kubernetes 設定ポリシーコントローラー を参照してください。
- その他のトピックは、Governance トピックに戻ってください。
- このトピックの最初の ポリシーコントローラーの詳細設定 に戻ります。