Webhookマニフェストの生成

AdmissionWebhookを利用するためには、MutatingWebhookConfigurationValidatingWebhookConfigurationなどのマニフェストを用意する必要があります。 controller-genは// +kubebuilder:webhookマーカーの記述に基づいてマニフェストを生成できます。

まずはデフォルト値を設定するWebhookのマーカーを見てみましょう。

markdownview_webhook.go

//+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{}

同様にバリデーションWebhookのマーカーを確認します。

markdownview_webhook.go

// TODO(user): change verbs to "verbs=create;update;delete" if you want to enable deletion validation.
//+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を実行すると、マーカーの内容に基づいて以下のようなマニフェストファイルが生成されます。

manifests.yaml

---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
  creationTimestamp: null
  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:
  creationTimestamp: null
  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

results matching ""

    No results matching ""