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 の使用方法」をご参照ください。
次のコマンドを実行して、test-gatekeeper という名前のテスト名前空間を作成し、name=test-gatekeeper ラベルを名前空間に追加します。
kubectl create ns test-gatekeeper kubectl label ns test-gatekeeper name=test-gatekeeper次のコマンドを実行して、ポッドラベルの制約を定義するために使用できる制約テンプレートを作成します。
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 秒かかります。
次のコマンドを実行して、前の制約テンプレートから制約を作成します。この制約は、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 秒かかります。
名前空間が制約されているかどうかを確認します。
次のコマンドを実行して、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 createdtest-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 |
| コンポーネントのアップデート中に例外が発生した場合、クラスターリソースの変更が失敗する可能性があります。閑散時にアップデートを実行することをお勧めします。 |
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 |
| コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。ピーク時以外の時間に更新を実行することをお勧めします。 |
2023 年 4 月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v3.10.0.130-g0e79597d-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.10.0.130-g0e79597d-aliyun | 2023-04-18 | コンポーネントの更新中に例外が発生した場合、クラスタリソースの変更が失敗する可能性があります。オフピーク時に更新を実行することをお勧めします。 |
2022 年 6 月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v3.8.1.113-geb7947ef-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.8.1.113-geb7947ef-aliyun | 2022-06-08 |
| コンポーネントの更新中に例外が発生した場合、クラスタリソースの変更が失敗する可能性があります。オフピーク時に更新を実行することをお勧めします。 |
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 |
| コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。オフピーク時に更新を実行することをお勧めします。 |
2021 年 9 月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v3.6.0.62-g156146d-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.6.0.62-g156146d-aliyun | 2021-09-20 |
| コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。ピーク時以外の時間に更新を実行することをお勧めします。 |
2021 年 3 月
バージョン | イメージアドレス | リリース日 | 説明 | 影響 |
v3.3.0.24-8e68abc-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.3.0.24-8e68abc-aliyun | 2021-03-16 |
| コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更が失敗する可能性があります。ピーク時以外の時間に更新を実行することをお勧めします。 |
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 が開発されたベースとなっているオープンソース プロジェクトです。 | コンポーネントの更新中に例外が発生した場合、クラスタ リソースの変更が失敗する可能性があります。ピーク時以外に更新を実行することをお勧めします。 |