すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:gatekeeper の概要とリリースノート

最終更新日:Apr 30, 2025

gatekeeper コンポーネントは、Kubernetes クラスターで Open Policy Agent (OPA) によって実行されるポリシーの管理と適用を容易にします。このコンポーネントを使用すると、名前空間のラベルを管理できます。このトピックでは、gatekeeper の機能、使用上の注意、およびリリースノートについて説明します。

概要

OPA は、スタック内のポリシーを標準化されたコンテキスト対応の方法で実装するために一般的に使用されるオープンソースのポリシーエンジンです。 gatekeeper コンポーネントを使用して、OPA ポリシーの管理と実装、および Container Service for Kubernetes (ACK) クラスター内の名前空間のラベルの管理を行うことができます。 OPA の詳細については、「Open Policy Agent」をご参照ください。次の図は、gatekeeper のアーキテクチャを示しています。

gatekeeper のインストール方法の詳細については、「コンポーネントの管理」をご参照ください。

使用上の注意

gatekeeper を使用して、ラベルに基づいて特定の名前空間へのポッドのデプロイを制限できます。この例では、特定の名前空間で作成されるすべてのポッドに gatekeeper-test-label のラベルを付ける必要があることを宣言する制約が定義されています。 gatekeeper の使用方法の詳細については、「Gatekeeper の使用方法」をご参照ください。

  1. 次のコマンドを実行して、test-gatekeeper という名前のテスト名前空間を作成し、name=test-gatekeeper ラベルを名前空間に追加します。

    kubectl create ns test-gatekeeper
    kubectl label ns test-gatekeeper name=test-gatekeeper
  2. 次のコマンドを実行して、ポッドラベルの制約を定義するために使用できる制約テンプレートを作成します。

    kubectl apply -f - <<EOF
    apiVersion: templates.gatekeeper.sh/v1beta1
    kind: ConstraintTemplate
    metadata:
      name: k8srequiredlabels
    spec:
      crd:
        spec:
          names:
            kind: K8sRequiredLabels
          validation:
            openAPIV3Schema:
              properties:
                labels:
                  type: array
                  items:
                    type: string
      targets:
        - target: admission.k8s.gatekeeper.sh
          rego: |
            package k8srequiredlabels  // パッケージ 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]) // ラベルを指定する必要があります: %v
            }
    EOF

    制約テンプレートの初期化には約 10 秒かかります。

  3. 次のコマンドを実行して、前の制約テンプレートから制約を作成します。この制約は、name=test-gatekeeper ラベルを持つ名前空間で作成されるすべてのポッドに gatekeeper-test-label のラベルを付ける必要があることを宣言します。

    kubectl apply -f - <<EOF
    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: K8sRequiredLabels
    metadata:
      name: pod-must-have-gatekeeper-test-label
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaceSelector:
          matchExpressions:
          - key: name
            operator: In
            values: ["test-gatekeeper"]
      parameters:
        labels: ["gatekeeper-test-label"]
    
    EOF

    制約の初期化には約 10 秒かかります。

  4. 名前空間が制約されているかどうかを確認します。

    • 次のコマンドを実行して、test-gatekeeper 名前空間に gatekeeper-test-label ラベルが付いていないポッドを作成します。 test-gatekeeper 名前空間には name=test-gatekeeper ラベルが付いています。

      kubectl -n test-gatekeeper run test-deny --image=nginx --restart=Never

      予期される出力:

      Error from server ([denied by pod-must-have-gatekeeper-test-label] you must provide labels: {"gatekeeper-test-label"}): admission webhook "validation.gatekeeper.sh" denied the request: [denied by pod-must-have-gatekeeper-test-label] you must provide labels: {"gatekeeper-test-label"}

      test-gatekeeper 名前空間には name=test-gatekeeper ラベルが付いています。ポッドは gatekeeper-test-label ラベルなしで作成されます。そのため、ポッドの作成は失敗します。

    • 次のコマンドを実行して、test-gatekeeper 名前空間に gatekeeper-test-label ラベルが付いたポッドを作成します。 test-gatekeeper 名前空間には name=test-gatekeeper ラベルが付いています。

      kubectl -n test-gatekeeper run test-pass -l gatekeeper-test-label=pass --image=nginx --restart=Never

      予期される出力:

      pod/test-pass created

      test-gatekeeper 名前空間には name=test-gatekeeper ラベルが付いています。ポッドは gatekeeper-test-label ラベル付きで作成されます。そのため、ポッドの作成は成功します。

    • 次のコマンドを実行して、制約の対象ではない名前空間に name=test-gatekeeper ラベルが付いていないポッドを作成します。

      kubectl -n default run test-deny --image=nginx --restart=Never

      予期される出力:

      pod/test-deny created

      名前空間は制約の対象ではありません。そのため、ポッドの作成は成功します。作成されたポッドには name=test-gatekeeper ラベルは付いていません。

    上記の手順は、gatekeeper を使用して特定の名前空間でのポッドの作成を制限できることを示しています。この例では、名前空間で作成されるポッドには gatekeeper-test-label ラベルが必要です。

リリースノート

2025 年 3 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.18.2.192-ge2860248-aliyun

registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.18.2.192-ge2860248-aliyun

2025-03-04

  • OPA Gatekeeper が 3.18.2 にアップデートされました。 gatekeeper コンポーネントは OPA Gatekeeper に依存しています。詳細については、「v3.18.2」をご参照ください。

  • コンポーネントの Go バージョンが 1.23.6 にアップグレードされ、安定性が向上しました。

コンポーネントのアップデート中に例外が発生した場合、クラスターリソースの変更が失敗する可能性があります。閑散時にアップデートを実行することをお勧めします。

2024 年 12 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.17.1.174-g6383c639-aliyun

registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.17.1.174-g6383c639-aliyun

2024-12-09

OPA Gatekeeper が 3.17.1 にアップデートされました。 gatekeeper コンポーネントは OPA Gatekeeper に依存しています。詳細については、「v3.17.1」をご参照ください。

コンポーネントのアップデート中に例外が発生した場合、クラスターリソースの変更が失敗する可能性があります。閑散時にアップデートを実行することをお勧めします。

9月 2024

バージョン

イメージアドレス

リリース日

説明

影響

v3.16.3.158-g5e73c0ad-aliyun

registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.16.3.158-g5e73c0ad-aliyun

2024-09-25

OPA Gatekeeper が 3.16.3 に更新されました。 gatekeeper コンポーネントは OPA Gatekeeper に依存しています。 詳細については、「v3.16.3」をご参照ください。

コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。ピーク時以外の時間に更新を実行することをお勧めします。

2024 年 3 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.15.1.150-g29b8b2a8-aliyun

registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.15.1.150-g29b8b2a8-aliyun

2024-03-27

OPA Gatekeeper が 3.15.1 に更新されました。gatekeeper コンポーネントは OPA Gatekeeper に依存しています。詳細については、「v3.15.1」をご参照ください。

コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。オフピーク時に更新を実行することをお勧めします。

2023 年 10 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.12.0.138-g1ee37e37-aliyun

registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.12.0.138-g1ee37e37-aliyun

2023-10-09

  • OPA Gatekeeper が 3.12.0 に更新されました。gatekeeper コンポーネントは OPA Gatekeeper に依存しています。詳細については、「v3.12.0」をご参照ください。

  • サービス削除イベントを処理するようにポリシーを設定できるようになりました。

コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。ピーク時以外の時間に更新を実行することをお勧めします。

2023 年 4 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.10.0.130-g0e79597d-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.10.0.130-g0e79597d-aliyun

