第3章 Gatekeeper Operator


Gatekeeper は、Open Policy Agent (OPA) で実行されるカスタムリソース定義ベースのポリシーを強制できる監査機能を備えた検証 Webhook です。Gatekeeper Operator ポリシーを使用して、クラスターに Gatekeeper をインストールできます。Gatekeeper 制約を使用して、Kubernetes リソースのコンプライアンスを評価できます。ポリシーエンジンとして OPA を活用し、ポリシー言語に Rego を使用できます。

前提条件: Gatekeeper をインストールし、クラスターに Gatekeeper ポリシーを適用するには、Red Hat Advanced Cluster Management for Kubernetes または Red Hat OpenShift Container Platform Plus サブスクリプションが必要です。Gatekeeper は、最新バージョンの Red Hat Advanced Cluster Management でサポートされるバージョン 3.11 を除く、OpenShift Container Platform のバージョンでのみサポートされます。

Gatekeeper Operator の使用方法の詳細は、以下を参照してください。

3.1. Gatekeeper の制約および制約テンプレートの統合

Gatekeeper ポリシーは、制約テンプレート (ConstraintTemplates) と制約を使用して記述されます。Red Hat Advanced Cluster Management ポリシーで Gatekeeper 制約を使用する以下の YAML の例を表示します。

  • ConstraintTemplates と制約: Red Hat Advanced Cluster Management ポリシーを使用して Gatekeeper 統合機能を使用し、Gatekeeper 制約のマルチクラスター分散とハブクラスターでの Gatekeeper 監査結果の集約を行います。次の例では、Gatekeeper ConstraintTemplate と制約 (K8sRequiredLabels) を定義して、gatekeeper ラベルがすべての namespace に設定されていることを確認します。

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: require-gatekeeper-labels-on-ns
    spec:
      remediationAction: inform 
    1
    
      disabled: false
      policy-templates:
        - objectDefinition:
            apiVersion: templates.gatekeeper.sh/v1beta1
            kind: ConstraintTemplate
            metadata:
              name: k8srequiredlabels
              annotations:
                policy.open-cluster-management.io/severity: low 
    2
    
            spec:
              crd:
                spec:
                  names:
                    kind: K8sRequiredLabels
                  validation:
                    openAPIV3Schema:
                      properties:
                        labels:
                          type: array
                          items: string
              targets:
                - target: admission.k8s.gatekeeper.sh
                  rego: |
                    package k8srequiredlabels
                    violation[{"msg": msg, "details": {"missing_labels": missing}}] {
                      provided := {label | input.review.object.metadata.labels[label]}
                      required := {label | label := input.parameters.labels[_]}
                      missing := required - provided
                      count(missing) > 0
                      msg := sprintf("you must provide labels: %v", [missing])
                    }
        - objectDefinition:
            apiVersion: constraints.gatekeeper.sh/v1beta1
            kind: K8sRequiredLabels
            metadata:
              name: ns-must-have-gk
              annotations:
                policy.open-cluster-management.io/severity: low 
    3
    
            spec:
              enforcementAction: dryrun
              match:
                kinds:
                  - apiGroups: [""]
                    kinds: ["Namespace"]
              parameters:
                labels: ["gatekeeper"]
    Copy to Clipboard Toggle word wrap
    1
    remediationActioninform に設定されているため、Gatekeeper 制約の enforcementAction フィールドは warn にオーバーライドされます。これは、gatekeeper ラベルが欠落している namespace の作成または更新を Gatekeeper が検出し、警告することを意味します。remediationAction ポリシーが enforce に設定されている場合、Gatekeeper 制約の enforcementAction フィールドは deny にオーバーライドされます。このコンテキストでは、この設定により、gatekeeper ラベルが欠落している namespace をユーザーが作成または更新できなくなります。
    2 3
    オプション: 各 Gatekeeper 制約または制約テンプレートに対して、policy.open-cluster-management.io/severity アノテーションの重大度値を設定します。有効な値は、他の Red Hat Advanced Cluster Management ポリシータイプと同じです (lowmediumhigh、または critical)。

    以前のポリシーでは、ポリシーステータスメッセージ warn - you must provide labels: {"gatekeeper"} (on Namespace default); warn - you must provide labels: {"gatekeeper"} (on Namespace gatekeeper-system) が表示される場合があります。Gatekeeper 制約または ConstraintTemplates を含むポリシーが削除されると、制約および ConstraintTemplates もマネージドクラスターから削除されます。

    コンソールから特定のマネージドクラスターの Gatekeeper 監査結果を表示するには、ポリシーテンプレートの Results ページに移動します。検索が有効になっている場合は、監査に失敗した Kubernetes オブジェクトの YAML を表示します。

    注記:

    • Related resources セクションは、監査結果が Gatekeeper バージョン 3.9 以降で生成された場合にのみ使用できます。
    • Gatekeeper の監査機能は、デフォルトでは 1 分ごとに実行されます。監査結果はハブクラスターに返送され、マネージドクラスターの Red Hat Advanced Cluster Management ポリシーステータスで表示されます。
  • policy-gatekeeper-admission: Red Hat Advanced Cluster Management ポリシー内の policy-gatekeeper-admission 設定ポリシーを使用して、Gatekeeper アドミッション Webhook によって拒否された Kubernetes API リクエストを確認します。

    apiVersion: policy.open-cluster-management.io/v1
    kind: ConfigurationPolicy
    metadata:
      name: policy-gatekeeper-admission
    spec:
      remediationAction: inform # will be overridden by remediationAction in parent policy
      severity: low
      object-templates:
        - complianceType: mustnothave
          objectDefinition:
            apiVersion: v1
            kind: Event
            metadata:
              namespace: openshift-gatekeeper-system # set it to the actual namespace where gatekeeper is running if different
              annotations:
                constraint_action: deny
                constraint_kind: K8sRequiredLabels
                constraint_name: ns-must-have-gk
                event_type: violation
    Copy to Clipboard Toggle word wrap

3.1.1. 関連情報

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る