mirror of
https://github.com/external-secrets/external-secrets.git
synced 2024-12-14 11:57:59 +00:00
Merge pull request #184 from ahmedmus-1A/azkv-docs
add README docs and yaml snippets for azure keyvault provider
This commit is contained in:
commit
b8a763300f
4 changed files with 101 additions and 0 deletions
|
@ -1,2 +1,43 @@
|
|||
|
||||
![aws sm](./pictures/eso-az-kv-azure-kv.png)
|
||||
|
||||
## Azure Key vault
|
||||
|
||||
External Secrets Operator integrates with [Azure Key vault](https://azure.microsoft.com/en-us/services/key-vault/) for secrets , certificates and Keys management.
|
||||
|
||||
### Authentication
|
||||
|
||||
At the moment, we only support [service principals](https://docs.microsoft.com/en-us/azure/key-vault/general/authentication) authentication.
|
||||
|
||||
#### Service Principal key authentication
|
||||
|
||||
A service Principal client and Secret is created and the JSON keyfile is stored in a `Kind=Secret`. The `ClientID` and `ClientSecret` should be configured for the secret. This service principal should have proper access rights to the keyvault to be managed by the operator
|
||||
|
||||
```yaml
|
||||
{% include 'azkv-credentials-secret.yaml' %}
|
||||
```
|
||||
|
||||
### Update secret store
|
||||
Be sure the `azkv` provider is listed in the `Kind=SecretStore`
|
||||
|
||||
```yaml
|
||||
{% include 'azkv-secret-store.yaml' %}
|
||||
```
|
||||
|
||||
### Creating external secret
|
||||
|
||||
To create a kubernetes secret from the Azure Key vault secret a `Kind=ExternalSecret` is needed.
|
||||
|
||||
You can manage keys/secrets/certificates saved inside the keyvault , by setting a "/" prefixed type in the secret name , the default type is a `secret`. other supported values are `cert` and `key`
|
||||
|
||||
to select all secrets inside the key vault , you can use the `dataFrom` directive
|
||||
|
||||
```yaml
|
||||
{% include 'azkv-external-secret.yaml' %}
|
||||
```
|
||||
|
||||
The operator will fetch the Azure Key vault secret and inject it as a `Kind=Secret`
|
||||
```
|
||||
kubectl get secret secret-to-be-created -n <namespace> | -o jsonpath='{.data.dev-secret-test}' | base64 -d
|
||||
```
|
||||
|
||||
|
|
8
docs/snippets/azkv-credentials-secret.yaml
Normal file
8
docs/snippets/azkv-credentials-secret.yaml
Normal file
|
@ -0,0 +1,8 @@
|
|||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: azure-secret-sp
|
||||
type: Opaque
|
||||
data:
|
||||
ClientID: bXktc2VydmljZS1wcmluY2lwbGUtY2xpZW50LWlkCg== #service-principal-ID
|
||||
ClientSecret: bXktc2VydmljZS1wcmluY2lwbGUtY2xpZW50LXNlY3JldAo= #service-principal-secret
|
36
docs/snippets/azkv-external-secret.yaml
Normal file
36
docs/snippets/azkv-external-secret.yaml
Normal file
|
@ -0,0 +1,36 @@
|
|||
apiVersion: external-secrets.io/v1alpha1
|
||||
kind: ExternalSecret
|
||||
metadata:
|
||||
name: example-external-secret
|
||||
spec:
|
||||
refreshInterval: 1h # rate SecretManager pulls Azure
|
||||
secretStoreRef:
|
||||
kind: SecretStore
|
||||
name: example-secret-store # name of the SecretStore (or kind specified)
|
||||
|
||||
target:
|
||||
name: secret-to-be-created # name of the k8s Secret to be created
|
||||
creationPolicy: Owner
|
||||
|
||||
data:
|
||||
- secretKey: dev-secret-test # name of the key to be created in the secret object
|
||||
remoteRef:
|
||||
key: dev-secret-test #name of the SECRET in the Azure KV (no prefix => SECRET)
|
||||
|
||||
- secretKey: dev-another-secret-test # name of the key to be created in the secret object
|
||||
remoteRef:
|
||||
key: secret/dev-secret-test #type and name of secret in the Azure KV
|
||||
|
||||
- secretKey: dev-cert-test # name of the key to be created in the secret object
|
||||
remoteRef:
|
||||
key: cert/dev-cert-test #type/name of certificate in the Azure KV
|
||||
#raw value will be returned , use templating features for data processing
|
||||
|
||||
- secretKey: dev-key-test # name of the key to be created in the secret object
|
||||
remoteRef:
|
||||
key: key/dev-key-test #type/name of the public key in the Azure KV
|
||||
|
||||
# dataFrom , return ALL secrets saved in the referenced secretStore
|
||||
# each secret name in the KV will be used as the secret key in the SECRET k8s target object
|
||||
dataFrom:
|
||||
- name: "*"
|
16
docs/snippets/azkv-secret-store.yaml
Normal file
16
docs/snippets/azkv-secret-store.yaml
Normal file
|
@ -0,0 +1,16 @@
|
|||
apiVersion: external-secrets.io/v1alpha1
|
||||
kind: SecretStore
|
||||
metadata:
|
||||
name: example-secret-store
|
||||
spec:
|
||||
azurekv: #Provider type , azure keyvault
|
||||
tenantid: "d3bc2180-xxxx-xxxx-xxxx-154105743342" #azure tenant ID
|
||||
vaultUrl: "https://my-keyvault-name.vault.azure.net" #Keyvault URL
|
||||
authSecretRef:
|
||||
#Secret created in the cluster holding the azure service principal with proper access rights
|
||||
clientID:
|
||||
name: azure-secret-sp
|
||||
key: ClientID
|
||||
clientSecret:
|
||||
name: azure-secret-sp
|
||||
key: ClientSecret
|
Loading…
Reference in a new issue