full-secret-store.yaml 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. apiVersion: external-secrets.io/v1
  2. kind: SecretStore
  3. metadata:
  4. name: example
  5. namespace: example-ns
  6. annotations:
  7. ## Add this annotation to disable controller warning events for unmaintained stores
  8. external-secrets.io/disable-maintenance-checks: "true"
  9. spec:
  10. # Used to select the correct ESO controller (think: ingress.ingressClassName)
  11. # The ESO controller is instantiated with a specific controller name
  12. # and filters ES based on this property
  13. # Optional
  14. controller: dev
  15. # You can specify retry settings for the http connection
  16. # these fields allow you to set a maxRetries before failure, and
  17. # an interval between the retries.
  18. # Current supported providers: AWS, Hashicorp Vault, IBM, Doppler
  19. retrySettings:
  20. maxRetries: 5
  21. retryInterval: "10s"
  22. # provider field contains the configuration to access the provider
  23. # which contains the secret exactly one provider must be configured.
  24. provider:
  25. # (1): AWS Secrets Manager
  26. # aws configures this store to sync secrets using AWS Secret Manager provider
  27. aws:
  28. service: SecretsManager
  29. # Role is a Role ARN which the SecretManager provider will assume
  30. role: iam-role
  31. # AWS Region to be used for the provider
  32. region: eu-central-1
  33. # Auth defines the information necessary to authenticate against AWS by
  34. # getting the accessKeyID and secretAccessKey from an already created Kubernetes Secret
  35. auth:
  36. secretRef:
  37. accessKeyIDSecretRef:
  38. name: awssm-secret
  39. key: access-key
  40. secretAccessKeySecretRef:
  41. name: awssm-secret
  42. key: secret-access-key
  43. # (2) Hashicorp Vault
  44. vault:
  45. server: "https://vault.acme.org"
  46. # Path is the mount path of the Vault KV backend endpoint
  47. # Used as a path prefix for the external secret key
  48. path: "secret"
  49. # Version is the Vault KV secret engine version.
  50. # This can be either "v1" or "v2", defaults to "v2"
  51. version: "v2"
  52. # vault enterprise namespace: https://www.vaultproject.io/docs/enterprise/namespaces
  53. namespace: "a-team"
  54. # base64 encoded string of certificate
  55. caBundle: "..."
  56. # Instead of caBundle you can also specify a caProvider
  57. # this will retrieve the cert from a Secret or ConfigMap
  58. caProvider:
  59. # Can be Secret or ConfigMap
  60. type: "Secret"
  61. name: "my-cert-secret"
  62. key: "cert-key"
  63. # client side related TLS communication, when the Vault server requires mutual authentication
  64. tls:
  65. certSecretRef:
  66. namespace: ...
  67. name: "my-cert-secret"
  68. key: "tls.crt"
  69. keySecretRef:
  70. namespace: ...
  71. name: "my-cert-secret"
  72. key: "tls.key"
  73. auth:
  74. # static token: https://www.vaultproject.io/docs/auth/token
  75. tokenSecretRef:
  76. name: "my-secret"
  77. key: "vault-token"
  78. # AppRole auth: https://www.vaultproject.io/docs/auth/approle
  79. appRole:
  80. path: "approle"
  81. # Instead of referencing the AppRole's ID from the secret, you can also specify it directly
  82. # roleId: "db02de05-fa39-4855-059b-67221c5c2f63"
  83. roleRef:
  84. name: "my-secret"
  85. key: "vault-role-id"
  86. secretRef:
  87. name: "my-secret"
  88. key: "vault-role-secret"
  89. # Kubernetes auth: https://www.vaultproject.io/docs/auth/kubernetes
  90. kubernetes:
  91. mountPath: "kubernetes"
  92. role: "demo"
  93. # Optional service account reference
  94. serviceAccountRef:
  95. name: "my-sa"
  96. # Optional secret field containing a Kubernetes ServiceAccount JWT
  97. # used for authenticating with Vault
  98. secretRef:
  99. name: "my-secret"
  100. key: "vault"
  101. # TLS certificates auth method: https://developer.hashicorp.com/vault/docs/auth/cert
  102. cert:
  103. clientCert:
  104. namespace: ...
  105. name: "my-cert-secret"
  106. key: "tls.crt"
  107. secretRef:
  108. namespace: ...
  109. name: "my-cert-secret"
  110. key: "tls.key"
  111. # (3): GCP Secret Manager
  112. gcpsm:
  113. # Auth defines the information necessary to authenticate against GCP by getting
  114. # the credentials from an already created Kubernetes Secret.
  115. auth:
  116. secretRef:
  117. secretAccessKeySecretRef:
  118. name: gcpsm-secret
  119. key: secret-access-credentials
  120. projectID: myproject
  121. location: us-east1
  122. secretVersionSelectionPolicy: LatestOrFetch
  123. # (TODO): add more provider examples here
  124. status:
  125. # Standard condition schema
  126. conditions:
  127. # SecretStore ready condition indicates the given store is in ready
  128. # state and able to referenced by ExternalSecrets
  129. # If the `status` of this condition is `False`, ExternalSecret controllers
  130. # should prevent attempts to fetch secrets
  131. - type: Ready
  132. status: "False"
  133. reason: "ConfigError"
  134. message: "SecretStore validation failed"
  135. lastTransitionTime: "2019-08-12T12:33:02Z"