2.5. ポリシーコンプライアンス履歴 (テクノロジープレビュー)


ポリシーコンプライアンス履歴 API は、Red Hat Advanced Cluster Management for Kubernetes のポリシーコンプライアンスイベントをクエリー可能な形式で長期間保存する場合に使用できる、オプションのテクニカルプレビュー機能です。この API を使用すると、spec フィールドなどの追加の詳細を取得して、ポリシーを監査およびトラブルシューティングできます。また、ポリシーが無効化されたりクラスターから削除されたりしたときに、コンプライアンスイベントを取得できます。ポリシーコンプライアンス履歴 API は、監査とトラブルシューティングに役立つ、ポリシーコンプライアンスイベントのコンマ区切り値 (CSV) スプレッドシートを生成することもできます。

ポリシーコンプライアンス履歴 API は、さらなる監査とトラブルシューティングのために、ポリシーコンプライアンスイベントのコンマ区切り値 (CSV) スプレッドシートを生成することもできます。

2.5.1. 前提条件

  • ポリシーコンプライアンス履歴 API には、バージョン 13 以降の PostgreSQL サーバーが必要です。

    Red Hat がサポートする方式は、registry.redhat.io/rhel9/postgresql-15 コンテナーイメージ、registry.redhat.io/rhel8/postgresql-13 コンテナーイメージ、postgresql-server RPM、または postgresql/server モジュールの使用です。各方式のセットアップと設定は、該当する Red Hat 公式ドキュメントを確認してください。ポリシーコンプライアンス履歴 API は、あらゆる標準 PostgreSQL と互換性があり、Red Hat が公式にサポートする製品に限定されません。

  • この PostgreSQL サーバーには、Red Hat Advanced Cluster Management ハブクラスターからアクセスできる必要があります。PostgreSQL サーバーがハブクラスターの外部で実行されている場合は、ハブクラスターが PostgreSQL サーバーのポート 5432 に接続できるように、ルーティングとファイアウォールの設定を確認してください。このポートは、PostgreSQL 設定で上書きされている場合、異なる値である場合があります。

2.5.2. コンプライアンス履歴 API の有効化

