|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
|
これは未公開の文書です Admission Controller 1.34-dev. |
新しいGatekeeper Regoポリシーを作成する
このチュートリアルでは、Open Policy Agentで作成したのと同じポリシーを実装します。 具体的には、`default`ネームスペースをターゲットにするリソースを拒否するポリシーです。
|
既存のポリシーを移植するためのベースとして使用できるhttps://github.com/kubewarden/gatekeeper-policy-template[リポジトリテンプレート]があります。 |
ポリシー
Gatekeeperポリシーは、違反オブジェクトを0個以上返す必要があります。 違反が報告されない場合、リクエストは受け入れられます。 1つ以上の違反が報告された場合、リクエストは拒否されます。
`rego-policy`という名前の新しいディレクトリを作成します。 その中に、次の内容を持つ`policy.rego`ファイルを作成します:
package policy
violation[{"msg": msg}] {
input.review.object.metadata.namespace == "default"
msg := "it is forbidden to use the default namespace"
}
この場合、エントリポイントは`policy/violation`であり、Regoの動作により、ポリシーは次の結果を持つことができます:
-
1つの違反を返す:レビューされたオブジェクトがデフォルトのネームスペースをターゲットにしています。
-
0の違反を返す:レビューされたオブジェクトがポリシーに準拠しています。
このポリシーを、Open Policy Agentセクションで作成したものと比較してみてください。
そのポリシーは、全体の`AdmissionReview`レスポンスを構築する必要があり、入力はわずかに異なっていました。
ゲートキーパー モードでは、AdmissionRequest オブジェクトに input.review 属性が提供されます。
AdmissionRequest のすべての属性は object とともに読み取ることができます。
次のセクションで評価するリクエストを作成できます。
最初に、`data`ディレクトリ内に次の内容を持つ`default-ns.json`ファイルを作成します。
{
"apiVersion": "admission.k8s.io/v1",
"kind": "AdmissionReview",
"request": {
"uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
"operation": "CREATE",
"object": {
"kind": "Pod",
"apiVersion": "v1",
"metadata": {
"name": "nginx",
"namespace": "default",
"uid": "04dc7a5e-e1f1-4e34-8d65-2c9337a43e64"
}
}
}
}
今度は、default とは異なるネームスペースをターゲットにした別の AdmissionReview オブジェクトを作成します。
このファイルに other-ns.json という名前を付けてください。
以下の内容があります:
{
"apiVersion": "admission.k8s.io/v1",
"kind": "AdmissionReview",
"request": {
"uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
"operation": "CREATE",
"object": {
"kind": "Pod",
"apiVersion": "v1",
"metadata": {
"name": "nginx",
"namespace": "other",
"uid": "04dc7a5e-e1f1-4e34-8d65-2c9337a43e64"
}
}
}
}
これにより、other というネームスペースの下で別のポッド作成リクエストがシミュレートされることがわかります。