| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- {% raw %}
- apiVersion: external-secrets.io/v1beta1
- kind: ExternalSecret
- metadata:
- name: "hello-world"
- # labels and annotations are copied over to the
- # secret that will be created
- labels:
- acme.org/owned-by: "q-team"
- annotations:
- acme.org/sha: 1234
- spec:
- # Optional, SecretStoreRef defines the default SecretStore to use when fetching the secret data.
- secretStoreRef:
- name: aws-store
- kind: SecretStore # or ClusterSecretStore
- # RefreshPolicy determines how the ExternalSecret should be refreshed.
- # - CreatedOnce: Creates the Secret only if it does not exist and does not update it afterward
- # - Periodic: (default) Synchronizes the Secret at intervals specified by refreshInterval
- # - OnChange: Only synchronizes when the ExternalSecret's metadata or specification changes
- refreshPolicy: Periodic
- # RefreshInterval is the amount of time before the values reading again from the SecretStore provider
- # Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h" (from time.ParseDuration)
- # May be set to zero to fetch and create it once
- refreshInterval: "1h"
- # the target describes the secret that shall be created
- # there can only be one target per ExternalSecret
- target:
- # The secret name of the resource
- # Defaults to .metadata.name of the ExternalSecret
- # It is immutable
- name: application-config
- # Specifies the ExternalSecret ownership details in the created Secret. Options:
- # - Owner: (default) Creates the Secret and sets .metadata.ownerReferences. If the ExternalSecret is deleted, the Secret will also be deleted.
- # - Merge: Does not create the Secret but merges data fields into the existing Secret (expects the Secret to already exist).
- # - Orphan: Creates the Secret but does not set .metadata.ownerReferences. If the Secret already exists, it will be updated.
- # - None: Does not create or update the Secret (reserved for future use with injector).
- creationPolicy: Merge
- # Specifies what happens to the Secret when data fields are deleted from the provider (e.g., Vault, AWS Parameter Store). Options:
- # - Retain: (default) Retains the Secret if all Secret data fields have been deleted from the provider.
- # - Delete: Removes the Secret if all Secret data fields from the provider are deleted.
- # - Merge: Removes keys from the Secret but not the Secret itself.
- deletionPolicy: Retain
- # Specify a blueprint for the resulting Kind=Secret
- template:
- type: kubernetes.io/dockerconfigjson # or TLS...
- metadata:
- annotations: {}
- labels: {}
- # Use inline templates to construct your desired config file that contains your secret
- data:
- config.yml: |
- database:
- connection: postgres://{{ .username }}:{{ .password }}@{{ .database_host }}:5432/payments
- # Uses an existing template from configmap
- # Secret is fetched, merged and templated within the referenced configMap data
- # It does not update the configmap, it creates a secret with: data["alertmanager.yml"] = ...result...
- templateFrom:
- - configMap:
- name: application-config-tmpl
- items:
- - key: config.yml
- # Data defines the connection between the Kubernetes Secret keys and the Provider data
- data:
- - secretKey: username
- remoteRef:
- key: database-credentials
- version: v1
- property: username
- decodingStrategy: None # can be None, Base64, Base64URL or Auto
- # define the source of the secret. Can be a SecretStore or a Generator kind
- sourceRef:
- # point to a SecretStore that should be used to fetch a secret.
- # must be defined if no spec.secretStoreRef is defined.
- storeRef:
- name: aws-secretstore
- kind: ClusterSecretStore
- # Used to fetch all properties from the Provider key
- # If multiple dataFrom are specified, secrets are merged in the specified order
- # Can be defined using sourceRef.generatorRef or extract / find
- # Both use cases are exemplified below
- dataFrom:
- - sourceRef:
- generatorRef:
- apiVersion: generators.external-secrets.io/v1alpha1
- kind: ECRAuthorizationToken
- name: "my-ecr"
- #Or
- dataFrom:
- - extract:
- key: database-credentials
- version: v1
- property: data
- conversionStrategy: Default
- decodingStrategy: Auto
- rewrite:
- - regexp:
- source: "exp-(.*?)-ression"
- target: "rewriting-${1}-with-groups"
- - find:
- path: path-to-filter
- name:
- regexp: ".*foobar.*"
- tags:
- foo: bar
- conversionStrategy: Unicode
- decodingStrategy: Base64
- rewrite:
- - regexp:
- source: "foo"
- target: "bar"
- status:
- # refreshTime is the time and date the external secret was fetched and
- # the target secret updated
- refreshTime: "2019-08-12T12:33:02Z"
- # Standard condition schema
- conditions:
- # ExternalSecret ready condition indicates the secret is ready for use.
- # This is defined as:
- # - The target secret exists
- # - The target secret has been refreshed within the last refreshInterval
- # - The target secret content is up-to-date based on any target templates
- - type: Ready
- status: "True" # False if last refresh was not successful
- reason: "SecretSynced"
- message: "Secret was synced"
- lastTransitionTime: "2019-08-12T12:33:02Z"
- {% endraw %}
|