ゲートキーパーコンポーネントは、KubernetesクラスターでOpen Policy Agent (OPA) によって実行されるポリシーの管理と適用を容易にします。 このコンポーネントを使用すると、名前空間のラベルを管理できます。 このトピックでは、gatekeeperの機能、使用法ノート、リリースノートについて説明します。
概要
OPAは、標準化されたコンテキストを意識した方法でポリシーをスタックに実装するために一般的に使用されるオープンソースのポリシーエンジンです。 ゲートキーパーコンポーネントを使用して、OPAポリシーを管理および実装し、Container Service for Kubernetes (ACK) クラスターの名前空間のラベルを管理できます。 OPAの詳細については、「ポリシーエージェントを開く」をご参照ください。 gatekeeperのアーキテクチャを次の図に示します。
gatekeeperのインストール方法の詳細については、「コンポーネントの管理」をご参照ください。
使用上の注意
gatekeeperを使用して、ラベルに基づいて特定の名前空間でのポッドの展開を制限できます。 この例では、特定の名前空間で作成されるすべてのポッドをgatekeeper-test-labelでラベル付けする必要があることを宣言する制約が定義されています。 ゲートキーパーの使用方法の詳細については、「ゲートキーパーの使用方法」をご参照ください。
次のコマンドを実行して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 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]) } 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 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-test-labelラベルが必要です。
リリースノート
12月2024
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
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に更新されました。 ゲートキーパーコンポーネントは、OPAゲートキーパーに依存します。 OPAゲートキーパー3.17.1の詳細については、「リリース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に更新されました。 ゲートキーパーコンポーネントは、OPAゲートキーパーに依存します。 OPAゲートキーパー3.16.3の詳細については、「v3.16.3」をご参照ください。 | コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
March 2024
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
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に更新されました。 ゲートキーパーコンポーネントは、OPAゲートキーパーに依存します。 OPAゲートキーパー3.15.1の詳細については、「v3.15.1」をご参照ください。 | コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
10月2023
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
v3.12.0.138-g1ee37e37-aliyun | registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.12.0.138-g1ee37e37-aliyun | 2023-10-09 |
| コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
April 2023
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
v3.10.0.130-g0e79597d-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.10.0.130-g0e79597d-aliyun | 2023-04-18 |
| コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
6月2022
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
v3.8.1.113-geb7947ef-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.8.1.113-geb7947ef-aliyun | 2022-06-08 |
| コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
April 2022
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
v3.7.1.93-gaf375989-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.1.93-gaf375989-aliyun | 2022-04-02 | 変更機能は、ACKコンソールの [アドオン] ページで有効にできます。 デフォルトでは、変異機能は無効になっています。 変異機能の詳細については、「変異」をご参照ください。 | コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
2月2022
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
v3.7.0.84-gf5fd3ffd-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.0.84-gf5fd3ffd-aliyun | 2022-02-15 | コンポーネントのパフォーマンスが最適化されます。 極端な場合の異常なCPU使用率の問題は修正されています。 | コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
January 2022
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
v3.7.0.82-gafe4391b-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.0.82-gafe4391b-aliyun | 2022-01-14 |
| コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
9月2021
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
v3.6.0.62-g156146d-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.6.0.62-g156146d-aliyun | 2021-09-20 |
| コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
March 2021
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
v3.3.0.24-8e68abc-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.3.0.24-8e68abc-aliyun | 2020-03-16 |
| コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
8月2020
バージョン | 画像アドレス | リリース日 | 説明 | 影響 |
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に更新されました。 ゲートキーパーコンポーネントは、OPAゲートキーパーに依存しています。 説明 OPA Gatekeeperは、ゲートキーパーの開発に基づいたオープンソースプロジェクトです。 | コンポーネントの更新中に例外が発生した場合、クラスターリソースの変更は失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |