Learn how to install the ESI Pod Webhook in your Kubernetes cluster.
ExternalSecret
resources, at a minimum, the ESO Custom Resource Definitions (CRDs) such as ExternalSecret
and SecretStore
must be installed in your cluster. The webhook relies on these CRDs to understand where to fetch secrets from.cert-manager
is the recommended tool for automatically provisioning and managing these certificates.
ClusterIssuer
or Issuer
(e.g., for self-signed certificates in development/testing, or a Let’s Encrypt issuer for public clusters) configured in cert-manager
.cert-manager
is running and your chosen issuer is ready before proceeding.secretless-system
namespace (this can be customized if needed).
MutatingWebhookConfiguration
: Configures the Kubernetes API server to forward pod creation and update events (for pods not explicitly skipped) to the webhook’s service.Service
: Exposes the webhook pods internally within the cluster, typically on port 8443
.Deployment
: Manages the webhook pods that contain the admission control logic.ServiceAccount
: Provides an identity for the webhook pods.ClusterRole
and ClusterRoleBinding
: Grant the webhook’s ServiceAccount
necessary permissions. These typically include:
ExternalSecret
and SecretStore
resources cluster-wide.Certificate
(cert-manager.io/v1): A cert-manager
custom resource that requests a TLS certificate from your configured Issuer
or ClusterIssuer
. cert-manager
will then automatically issue and manage the lifecycle of this certificate, storing it in a Kubernetes Secret
that is mounted by the webhook pods.cert-manager
is installed and a suitable ClusterIssuer
or Issuer
is available. For example, if the default manifest refers to selfsigned-issuer
, ensure such an issuer exists or update the manifest to use your issuer.webhook.yaml
(or similarly named) deployment manifest for the ESI Pod Webhook from the External Secrets Inc. distribution channels.ClusterIssuer
(e.g., selfsigned-issuer
). If your ClusterIssuer
has a different name, you must update the issuerRef.name
field within the Certificate
resource definition in the webhook.yaml
manifest before applying it.kubectl
to apply the manifest to your cluster:
secretless-system
).
Certificate
resource is healthy and has issued a certificate:
Deployment
manifest typically includes the annotation secretless.externalsecrets.com/skip: "true"
. This is important as it prevents the webhook from attempting to process its own pods, avoiding potential loops or issues.