検索

2.4. ポリシーコントローラーの高度な設定

download PDF

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 レベルのデバッグ情報を受け取るには、値が 2log-level アノテーションを ManagedClusterAddOn カスタムリソースに追加します。デフォルトでは、log-level0 に設定されています。つまり、情報メッセージを受信します。以下の例を参照してください。

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-clustercert-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. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.