Skip to content

webhook values (mutating webhook)

The values of the webhook component chart. In the kerf chart they sit under webhook:; a key listed here as image.tag is then webhook.image.tag. Nested keys appear after their parent, with the parent's default shown in full or abbreviated.

Key Type Default Description
global object see the keys below Set by an umbrella chart; read by every kerf chart.
global.imageRegistry string "" prefixed to image.repository; image.registry wins over it
global.imagePullSecrets array [] names or
global.externalSecrets object see the keys below
global.externalSecrets.secretStoreRef object {}
crds object see the keys below The Kerf CRDs as templates (helm.sh/resource-policy: keep). Off: the agent chart renders them, and exactly one release per cluster may (Helm refuses a CRD owned by another release). Turn it on only where the webhook is installed without the agent.
crds.install boolean false
installCRDs object null Deprecated alias of crds.install (wins when set).
clusterName string "" Cluster name (informational; set by Tilt / dev scripts).
fullnameOverride string "" Names default to the release name (release "webhook" -> Deployment/Service "webhook").
image object see the keys below
image.registry string ""
image.repository string localhost:5005/kerf/webhook
image.tag string dev
image.digest string "" sha256:..., appended as @digest
image.pullPolicy string IfNotPresent
imagePullSecrets array []
replicaCount integer 2
replicas object null Deprecated alias of replicaCount (wins when set).
autoscaling object see the keys below Optional HPA on CPU (replicaCount is then ignored).
autoscaling.enabled boolean false
autoscaling.minReplicas integer 2
autoscaling.maxReplicas integer 4
autoscaling.targetCPUUtilizationPercentage integer 75
autoscaling.targetMemoryUtilizationPercentage object null
autoscaling.behavior object {}
containerPort integer 9443 Port the webhook server listens on (HTTPS). On EKS the control plane must reach the nodes on this port: EKS's cluster security group allows it, custom node security groups often do not (open it from the cluster security group, or use 443 where nothing else binds it).
certManager object see the keys below Serving certificate from cert-manager. By default the chart creates a namespaced self-signed Issuer; set issuerRef to use an existing (Cluster)Issuer instead. cert-manager's CA injector writes the CA into the MutatingWebhookConfiguration.
certManager.issuerRef object {}
certManager.duration string 8760h kind: ClusterIssuer name: my-ca
certManager.renewBefore string 720h
tls object see the keys below Development only: the chart makes the serving certificate itself (Helm genCA, kept across upgrades) and writes the CA into the MutatingWebhookConfiguration, so cert-manager is not needed. The certificate is not renewed: helm uninstall and install again after validityDays. The umbrella chart refuses this unless dev: true.
tls.selfSigned object see the keys below
tls.selfSigned.enabled boolean false
tls.selfSigned.validityDays integer 3650
webhook object see the keys below
webhook.failurePolicy string Ignore Ignore: a webhook outage never blocks pod creation (pods start with template values and the agent resizes them afterwards).
webhook.timeoutSeconds integer 2 API server timeout (1-30s; the handler only reads informer caches).
webhook.excludeNamespaces array [] Namespaces never sent to the webhook, in addition to kube-system and the release namespace. A namespace (or pod) labelled kerf.getkerf.dev/skip-webhook=true is skipped too.
logLevel string info
resources object see the keys below
resources.requests object see the keys below
resources.requests.cpu string 50m
resources.requests.memory string 64Mi
resources.limits object see the keys below
resources.limits.memory string 256Mi
podDisruptionBudget object see the keys below
podDisruptionBudget.enabled boolean true
podDisruptionBudget.minAvailable integer 1
podDisruptionBudget.maxUnavailable object null
topologySpread object see the keys below Spread replicas across nodes and zones (best effort: ScheduleAnyway) when more than one pod can run; topologySpreadConstraints replaces it.
topologySpread.enabled boolean true
topologySpread.whenUnsatisfiable string ScheduleAnyway
topologySpreadConstraints array []
priorityClassName string ""
nodeSelector object {}
tolerations array []
affinity object {}
podLabels object {}
podAnnotations object {}
extraEnv array []
extraEnvFrom array []
extraVolumes array []
extraVolumeMounts array []
serviceAccount object see the keys below
serviceAccount.create boolean true false: use an existing ServiceAccount name (the ClusterRole is still bound to it).
serviceAccount.name string "" default: the release name
serviceAccount.annotations object {}
podSecurityContext object see the keys below
podSecurityContext.runAsNonRoot boolean true
podSecurityContext.runAsUser integer 65532
podSecurityContext.seccompProfile object see the keys below
podSecurityContext.seccompProfile.type string RuntimeDefault
securityContext object see the keys below
securityContext.allowPrivilegeEscalation boolean false
securityContext.readOnlyRootFilesystem boolean true
securityContext.capabilities object see the keys below
securityContext.capabilities.drop array ["ALL"]
networkPolicy object see the keys below NetworkPolicy. Ingress to the webhook port from ingress.apiServerFrom ([] = any source: the API server's addresses are not pod addresses; on EKS the control-plane ENIs sit in the VPC, so the VPC CIDR as ipBlock narrows it) and to the metrics port from ingress.metricsFrom ([] = any). Egress: DNS, TCP egress.ports (the API server, for the informers) and egress.to.
networkPolicy.enabled boolean false
networkPolicy.ingress object see the keys below
networkPolicy.ingress.apiServerFrom array []
networkPolicy.ingress.metricsFrom array []
networkPolicy.egress object see the keys below
networkPolicy.egress.enabled boolean true
networkPolicy.egress.ports array [443, 6443]
networkPolicy.egress.to array []
serviceMonitor object see the keys below Prometheus Operator ServiceMonitor or VictoriaMetrics VMServiceScrape for the metrics Service.
serviceMonitor.enabled boolean false
serviceMonitor.kind string ServiceMonitor or VMServiceScrape
serviceMonitor.namespace string ""
serviceMonitor.interval string 30s
serviceMonitor.scrapeTimeout string ""
serviceMonitor.honorLabels boolean false
serviceMonitor.labels object {}
serviceMonitor.relabelings array []
serviceMonitor.metricRelabelings array []