External Secret spec¶
Elegir el secret store¶
Para elegir el secret store del cual traernos los secretos se usa spec.secretStoreRef, donde spec.secretStoreRef.name sera el nombre y spec.secretStoreRef.kind el tipo de secret store (SecretStore o ClusterSecretStore)
Datos a traernos del proveedor¶
Para traernos los secrets podemos usar:
- spec.dataFrom para traernos todas las properties de la key
- spec.data para elegir cuales traernos
Data (spec.data)¶
Data permite especificar la relacion entre las keys del secret a crear y el dato almacenado en el proveedor. Asi, dentro de cada una de las relaciones declaradas podemos especificar
secretKey es el nombre que le damos a esta relacion
remoteRef especifica que dato traernos del proveedor
- key: Es valor mas importante, porque es realmente la clave a traerse
- conversionStrategy: Default | Unicode
-
decodingStrategy: Para elegir si la clave es codificada en el proveedor y debe ser descodificada o no. Opciones: None | Auto | Base64 | Base64URL
-
metadataPolicy: Si queremos traernos tags o labels. Puede ser None (por defecto) o Fetch
- property: Si queremos traernos una property concreta (depende del proveedor)
- version: Si queremos traernos una version concreta (depende del proveedor)
sourceRef permite especificar un secret store diferente al de spec.secretStoreRef y es obligatorio si este ultimo no existe. Se declara mediante storeRef.name y storeRef.kind
Data (spec.dataFrom)¶
Pendiente
Secret a crear (spec.target)¶
Se hace mediante spec.target elegimos que secret y como crearlo.
Name¶
spec.target.name permite elegir el nombre del secret a crear. Si no se especifica, sera el nombre del externalsecret
creationPolicy¶
spec.target.creationPolicy sirve para elegir de forma se crea el secret
- Owner es el valor por defecto. External secrets operator le pone al secret un ownerReference y lo hace susceptible del garbage colector de Kubernetes.
Si al intentar crear el secret se encuentra uno ya existente con otro ownerReference, se genera un conflicto y falla.
Si al intentar crear el secret se encuentra uno ya existente sin ownerReference, le pone un ownerReference y lo actualiza
-
Orphan lo crea sin ownerReference y queda fuera del garbage colector de Kubernetes
-
Merge no crea ningun secret, sino que espera que ya exista y hacer un merge
-
None no hace nada
deletionPolicy¶
spec.target.deletionPolicy permite elegir que hacer con el secret cuando se borra el secret en el proveedor de secretos.
-
Retain es el valor por defecto y mas cauteloso. Mantiene el secret creado y el externalsecret entra en estado SecretSyncedError
-
Delete borra el secret y el externalsecret no se considera como fallido ni tendra el estado SecretSyncedError. Tambien ocurre al crear un nuevo external secret con esta opcion si falla al mapear con el secret del proveedor.
-
Merge borra las entradas del secret, pero no el secret en si. Al igual que con delete, o se considera como fallido ni tendra el estado SecretSyncedError.
immutable¶
spec.target.immutable permite hacer inmutable el secret
Template¶
Pendiente
Otras configuraciones¶
- spec.refreshInterval
Permite especificar cada cuanto leer los valores del provider. Se puede expresar en varias unidades como "s", "m" o "h" y esta basado en time.ParseDuration de go
El valor por defecto es una hora
Si se configura a 0, el valor se trae solo una vez al crearse
Ejemplo¶
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: myexternalsecret
spec:
data:
- remoteRef:
key: mipassword # key de secret store donde buscar el valor
secretKey: mikey # key a escribir en el secret
refreshInterval: 1h # cada cuanto leer el secret del proveedor
secretStoreRef: # especificar el secret store del cual obtener los datos
kind: ClusterSecretStore
name: nombredelsecretstore
target: # definicion del secret a crear
name: secret # nombre del secret a crear. si o se especifica, sera el nombre del external secret
creationPolicy: # Owner (por defecto) Merge o None
deletionPolicy: # Delete, Merge, Retain