External Secrets Operator integrates with HashiCorp Vault for secret management. Vault itself implements lots of different secret engines, as of now we only support the KV Secrets Engine.
We support three different modes for authentication: token-based, appRole and kubernetes-native, each one comes with it's own trade-offs. Depending on the authentication method you need to adapt your environment.
A static token is stored in a Kind=Secret and is used to authenticate with vault.
{% include 'vault-token-store.yaml' %}
AppRole authentication reads the secret id from a
Kind=Secret and uses the specified roleId to aquire a temporary token to fetch secrets.
{% include 'vault-approle-store.yaml' %}
Kubernetes-native authentication has three options of optaining credentials for vault:
serviceAccountRefKind=Secret referenced by the secretRef{% include 'vault-kubernetes-store.yaml' %}
LDAP authentication uses
username/password pair to get an access token. Username is stored directly in
a Kind=SecretStore or Kind=ClusterSecretStore resource, password is stored
in a Kind=Secret referenced by the secretRef.
{% include 'vault-ldap-store.yaml' %}
JWT/OIDC uses a
JWT token stored in a Kind=Secret and referenced by the
secretRef. Optionally a role field can be defined in a Kind=SecretStore
or Kind=ClusterSecretStore resource.
{% include 'vault-jwt-store.yaml' %}
