L'utilisateur doit appartenir à un groupe avec le rôle ADMIN, ou si vous utilisez des politiques IAM, il doit avoir au moins les droits suivants sur le domaine OKMS :
okms:apikms:secret/create
okms:apikms:secret/version/getData
okms:apiovh:secret/get
Il est aussi possible de créer un utilisateur avec l'OVHcloud CLI :
ovhcloud iam user create --login "secretmanager-b1033fdd-xxxx-xxxx-xxxx-xxxxxxxxx" --group ADMIN --description "A user create for Secret Manager, linked to xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx" --password "secretmanager-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx" --email "secretmanager-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx@ovhcloud.com"
Puis créez un token d'accès personnel (Personal Access Token ou PAT) user_pat :
Le PAT peut être créé avec l'OVHcloud CLI et la commande suivante (complétez-la avec vos valeurs) :
ovhcloud iam user token create {user} --name pat-secretmanager-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx --description "PAT secret manager for domain xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
La CLI répondra avec la valeur du token :
✅ Token Secret-Manager created successfully, Value: eyJhbGciOiJ...punpVAg
En alternative, il est suggéré de sauvegarder directement le PAT dans une variable d'environnement :
PAT_TOKEN=$(ovhcloud iam user token create {user} --name pat-secretmanager-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx --description "PAT secret manager for domain secretmanager-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" -j | jq .details.token | tr -d '"') ; echo $PAT_TOKEN
Conservez la valeur du champ token car elle ne sera plus affichée et sera utilisée pour s'authentifier sur le Secret Manager en tant que user_pat.
Informations du Secret Manager
Vous aurez également besoin de la region et de l'okms-id du domaine OKMS que vous souhaitez utiliser. Cet ID et cette région peuvent être trouvés sur le ou via l'OVHcloud CLI :
$ ovhcloud okms list┌──────────────────────────────────────┬─────────────┐│ id │ region │├──────────────────────────────────────┼─────────────┤│ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx │ eu-west-par ││ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx │ eu-west-par │└──────────────────────────────────────┴─────────────┘
Configuration du Secret Provider dans Kubernetes
Installation de l'External Secret Operator (ESO) sur votre cluster Kubernetes
$ kubectl get secret ovhcloud-vault-token -n external-secretsNAME TYPE DATA AGEovhcloud-vault-token Opaque 1 5m
Configuration de l'External Secret Operator
Tout d'abord, configurez un ClusterSecretStore qui est chargé de la synchronisation avec le Secret Manager.
Nous configurons le SecretStore en utilisant HashiCorp Vault avec l'authentification par token et l'endpoint OKMS en tant que backend.
Ajoutez le user_pat en tant que secret pour pouvoir l'utiliser dans les chartes.
Pour définir une nouvelle ressource ClusterSecretStore, créez un fichier clustersecretstore.yaml avec le contenu suivant :
apiVersion: external-secrets.io/v1kind: ClusterSecretStoremetadata: name: vault-secret-storespec: provider: vault: server: "https://<region>.okms.ovh.net/api/<okms_id>" # endpoint OKMS, remplissez avec la région correcte et votre okms_id path: "secret" version: "v2" auth: tokenSecretRef: name: ovhcloud-vault-token # le secret k8s contenant votre PAT key: token namespace: external-secrets
Par exemple, pour Europe (France - Paris), l'endpoint OKMS est eu-west-par.okms.ovh.net.
Déployez la ressource dans votre cluster :
kubectl apply -f secretstore.yaml
Utilisation de l'External Secret Operator
Une fois le ClusterSecretStore configuré, vous pouvez définir des ExternalSecret provenant du gestionnaire de secrets.
Créez un fichier externalsecret.yaml avec le contenu suivant :
$ kubectl get secret -n external-secretsNAME TYPE DATA AGE...ovhregistrycred kubernetes.io/dockerconfigjson 1 15m...
Pour plus d'informations sur la gestion de l'External Secret Operator, veuillez consulter la documentation dédiée, en utilisant le fournisseur HashiCorp Vault : https://external-secrets.io/latest/.