full-cluster-secret-store.yaml 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. apiVersion: external-secrets.io/v1beta1
  2. kind: ClusterSecretStore
  3. metadata:
  4. name: example
  5. spec:
  6. # Used to select the correct ESO controller (think: ingress.ingressClassName)
  7. # The ESO controller is instantiated with a specific controller name
  8. # and filters ES based on this property
  9. # Optional
  10. controller: dev
  11. # provider field contains the configuration to access the provider
  12. # which contains the secret exactly one provider must be configured.
  13. provider:
  14. # (1): AWS Secrets Manager
  15. # aws configures this store to sync secrets using AWS Secret Manager provider
  16. aws:
  17. service: SecretsManager
  18. # Role is a Role ARN which the SecretManager provider will assume
  19. role: iam-role
  20. # AWS Region to be used for the provider
  21. region: eu-central-1
  22. # Auth defines the information necessary to authenticate against AWS
  23. auth:
  24. # Getting the accessKeyID and secretAccessKey from an already created Kubernetes Secret
  25. secretRef:
  26. accessKeyIDSecretRef:
  27. name: awssm-secret
  28. key: access-key
  29. secretAccessKeySecretRef:
  30. name: awssm-secret
  31. key: secret-access-key
  32. # IAM roles for service accounts
  33. # https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts-technical-overview.html
  34. jwt:
  35. serviceAccountRef:
  36. name: my-serviceaccount
  37. namespace: sa-namespace
  38. vault:
  39. server: "https://vault.acme.org"
  40. # Path is the mount path of the Vault KV backend endpoint
  41. # Used as a path prefix for the external secret key
  42. path: "secret"
  43. # Version is the Vault KV secret engine version.
  44. # This can be either "v1" or "v2", defaults to "v2"
  45. version: "v2"
  46. # vault enterprise namespace: https://www.vaultproject.io/docs/enterprise/namespaces
  47. namespace: "a-team"
  48. # base64 encoded string of certificate
  49. caBundle: "..."
  50. # Instead of caBundle you can also specify a caProvider
  51. # this will retrieve the cert from a Secret or ConfigMap
  52. caProvider:
  53. # Can be Secret or ConfigMap
  54. type: "Secret"
  55. # namespace is mandatory for ClusterSecretStore and not relevant for SecretStore
  56. namespace: "my-cert-secret-namespace"
  57. name: "my-cert-secret"
  58. key: "cert-key"
  59. auth:
  60. # static token: https://www.vaultproject.io/docs/auth/token
  61. tokenSecretRef:
  62. name: "my-secret"
  63. namespace: "secret-admin"
  64. key: "vault-token"
  65. # AppRole auth: https://www.vaultproject.io/docs/auth/approle
  66. appRole:
  67. path: "approle"
  68. roleId: "db02de05-fa39-4855-059b-67221c5c2f63"
  69. secretRef:
  70. name: "my-secret"
  71. namespace: "secret-admin"
  72. key: "vault-token"
  73. # Kubernetes auth: https://www.vaultproject.io/docs/auth/kubernetes
  74. kubernetes:
  75. mountPath: "kubernetes"
  76. role: "demo"
  77. # Optional service account reference
  78. serviceAccountRef:
  79. name: "my-sa"
  80. namespace: "secret-admin"
  81. # Optional secret field containing a Kubernetes ServiceAccount JWT
  82. # used for authenticating with Vault
  83. secretRef:
  84. name: "my-secret"
  85. namespace: "secret-admin"
  86. key: "vault"
  87. # (2): GCP Secret Manager
  88. gcpsm:
  89. # Auth defines the information necessary to authenticate against GCP by getting
  90. # the credentials from an already created Kubernetes Secret.
  91. auth:
  92. secretRef:
  93. secretAccessKeySecretRef:
  94. name: gcpsm-secret
  95. key: secret-access-credentials
  96. namespace: example
  97. projectID: myproject
  98. # (3): Kubernetes provider
  99. kubernetes:
  100. server:
  101. url: "https://myapiserver.tld"
  102. caProvider:
  103. type: Secret
  104. name: my-cluster-secrets
  105. namespace: example
  106. key: ca.crt
  107. auth:
  108. serviceAccount:
  109. name: "example-sa"
  110. namespace: "example"
  111. # (4): Oracle provider
  112. oracle:
  113. # The vault OCID
  114. vault: ocid1.vault.oc1.eu-frankfurt-1.aaa1aaaaaaaaa.aaaaaaaaaaaaaa1aaaaaaa111aaaaaaaaaaaaaaaa
  115. # The vault region
  116. region: eu-frankfurt-1
  117. auth:
  118. # The user OCID
  119. user: ocid1.user.oc1..aaa1aaaaaaaaa.aaaaaaaaaaaaaa1aaaaaaa111aaaaaaaaaaaaaaaa
  120. # The tenancy OCID
  121. tenancy: ocid1.tenancy.oc1..aaa1aaaaaaaaa.aaaaaaaaaaaaaa1aaaaaaa111aaaaaaaaaaaaaaaa
  122. secretRef:
  123. privatekey:
  124. # The secret that contains your privatekey
  125. name: oci-secret-name
  126. key: privateKey
  127. namespace: example-namespace
  128. fingerprint:
  129. # The secret that contains your fingerprint
  130. name: oci-secret-name
  131. key: fingerprint
  132. namespace: example-namespace
  133. # (TODO): add more provider examples here
  134. # Conditions about namespaces in which the ClusterSecretStore is usable for ExternalSecrets
  135. conditions:
  136. # Options are namespaceSelector, namespaces or namespacesRegex
  137. - namespaceSelector:
  138. matchLabels:
  139. my.namespace.io/some-label: "value" # Only namespaces with that label will work
  140. - namespaces:
  141. - "namespace-a"
  142. - "namespace-b"
  143. # Namespace regex is helpful for namespace naming convention or when an external tool auto generate namespaces with prefix
  144. - namespacesRegex:
  145. - "namespace-a-.*" # All namespaces prefixed by namespace-a- will work
  146. - "namespace-b-.*" # All namespaces prefixed by namespace-b- will work
  147. # conditions needs only one of the conditions to meet for the CSS to be usable in the namespace.
  148. status:
  149. # Standard condition schema
  150. conditions:
  151. # SecretStore ready condition indicates the given store is in ready
  152. # state and able to referenced by ExternalSecrets
  153. # If the `status` of this condition is `False`, ExternalSecret controllers
  154. # should prevent attempts to fetch secrets
  155. - type: Ready
  156. status: "False"
  157. reason: "ConfigError"
  158. message: "SecretStore validation failed"
  159. lastTransitionTime: "2019-08-12T12:33:02Z"