Webhookマニフェストの生成
AdmissionWebhookを利用するためには、MutatingWebhookConfiguration
やValidatingWebhookConfiguration
などのマニフェストを用意する必要があります。
controller-genは// +kubebuilder:webhook
マーカーの記述に基づいてマニフェストを生成できます。
まずはMutating Webhookのマーカーを見てみましょう。
// +kubebuilder:webhook:path=/mutate-view-zoetrope-github-io-v1-markdownview,mutating=true,failurePolicy=fail,sideEffects=None,groups=view.zoetrope.github.io,resources=markdownviews,verbs=create;update,versions=v1,name=mmarkdownview.kb.io,admissionReviewVersions=v1
var _ webhook.Defaulter = &MarkdownView{}
同様にValidating Webhookのマーカーを確認します。
// TODO(user): change verbs to "verbs=create;update;delete" if you want to enable deletion validation.
// NOTE: The 'path' attribute must follow a specific pattern and should not be modified directly here.
// Modifying the path for an invalid path can cause API server errors; failing to locate the webhook.
// +kubebuilder:webhook:path=/validate-view-zoetrope-github-io-v1-markdownview,mutating=false,failurePolicy=fail,sideEffects=None,groups=view.zoetrope.github.io,resources=markdownviews,verbs=create;update,versions=v1,name=vmarkdownview.kb.io,admissionReviewVersions=v1
var _ webhook.Validator = &MarkdownView{}
path
: Webhookのパスを指定します。これはcontroller-runtimeが自動的に生成するパスなので基本的には変更せずに利用します。mutating
: Webhookで値を書き換えるかどうかを指定します。Defaulterではtrue
, Validatorではfalse
を指定します。failurePolicy
: Webhook APIの呼び出しに失敗したときの挙動を指定します。fail
を指定するとWebhookが呼び出せない場合はリソースの作成もできません。ignore
を指定するとWebhookが呼び出せなくてもリソースが作成できてしまいます。sideEffects
: Webhook APIの呼び出しに副作用があるかどうかを指定します。これはAPIサーバーをdry-runモードで呼び出したときの挙動に影響します。副作用がない場合はNone
, ある場合はSome
を指定します。groups
,versions
,resource
: Webhookの対象となるリソースのGVKを指定します。verbs
: Webhookの対象となるリソースの操作を指定できます。create
,update
,delete
などを指定できます。name
: Webhookの名前を指定します。ドットで区切られた3つ以上のセグメントを持つドメイン名でなければなりません。admissionReviewVersions
: WebhookがサポートするAdmissionReviewのバージョンを指定します。Kubernetes 1.16以降の環境でしか動作させないのであればv1
のみで問題ありません。1.15以前の環境で動作させたい場合はv1beta1
も指定しましょう。
make manifests
を実行すると、マーカーの内容に基づいて以下のようなマニフェストファイルが生成されます。
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
name: mutating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: webhook-service
namespace: system
path: /mutate-view-zoetrope-github-io-v1-markdownview
failurePolicy: Fail
name: mmarkdownview.kb.io
rules:
- apiGroups:
- view.zoetrope.github.io
apiVersions:
- v1
operations:
- CREATE
- UPDATE
resources:
- markdownviews
sideEffects: None
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: validating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: webhook-service
namespace: system
path: /validate-view-zoetrope-github-io-v1-markdownview
failurePolicy: Fail
name: vmarkdownview.kb.io
rules:
- apiGroups:
- view.zoetrope.github.io
apiVersions:
- v1
operations:
- CREATE
- UPDATE
resources:
- markdownviews
sideEffects: None