ポリシーコンプライアンスイベントを API に記録するようにマネージドクラスターを設定します。これは、すべてのクラスターまたはクラスターのサブセットで有効にできます。以下の手順を実行します。

  1. PostgreSQL サーバーをクラスター管理者として設定します。Red Hat Advanced Cluster Management ハブクラスターに PostgreSQL をデプロイした場合は、psql コマンドを使用するために PostgreSQL ポートを一時的にポート転送します。以下のコマンドを実行します。

    oc -n <PostgreSQL namespace> port-forward <PostgreSQL pod name> 5432:5432
    Copy to Clipboard Toggle word wrap
  2. 別のターミナルで、次のようなコマンドを使用して PostgreSQL サーバーにローカルで接続します。

    psql 'postgres://postgres:@127.0.0.1:5432/postgres'
    Copy to Clipboard Toggle word wrap
  3. 次の SQL ステートメントを使用して、Red Hat Advanced Cluster Management ハブクラスターのユーザーとデータベースを作成します。

    CREATE USER "rhacm-policy-compliance-history" WITH PASSWORD '<replace with password>';
    CREATE DATABASE "rhacm-policy-compliance-history" WITH OWNER="rhacm-policy-compliance-history";
    Copy to Clipboard Toggle word wrap
  4. ポリシーコンプライアンス履歴 API にこのデータベースを使用するには、governance-policy-database Secret リソースを作成します。以下のコマンドを実行します。

    oc -n open-cluster-management create secret generic governance-policy-database \ 
    1
    
        --from-literal="user=rhacm-policy-compliance-history" \
        --from-literal="password=rhacm-policy-compliance-history" \
        --from-literal="host=<replace with host name of the Postgres server>" \ 
    2
    
        --from-literal="dbname=ocm-compliance-history" \
      --from-literal="sslmode=verify-full" \
        --from-file="ca=<replace>" 
    3
    Copy to Clipboard Toggle word wrap
    1
    Red Hat Advanced Cluster Management がインストールされている namespace を追加します。デフォルトでは、Red Hat Advanced Cluster Management は open-cluster-management namespace にインストールされます。
    2
    PostgresQL サーバーのホスト名を追加します。PostgreSQL サーバーを Red Hat Advanced Cluster Management ハブクラスターにデプロイし、クラスターの外部に公開されていない場合は、ホスト値に Service オブジェクトを使用できます。形式は <service name>.<namespace>.svc です。このアプローチは、Red Hat Advanced Cluster Management ハブクラスターのネットワークポリシーに依存することに注意してください。
    3
    PostgreSQL サーバーの TLS 証明書に署名した証明機関の証明書ファイルを ca データフィールドに指定する必要があります。この値を指定しない場合は、それに応じて sslmode 値を変更する必要があります。ただし、これはデータベース接続のセキュリティーが低下するため、推奨しません。
  5. Red Hat Advanced Cluster Management ハブクラスターの復元操作のために Secret リソースをバックアップするには、cluster.open-cluster-management.io/backup ラベルを追加します。以下のコマンドを実行します。

    oc -n open-cluster-management label secret governance-policy-database cluster.open-cluster-management.io/backup=""
    Copy to Clipboard Toggle word wrap
  6. PostgreSQL 接続をさらにカスタマイズするには、connectionURL データフィールドを直接使用し、PostgreSQL 接続 URI の形式で値を指定します。パスワード内の特殊文字は URL エンコードする必要があります。1 つの方法として、Python を使用してパスワードの URL エンコード形式を生成する方法があります。たとえば、パスワードが $uper<Secr&t%> の場合は、次の Python コマンドを実行して出力 %24uper%3CSecr%26t%25%3E を取得します。

    python -c 'import urllib.parse; import sys; print(urllib.parse.quote(sys.argv[1]))' '$uper<Secr&t%>'
    Copy to Clipboard Toggle word wrap
  7. governance-policy-database Secret を作成した後、コマンドを実行してポリシーコンプライアンス履歴 API をテストします。OpenShift Route オブジェクトが同じ namespace に自動的に作成されます。Red Hat Advanced Cluster Management ハブクラスターのルートが信頼できる証明書を利用していない場合は、curl コマンドで -k フラグを指定して TLS 検証をスキップすることもできます。ただし、これは推奨されません。

    curl -H "Authorization: Bearer $(oc whoami --show-token)" \
        "https://$(oc -n open-cluster-management get route governance-history-api -o jsonpath='{.spec.host}')/api/v1/compliance-events"
    Copy to Clipboard Toggle word wrap
    • 成功すると、curl コマンドは次のメッセージのような値を返します。

      {"data":[],"metadata":{"page":1,"pages":0,"per_page":20,"total":0}}
      Copy to Clipboard Toggle word wrap
    • 成功しないと、curl コマンドは次の 2 つのメッセージのいずれかを返す可能性があります。

      {"message":"The database is unavailable"}
      Copy to Clipboard Toggle word wrap
      {"message":"Internal Error"}
      Copy to Clipboard Toggle word wrap
      1. メッセージを受け取った場合は、次のコマンドを使用して、open-cluster-management namespace 内の Kubernetes イベントを表示します。

        oc -n open-cluster-management get events --field-selector reason=OCMComplianceEventsDBError
        Copy to Clipboard Toggle word wrap
      2. イベントから governance-policy-propagator ログを表示する指示を受け取った場合は、次のコマンドを実行します。

        oc -n open-cluster-management logs -l name=governance-policy-propagator -f
        Copy to Clipboard Toggle word wrap
      3. ユーザー、パスワード、またはデータベースが正しく指定されていないことを示すエラーメッセージが表示される場合があります。次のメッセージの例を参照してください。

        2024-03-05T12:17:14.500-0500	info	compliance-events-api	complianceeventsapi/complianceeventsapi_controller.go:261	The database connection failed: pq: password authentication failed for user "rhacm-policy-compliance-history"
        Copy to Clipboard Toggle word wrap
      4. 次のコマンドを使用して、governance-policy-database Secret リソースを正しい PostgreSQL 接続設定で更新します。
    oc -n open-cluster-management edit secret governance-policy-database
    Copy to Clipboard Toggle word wrap

2.5.3. コンプライアンス履歴 API URL を設定する

マネージドクラスターで機能を有効にするには、ポリシーコンプライアンス履歴 API URL を設定します。以下の手順を実行します。

  1. 次のコマンドを使用して、ポリシーコンプライアンス履歴 API の外部 URL を取得します。

    echo "https://$(oc -n open-cluster-management get route governance-history-api -o=jsonpath='{.spec.host}')"
    Copy to Clipboard Toggle word wrap

    出力は、次の情報のようになり、Red Hat Advanced Cluster Management ハブクラスターのドメイン名を含んでいます。

    https://governance-history-api-open-cluster-management.apps.openshift.redhat.com
    Copy to Clipboard Toggle word wrap
  2. 次の例のような AddOnDeploymentConfig オブジェクトを作成します。

    apiVersion: addon.open-cluster-management.io/v1alpha1
    kind: AddOnDeploymentConfig
    metadata:
      name: governance-policy-framework
      namespace: open-cluster-management
    spec:
      customizedVariables:
        - name: complianceHistoryAPIURL
          value: <replace with URL from previous command>
    Copy to Clipboard Toggle word wrap
    • value パラメーター値は、コンプライアンス履歴の外部 URL に置き換えます。

