2.3. Operator Lifecycle Manager での受付 Webhook の管理
検証用および変更用の受付 Webhook により、リソースがオブジェクトストアに保存され、Operator コントローラーによって処理される前に、Operator の作成者はリソースのインターセプト、変更、許可、および拒否を実行することができます。Operator Lifecycle Manager (OLM) は、Operator と共に提供される際のこれらの Webhook のライフサイクルを管理できます。
2.3.1. CSV での Webhook の定義
ClusterServiceVersion (CSV) リソースには、Operator に同梱される検証用および変更用の Webhook を定義するための webhookdefinitions セクションが含まれます。以下は例になります。
検証用の受付 Webhook を含む CSV
apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
annotations:
description: |-
An example CSV that contains a webhook
name: example-webhook.v1.0.0
namespace: placeholder
spec:
webhookdefinitions:
- generateName: example.webhook.com
type: ValidatingAdmissionWebhook
deploymentName: "example-webhook-deployment"
containerPort: 443
sideEffects: "None"
failurePolicy: "Ignore"
admissionReviewVersions:
- "v1"
- "v1beta1"
rules:
- operations:
- "CREATE"
apiGroups:
- ""
apiVersions:
- "v1"
resources:
- "configmaps"
objectSelector:
foo: bar
webhookPath: "/validate"
...
Operator Lifecycle Manager (OLM) では、以下を定義する必要があります。
-
typeフィールドはValidatingAdmissionWebhookまたはMutatingAdmissionWebhookのいずれかに設定する必要があります。そうでないと、CSV は失敗フェーズに置かれます。 -
CSV には、
webhookdefinitionのdeploymentNameフィールドに指定される値に等しい名前の Deployment が含まれる必要があります。
Webhook が作成されると、OLM は、Operator がデプロイされる Operator グループに一致する namespace でのみ Webhook が機能するようにします。