The External Secrets Enterprise Edition is product suite is a premium product.
It requires a specific subscription. Contact us for more information.
Webhook Not Triggering or Pods Not Mutated
Symptoms:- Pods are created without any injected init/sidecar containers or environment variables/secret files, despite having the correct annotations.
- 
Verify MutatingWebhookConfiguration:- Ensure the MutatingWebhookConfigurationforesi-pod-webhookexists:
- Inspect its configuration:
- clientConfig.service: Verify- name,- namespace, and- portpoint to the correct ESI Pod Webhook service (usually- esi-pod-webhook-servicein- secretless-systemon port- 443, which maps to the webhook’s target port, e.g.,- 8443).
- rules.operations: Should include- CREATEand- UPDATEfor pods.
- namespaceSelector/- objectSelector: Ensure these selectors are not unintentionally excluding the namespace or pods you are targeting. If they are too restrictive, the API server won’t send admission requests to the webhook for those pods.
- failurePolicy: Usually- Failfor critical webhooks, but could be- Ignore. If- Ignore, errors during webhook invocation might not be immediately obvious.
- caBundle: This should be populated by- cert-manager(or manually if not using- cert-manager) and match the CA of the certificate used by the webhook service.
 
- Ensure the 
- 
Webhook Pod Logs:
- Check the logs of the ESI Pod Webhook pod(s) for any errors during its startup or when processing requests:
- Look for errors related to TLS, authentication, or processing admission reviews.
 
- Check the logs of the ESI Pod Webhook pod(s) for any errors during its startup or when processing requests:
- 
Pod Annotations:
- Double-check that your target pod has the necessary annotations, especially secretless.externalsecrets.com/externalsecretand eithersecretless.externalsecrets.com/env-vars: "true"orsecretless.externalsecrets.com/file-secrets: "true".
- Ensure there are no typos in annotation keys or values.
 
- Double-check that your target pod has the necessary annotations, especially 
- 
skipAnnotation:- Make sure the target pod doesn’t have secretless.externalsecrets.com/skip: "true"if you expect it to be processed.
 
- Make sure the target pod doesn’t have 
TLS Errors
Symptoms:- Webhook pod logs show TLS handshake errors.
- The API server logs (if accessible) might indicate failures calling the webhook due to TLS issues.
- MutatingWebhookConfiguration- caBundlemight be missing or incorrect.
- cert-managerStatus:- Ensure cert-managerpods are running and healthy in their namespace (usuallycert-manager):
 
- Ensure 
- Webhook CertificateResource:- Check the status of the Certificateresource created for the webhook (e.g.,esi-pod-webhook-certinsecretless-system):
- Look for Status.ConditionslikeReady: True. If not ready, check events on theCertificateand relatedCertificateRequestorOrderresources for errors from yourIssuerorClusterIssuer.
 
- Check the status of the 
- Webhook Pod Mounts:
- Ensure the webhook deployment correctly mounts the TLS secret (created by cert-manager) into the paths specified by--tls-certand--tls-keyarguments (e.g.,/etc/webhook/certs/tls.crt,/etc/webhook/certs/tls.key).
 
- Ensure the webhook deployment correctly mounts the TLS secret (created by 
Secrets Not Injected (Webhook Triggers, but Secrets Missing)
Symptoms:- Init or sidecar containers are added to the pod, but the application doesn’t receive the expected environment variables or the /secrets/secrets.jsonfile is missing/empty.
- 
Webhook Pod Logs:
- These are crucial. They might indicate issues fetching the ExternalSecret, problems withesi-cli, or other processing errors.
 
- These are crucial. They might indicate issues fetching the 
- 
Init Container Logs (for env-vars: "true"):- If an init container (secretless-initby default) was injected, check its logs. This is whereesi-cliruns.
- Look for errors from esi-clirelated to fetching theExternalSecret, connecting to a federated server, or issues with the specified secret store.
 
- If an init container (
- 
Sidecar Container Logs (for file-secrets: "true"):- If a sidecar container (secretless-sidecarby default) was injected, check its logs.
- This will show esi-clidaemon mode activity, including attempts to fetch and write secrets.
 
- If a sidecar container (
- 
Inspect Shared Volume (for file-secrets: "true"):- Exec into your application container and check the contents of the /secretsdirectory:
 
- Exec into your application container and check the contents of the 
- 
ExternalSecretStatus:- Ensure the ExternalSecretresource specified in the pod’s annotation (secretless.externalsecrets.com/externalsecret) exists in the same namespace as the pod.
- Check its status:
- It should have a Status.Conditionof typeReadywithStatus: True. If not, troubleshoot theExternalSecretitself (e.g., issues with itsSecretStore, permissions, or the external provider).
 
- Ensure the 
- 
RBAC Permissions for Webhook’s Service Account:
- Verify the ClusterRolebound to the webhook’sServiceAccount(e.g.,esi-pod-webhook-sainsecretless-system) has sufficient permissions to:- get,- list,- watch- ExternalSecretresources cluster-wide (or at least in namespaces it needs to operate on, though cluster-wide is common for webhooks).
- get,- list,- watch- SecretStoreand- ClusterSecretStoreresources.
- Potentially other permissions if using advanced esi-clifeatures that interact with other Kubernetes resources.
 
 
- Verify the 
- 
esi-cliImage Issues:- If using custom images for --init-imageor--sidecar-imagein the webhook deployment, ensure these images are correctly built, contain a compatibleesi-cli, and are accessible from your Kubernetes nodes (check image pull errors on the pod ifimage-pull-secretsare needed but not configured via annotation).
 
- If using custom images for