The External Secrets Enterprise is product suite is a premium product.
It requires a specific subscription. Contact us for more information.
Prerequisites
- Kubernetes Cluster: Version 1.16 or newer.
- External Secrets Operator (ESO) CRDs: While the full operator is beneficial for managing
ExternalSecret
resources, at a minimum, the ESO Custom Resource Definitions (CRDs) such asExternalSecret
andSecretStore
must be installed in your cluster. The webhook relies on these CRDs to understand where to fetch secrets from. - cert-manager: The ESI Pod Webhook requires TLS certificates for secure communication with the Kubernetes API server.
cert-manager
is the recommended tool for automatically provisioning and managing these certificates.- You will need a
ClusterIssuer
orIssuer
(e.g., for self-signed certificates in development/testing, or a Let’s Encrypt issuer for public clusters) configured incert-manager
.
- You will need a
Verify that
cert-manager
is running and your chosen issuer is ready before proceeding.Deployment
The ESI Pod Webhook is typically deployed using a single YAML manifest. This manifest creates all necessary Kubernetes resources, usually within thesecretless-system
namespace (this can be customized if needed).
Resources Created
The deployment manifest will set up the following: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 port8443
.Deployment
: Manages the webhook pods that contain the admission control logic.ServiceAccount
: Provides an identity for the webhook pods.ClusterRole
andClusterRoleBinding
: Grant the webhook’sServiceAccount
necessary permissions. These typically include:- Reading
ExternalSecret
andSecretStore
resources cluster-wide. - Permissions to get, list, and watch pods, and to patch pod specifications.
- Reading
Certificate
(cert-manager.io/v1): Acert-manager
custom resource that requests a TLS certificate from your configuredIssuer
orClusterIssuer
.cert-manager
will then automatically issue and manage the lifecycle of this certificate, storing it in a KubernetesSecret
that is mounted by the webhook pods.
Installation Steps
-
Ensure Prerequisites are Met:
- Confirm
cert-manager
is installed and a suitableClusterIssuer
orIssuer
is available. For example, if the default manifest refers toselfsigned-issuer
, ensure such an issuer exists or update the manifest to use your issuer.
- Confirm
-
Obtain the Deployment Manifest:
- Download or locate the official
webhook.yaml
(or similarly named) deployment manifest for the ESI Pod Webhook from the External Secrets Inc. distribution channels.
The default manifest might specify aClusterIssuer
(e.g.,selfsigned-issuer
). If yourClusterIssuer
has a different name, you must update theissuerRef.name
field within theCertificate
resource definition in thewebhook.yaml
manifest before applying it. - Download or locate the official
-
Apply the Manifest:
Use
kubectl
to apply the manifest to your cluster:This command will create all the resources in the namespace specified within the manifest (commonlysecretless-system
). -
Verify Installation:
- Check if the webhook deployment is running:
- Ensure the
Certificate
resource is healthy and has issued a certificate:(The certificate name might vary based on the manifest.) - Check the logs of the webhook pod for any startup errors:
- Check if the webhook deployment is running:
The ESI Pod Webhook’s own
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.