2023-04-18

  • OPA Gatekeeper が 3.10.0 に更新されました。gatekeeper コンポーネントは OPA Gatekeeper に依存しています。詳細については、「v3.10.0」をご参照ください。

  • デフォルトでは、データレプリケーション機能は無効になっています。この機能は、アドオン ページの ACK コンソールで有効にできます。詳細については、「データの複製」をご参照ください。

  • 名前空間削除イベントを処理するようにポリシーを設定できます。

  • Kubernetes 1.26 がサポートされています。

コンポーネントの更新中に例外が発生した場合、クラスタリソースの変更が失敗する可能性があります。オフピーク時に更新を実行することをお勧めします。

2022 年 6 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.8.1.113-geb7947ef-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.8.1.113-geb7947ef-aliyun

2022-06-08

  • OPA Gatekeeper が 3.8.1 に更新されました。Gatekeeper コンポーネントは OPA Gatekeeper に依存しています。詳細については、「v3.8.1」をご参照ください。

  • デフォルトでは、監査ポッドは無効になっています。[アドオン] ページの ACK コンソールで監査ポッドを有効にできます。

  • CPU リソース、メモリ、およびレプリケートされたポッドの数に関するコンポーネント構成は、[アドオン] ページの ACK コンソールで変更できます。

コンポーネントの更新中に例外が発生した場合、クラスタリソースの変更が失敗する可能性があります。オフピーク時に更新を実行することをお勧めします。

2022 年 4 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.7.1.93-gaf375989-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.1.93-gaf375989-aliyun

2022-04-02

[アドオン] ページで Mutation 機能を有効にできます。デフォルトでは、Mutation 機能は無効になっています。詳細については、「Mutation」をご参照ください。

コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。ピーク時以外の時間に更新を実行することをお勧めします。

2022 年 2 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.7.0.84-gf5fd3ffd-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.0.84-gf5fd3ffd-aliyun

2022-02-15

コンポーネントのパフォーマンスが最適化されました。 極端なケースにおける CPU 使用率の異常な問題が修正されました。

コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。 ピーク時以外の時間に更新を実行することをお勧めします。

2022 年 1 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.7.0.82-gafe4391b-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.0.82-gafe4391b-aliyun

2022-01-14

  • OPA Gatekeeper が 3.7.0 に更新されました。gatekeeper コンポーネントは OPA Gatekeeper に依存しています。詳細については、「v3.7.0」をご参照ください。

  • ARM64 アーキテクチャがサポートされています。

コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。オフピーク時に更新を実行することをお勧めします。

2021 年 9 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.6.0.62-g156146d-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.6.0.62-g156146d-aliyun

2021-09-20

  • Gatekeeper 3.6.0.62 以降のバージョンは、Kubernetes 1.16.9 以降を実行する ACK クラスタのみをサポートしています。

  • OPA Gatekeeper が 3.6.0 に更新されました。Gatekeeper コンポーネントは OPA Gatekeeper に依存しています。詳細については、「v3.6.0」をご参照ください。

コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。ピーク時以外の時間に更新を実行することをお勧めします。

2021 年 3 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.3.0.24-8e68abc-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.3.0.24-8e68abc-aliyun

2021-03-16

  • Gatekeeper は登録済みクラスターにインストールできます。

  • OPA Gatekeeper が 3.3.0 に更新されました。Gatekeeper コンポーネントは OPA Gatekeeper に依存しています。

コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更が失敗する可能性があります。ピーク時以外の時間に更新を実行することをお勧めします。

2020 年 8 月

バージョン

イメージアドレス

リリース日

説明

影響

v3.1.0.11-24bab09-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.1.0.11-24bab09-aliyun

2020-08-20

OPA Gatekeeper が 3.1.0-beta.12 に更新されました。 gatekeeper コンポーネントは OPA Gatekeeper に依存しています。

説明

OPA Gatekeeper は、gatekeeper が開発されたベースとなっているオープンソース プロジェクトです。

コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。ピーク時以外に更新を実行することをお勧めします。