1
0
Fork 0
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:
paul-the-alien[bot] 2021-06-09 08:25:33 +00:00 committed by GitHub
commit b8a763300f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 101 additions and 0 deletions

View file

@ -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
```

View 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

View 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: "*"

View 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