|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
|
これは未公開の文書です Admission Controller 1.34-dev. |
変更ポリシー
変更ポリシーの構造は、検証ポリシーと同じです:
-
`validate`および`validate_settings`のwaPC関数を登録する必要があります。
-
ホストとポリシー間で使用される通信APIは、検証ポリシーで使用されるものと同じです。
変更ポリシーはリクエストを受け入れ、`ValidationResponse`オブジェクトを返すことによって、受信オブジェクトの変更を提案できます。これは次のようになります:
{
"accepted": true,
"mutated_object": <object to be created>
}
`mutated_object`フィールドには、ポリシーがKubernetesクラスター内で作成したいオブジェクトが含まれており、JSONにシリアライズされています。
具体的な例
ポリシーがこの`ValidationRequest`を受け取ったと仮定します:
{
"settings": {},
"request": {
"operation": "CREATE",
"object": {
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "security-context-demo-4"
},
"spec": {
"containers": [
{
"name": "sec-ctx-4",
"image": "gcr.io/google-samples/node-hello:1.0",
"securityContext": {
"capabilities": {
"add": ["NET_ADMIN", "SYS_TIME"]
}
}
}
]
}
}
}
}
|
この例では、重要なフィールドのみが`request`オブジェクトに含まれています。 |
このリクエスト生成は、誰かが次のようなPodを作成しようとしたために発生します:
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo-4
spec:
containers:
- name: sec-ctx-4
image: gcr.io/google-samples/node-hello:1.0
securityContext:
capabilities:
add:
- NET_ADMIN
- SYS_TIME
ポリシーが次の`ValidationResponse`で応答すると仮定します:
{
"accepted": true,
"mutated_object": {
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "security-context-demo-4"
},
"spec": {
"containers": [
{
"name": "sec-ctx-4",
"image": "gcr.io/google-samples/node-hello:1.0",
"securityContext": {
"capabilities": {
"add": [
"NET_ADMIN",
"SYS_TIME"
],
"drop": [
"BPF"
]
}
}
}
]
}
}
}
それはリクエストの受け入れにつながりますが、最終的なPodは次のようになります:
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo-4
spec:
containers:
- name: sec-ctx-4
image: gcr.io/google-samples/node-hello:1.0
securityContext:
capabilities:
add:
- NET_ADMIN
- SYS_TIME
drop:
- BPF
ご覧の通り、ポリシーはPod内で宣言された唯一のコンテナの`securityContext.capabilities.drop`セクションを変更しました。
コンテナは、ポリシーのために`BPF`機能を失っています。
要約
変更ポリシーが実装しなければならない関数は次のとおりです:
| waPC関数名 | 入力ペイロード | 出力ペイロード |
|---|---|---|
|
|
|
|
|
|