2.5.3.1. すべてのマネージドクラスターで有効にする

すべてのマネージドクラスターでコンプライアンス履歴 API を有効にして、マネージドクラスターからのコンプライアンスイベントを記録します。以下の手順を実行します。

  1. 次のコマンドを使用して、governance-policy-framework ClusterManagementAddOn オブジェクトが AddOnDeploymentConfig を使用するように設定します。

    oc edit ClusterManagementAddOn governance-policy-framework
    Copy to Clipboard Toggle word wrap
  2. spec.supportedConfigs 配列を追加または更新します。リソースの設定は次のようになります。

      - group: addon.open-cluster-management.io
        resource: addondeploymentconfigs
        defaultConfig:
          name: governance-policy-framework
          namespace: open-cluster-management
    Copy to Clipboard Toggle word wrap

2.5.3.2. 単一のマネージドクラスターを有効にする

単一のマネージドクラスターでコンプライアンス履歴 API を有効にして、マネージドクラスターからのコンプライアンスイベントを記録します。以下の手順を実行します。

  1. マネージドクラスター namespace で、governance-policy-framework ManagedClusterAddOn リソースを設定します。次のコマンドを使用して、Red Hat Advanced Cluster Management ハブクラスターから次のコマンドを実行します。

    oc -n <manage-cluster-namespace> edit ManagedClusterAddOn governance-policy-framework
    Copy to Clipboard Toggle word wrap
    • <manage-cluster-namespace> プレースホルダーは、有効にするマネージドクラスターの名前に置き換えます。
  2. spec.configs 配列を追加または更新し、次の例のようなエントリーを含めます。

    - group: addon.open-cluster-management.io
      resource: addondeploymentconfigs
      name: governance-policy-framework
      namespace: open-cluster-management
    Copy to Clipboard Toggle word wrap
  3. 設定を確認するには、マネージドクラスター上のデプロイメントで --compliance-api-url コンテナー引数が使用されていることを確認します。以下のコマンドを実行します。

    oc -n open-cluster-management-agent-addon get deployment governance-policy-framework -o jsonpath='{.spec.template.spec.containers[1].args}'
    Copy to Clipboard Toggle word wrap

    出力は次の例のような内容になります。

    ["--enable-lease=true","--hub-cluster-configfile=/var/run/klusterlet/kubeconfig","--leader-elect=false","--log-encoder=console","--log-level=0","--v=-1","--evaluation-concurrency=2","--client-max-qps=30","--client-burst=45","--disable-spec-sync=true","--cluster-namespace=local-cluster","--compliance-api-url=https://governance-history-api-open-cluster-management.apps.openshift.redhat.com"]
    Copy to Clipboard Toggle word wrap

    新しいポリシーコンプライアンスイベントが、すべてポリシーコンプライアンス履歴 API に記録されます。

    1. 特定のマネージドクラスターのポリシーコンプライアンスイベントが記録されていない場合は、影響を受けるマネージドクラスターの governance-policy-framework ログを表示します。

      oc -n open-cluster-management-agent-addon logs deployment/governance-policy-framework -f
      Copy to Clipboard Toggle word wrap
    2. 次のメッセージに類似したログメッセージが表示されます。message 値が空の場合は、ポリシーコンプライアンス履歴 API の URL が正しくないか、ネットワーク通信の問題が発生しています。

      024-03-05T19:28:38.063Z        info    policy-status-sync      statussync/policy_status_sync.go:750    Failed to record the compliance event with the compliance API. Will requeue.       {"statusCode": 503, "message": ""}
      Copy to Clipboard Toggle word wrap
    3. ポリシーコンプライアンス履歴 API URL が正しくない場合は、次のコマンドを使用してハブクラスターの URL を編集します。

      oc -n open-cluster-management edit AddOnDeploymentConfig governance-policy-framework
      Copy to Clipboard Toggle word wrap

      注記: ネットワーク通信の問題が発生した場合は、ネットワークインフラストラクチャーに基づいて問題を診断する必要があります。

2.5.4. 関連情報

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る