Mutating Webhook
オブジェクトが保存される前に「変更」できる、Kubernetesのアドミッションコントローラーの拡張。届いたYAMLを受け取り、JSONパッチを返す。サイドカー(Istio Envoy、Vault Agent)の自動注入、デフォルトラベル、シークレット注入を担う。
認証・認可の後、検証と永続化の前に実行される。Webhookサーバーは、APIサーバーが信頼する証明書を使ったHTTPSでなければならない。代表例はIstioで、istio-injection=enabledの付いた全PodにEnvoyサイドカーを注入する。cert-managerもCertificateからSecretを作る。
注意点もある。複数のMutating Webhookはアルファベット順に実行されるため、順序が結果に影響しうる。Status サブリソースは変更できない。failurePolicyはFailかIgnoreで、セキュリティ上重要なWebhookにIgnoreを使うのは危険だ。