3.4. GitOps を使用したポリシーのデプロイ


ガバナンスフレームワークを使用して、マネージドクラスター全体にポリシーセットをデプロイできます。リポジトリーにポリシーを提供して使用することで、オープンソースコミュニティー (policy-collection) に追加できます。詳細は、カスタムポリシーの取得 を参照してください。オープンソースコミュニティーの各 stable および community フォルダーのポリシーは、NIST Special Publication 800-53 に従ってさらに整理されています。

GitOps を使用して Git リポジトリー経由でポリシーの更新や作成を自動化して追跡する時のベストプラクティスを理解するにはこれ以降のセクションを確認してください。

前提条件: 開始する前に、policy-collection リポジトリーをフォークしてください。

3.4.1. ローカルリポジトリーのカスタマイズ

stable および community ポリシーを 1 つのフォルダーにまとめて、ローカルリポジトリーをカスタマイズします。使用しないポリシーを削除します。ローカルリポジトリーをカスタマイズするには、以下の手順を実行します。

  1. リポジトリーに新しいディレクトリーを作成し、デプロイするポリシーを保存します。GitOps のメインのデフォルトブランチに、ローカルの policy-collection リポジトリーにあることを確認します。以下のコマンドを実行します。

    mkdir my-policies
    Copy to Clipboard Toggle word wrap
  2. stable および community ポリシーのすべてを my-policies ディレクトリーにコピーします。stable フォルダーにコミュニティーで利用可能なものが重複している場合があるため、community ポリシーから始めます。以下のコマンドを実行します。

    cp -R community/* my-policies/
    
    cp -R stable/* my-policies/
    Copy to Clipboard Toggle word wrap

    すべてのポリシーの構造は単一の親ディレクトリーとなっているため、フォークでポリシーを編集できます。

    ヒント:

    • 使用の予定がないポリシーを削除するのがベストプラクティスです。
    • 以下のリストでポリシーおよびポリシーの定義について確認してください。

      • 目的: ポリシーのロールを理解する。
      • 修復アクション: ポリシーで、コンプライアンスの通知だけを行うのか、ポリシーを強制して、変更を加えるのか ?spec.remediationAction パラメーターを参照してください。変更が適用される場合は、想定されている機能を理解するようにしてください。強制のサポートがあるポリシーを確認してください。詳細は、Validate セクションを参照してください。

        注記: ポリシーに設定された spec.remediationAction は、個別の spec.policy-templates で設定される修復アクションを上書きします。

      • 配備: ポリシーのデプロイ先のクラスターは ?デフォルトでは、ほとんどのポリシーは、environment: dev ラベルの付いたクラスターを対象にしています。ポリシーによっては、OpenShift Container Platform クラスターまたは別のラベルをターゲットにできます。追加のラベルを更新または追加して、他のクラスターを組み込むことができます。特定の値がない場合、ポリシーはすべてのクラスターに適用されます。また、ポリシーのコピーを複数作成し、クラスターセットごとに各ポリシーをカスタマイズして、別のクラスターセットには別の方法で設定することができます。

3.4.2. ローカルリポジトリーへのコミット

ディレクトリーに行った変更に問題がなければ、変更を Git にコミットしてプッシュし、クラスターによるアクセスを可能にします。

注記: この例は、GitOps でポリシーを使用する基本的な方法を示しており、ブランチの変更を取得する場合には別のワークフローを使用する場合があります。

以下の手順を実行します。

  1. ターミナルから git status を実行して、以前に作成したディレクトリーに最新の変更を確認します。以下のコマンドを使用して、コミットする変更リストに新しいディレクトリーを追加します。

    git add my-policies/
    Copy to Clipboard Toggle word wrap
  2. 変更をコミットし、メッセージをカスタマイズします。以下のコマンドを実行します。

    git commit -m “Policies to deploy to the hub cluster”
    Copy to Clipboard Toggle word wrap
  3. GitOps に使用するフォークしたリポジトリーのブランチに、変更をプッシュします。以下のコマンドを実行します。

    git push origin <your_default_branch>master
    Copy to Clipboard Toggle word wrap

変更がコミットされます。

3.4.3. クラスターへのポリシーのデプロイ

変更をプッシュしたら、ポリシーを Red Hat Advanced Cluster Management for Kubernetes インストールにデプロイできます。デプロイメント後、ハブクラスターは Git リポジトリーに通知されます。Git リポジトリーの選択したブランチに追加された変更がクラスターに反映されます。

注記: デフォルトでは、GitOps でデプロイされるポリシーは マージ の調整オプションを使用します。代わりに replace 調整オプションを使用する場合は、apps.open-cluster-management.io/reconcile-option: replace アノテーションを Subscription リソースに追加します。詳細は、アプリケーションライフサイクル を参照してください。

deploy.sh スクリプトは、ハブクラスターに Channel および Subscription リソースを作成します。チャネルは Git リポジトリーに接続し、サブスクリプションは、チャネルを介してクラスターに配置するデータを指定します。その結果、指定のサブディレクトリーで定義された全ポリシーがハブに作成されます。サブスクリプションによりポリシーが作成されると、Red Hat Advanced Cluster Management はポリシーを分析し、定義した配置ルールに基づいて、ポリシーが適用される各マネージドクラスターに関連付けられた namespace に追加のポリシーリソースを作成します。

その後、ポリシーはハブクラスター上にある該当するマネージドクラスターの namespace からマネージドクラスターにコピーされます。そのため、Git リポジトリーのポリシーは、ポリシーの配置ルールで定義される clusterSelector に一致するラベルが付いた全マネージドクラスターにプッシュされます。

以下の手順を実行します。

  1. policy-collection フォルダーから、以下のコマンドを実行してディレクトリーを変更します。

    cd deploy
    Copy to Clipboard Toggle word wrap
  2. 以下のコマンドで、コマンドラインインターフェイス (CLI) が正しいクラスターでリソースを作成するように設定されていることを確認します。

    oc cluster-info
    Copy to Clipboard Toggle word wrap

    コマンドの出力には、Red Hat Advanced Cluster Management がインストールされているクラスターの API サーバーの詳細が表示されます。正しい URL が表示されない場合は、CLI を正しいクラスターを参照するように設定します。詳細情報は、OpenShift CLI の使用 セクションを参照してください。

  3. アクセス制御およびポリシー整理を行うポリシーの作成先の namespace を作成します。以下のコマンドを実行します。

    oc create namespace policy-namespace
    Copy to Clipboard Toggle word wrap
  4. 以下のコマンドを実行してクラスターにポリシーをデプロイします。

    ./deploy.sh -u https://github.com/<your-repository>/policy-collection -p my-policies -n policy-namespace
    Copy to Clipboard Toggle word wrap

    your-repository は、Git ユーザー名またはリポジトリー名に置き換えます。

    注記: 参考までに、deploy.sh スクリプトの引数の全リストでは、以下の構文を使用します。

    ./deploy.sh [-u <url>] [-b <branch>] [-p <path/to/dir>] [-n <namespace>] [-a|--name <resource-name>]
    Copy to Clipboard Toggle word wrap

    引数については、以下のドキュメントを参照してください。

    • URL: メインの policy-collection リポジトリーからフォークしたリポジトリーへの URL。デフォルトの URL は https://github.com/stolostron/policy-collection.git です。
    • ブランチ: 参照する Git リポジトリーのブランチ。デフォルトのブランチは main です。
    • サブディレクトリーパス: 使用するポリシーを含めるために作成したサブディレクトリーパス。上記のサンプルでは my-policies サブディレクトリーを使用しましたが、開始するフォルダーを指定することもできます。たとえば、my-policies/AC-Access-Control を使用できます。デフォルトのフォルダーは stable です。
    • Namespace: リソースおよびポリシー作成先のハブクラスター上の namespace。これらの手順では、namespace policy-namespace を使用します。デフォルトの namespace は policies です。
    • 名前のプレ接頭辞: Channel および Subscription リソースの接頭辞。デフォルトは demo-stable-policies です。

deploy.sh スクリプトの実行後に、リポジトリーにアクセスできるユーザーはブランチに変更をコミットできます。これにより、クラスターの既存のポリシーに変更がプッシュされます。

注意: サブスクリプションを使用してポリシーをデプロイするには、次の手順を実行します。

  1. open-cluster-management:subscription-admin ClusterRole をサブスクリプションを作成するユーザーにバインドします。
  2. サブスクリプションで許可リストを使用している場合は、次の API エントリーを含めます。

        - apiVersion: policy.open-cluster-management.io/v1
          kinds:
            - "*"
        - apiVersion: policy.open-cluster-management.io/v1beta1
          kinds:
            - "*"
        - apiVersion: apps.open-cluster-management.io/v1
          kinds:
            - PlacementRule
        - apiVersion: cluster.open-cluster-management.io/v1beta1
          kinds:
            - Placement
    Copy to Clipboard Toggle word wrap

3.4.4. コンソールからの GitOps ポリシーデプロイメントの確認

変更がコンソールからポリシーに適用されていることを確認します。コンソールからポリシーをさらに変更することもできますが、Subscription と Git リポジトリーと調整すると、これらの変更は元に戻されます。以下の手順を実行します。

  1. Red Hat Advanced Cluster Management クラスターにログインします。
  2. ナビゲーションメニューから Govern を選択します。
  3. 表にデプロイされたポリシーを見つけます。GitOps を使用してデプロイしたポリシーには、Source 列に Git ラベルが付いています。ラベルをクリックして、Git リポジトリーの詳細を表示します。

3.4.4.1. CLI からの GitOps ポリシーデプロイメントの確認

以下の手順を実行します。

  1. 以下のポリシーの詳細を確認してください。

    • 配信先のクラスターで特定のポリシーが準拠している/準拠していないのはなぜか ?
    • ポリシーが正しいクラスターに適用されているか ?
    • このポリシーがクラスターに配布されていない場合は、なぜか ?
  2. 作成または変更した GitOps のデプロイポリシーを特定します。GitOps のデプロイポリシーは、自動適用されるアノテーションで特定できます。GitOps のデプロイポリシーのアノテーションは、以下のパスのようになります。

    apps.open-cluster-management.io/hosting-deployable: policies/deploy-stable-policies-Policy-policy-role9
    
    apps.open-cluster-management.io/hosting-subscription: policies/demo-policies
    
    apps.open-cluster-management.io/sync-source: subgbk8s-policies/demo-policies
    Copy to Clipboard Toggle word wrap

    GitOps アノテーションは、ポリシーが作成されたサブスクリプションを確認するのに役立ちます。独自のラベルをポリシーに追加して、ラベルに基づいてポリシーを選択するランタイムクエリーを作成することもできます。

    たとえば、次のコマンドを使用してポリシーにラベルを追加できます。

    oc label policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace> <key>=<value>
    Copy to Clipboard Toggle word wrap

    続いて、以下のコマンドでラベルのあるポリシーをクエリーします。

    oc get policies.policy.open-cluster-management.io -n <policy-namespace> -l <key>=<value>
    Copy to Clipboard Toggle word wrap

ポリシーは GitOps を使用してデプロイされます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat