Descubra como configurar o External Secrets Operator para armazenar os segredos Kubernetes no Secret Manager da OVHcloud
Objetivo
Este manual explica como configurar o External Secrets Operator do Kubernetes para utilizar o Secret Manager da OVHcloud como fornecedor.
Requisitos
InstruƧƵes
Configuração do Secret Manager
Para permitir o acesso ao Secret Manager, irĆ” precisar de um token, da region e do okms-id do seu Secret Manager.
Criação das credenciais
Crie um utilizador local IAM com direitos de acesso ao seu domĆnio, ou utilize uma conta de serviƧo . Consulte MĆ©todos de autenticação OKMS para obter a configuração completa e os modelos de polĆticas IAM.
O utilizador deve pertencer a um grupo com a função ADMIN ou, caso utilize polĆticas IAM , deve ter pelo menos os seguintes direitos sobre o domĆnio OKMS:
okms:apikms:secret/create
okms:apikms:secret/version/getData
okms:apiovh:secret/get
TambĆ©m Ć© possĆvel criar um utilizador com a CLI OVHcloud :
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"
Em seguida, crie um token de acesso pessoal (Personal Access Token ou PAT) user_pat:
Utilize a seguinte chamada Ć API:
Com o seguinte payload (preencha-o com os seus valores):
{
"description" : "PAT secret manager for domain xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" ,
"name" : "pat-secretmanager-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
} A API responderĆ” com:
{
"creation" : "2025-11-13T10:38:44.658926311Z" ,
"description" : "PAT secret manager for domain xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" ,
"expiresAt" : null ,
"lastUsed" : null ,
"name" : "pat-secretmanager-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" ,
"token" : "eyJhbGciOiJ...punpVAg"
} O PAT pode ser criado com a CLI OVHcloud e o seguinte comando (complete-o com os seus valores):
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" A CLI responderĆ” com o valor do token:
ā
Token Secret-Manager created successfully, value: eyJhbGciOiJ...punpVAg Em alternativa, Ʃ aconselhƔvel guardar diretamente o PAT numa variƔvel de ambiente:
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
Guarde o valor do campo token, pois não serÔ apresentado novamente e serÔ utilizado para se autenticar no Secret Manager como user_pat.
IrĆ” tambĆ©m precisar da region e do okms-id do domĆnio OKMS que pretende utilizar. Este ID e esta regiĆ£o podem ser encontrados no dashboard do seu domĆnio OKMS ou atravĆ©s da CLI OVHcloud :
$ ovhcloud okms list
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāā
ā id ā region ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāā¤
ā xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ā eu-west-par ā
ā xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ā eu-west-par ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāā
Configuração do Secret Provider no Kubernetes
Instalação do External Secrets Operator (ESO) no seu cluster Kubernetes
helm repo add external-secrets https://charts.external-secrets.io
helm repo update
helm install external-secrets \
external-secrets/external-secrets \
-n external-secrets \
--create-namespace \
--set installCRDs= true
Verifique se o ESO estÔ em execução:
$ kubectl get all -n external-secrets
NAME READY STATUS RESTARTS AGE
pod/external-secrets-8cbc56569-9875p 1/1 Running 0 12s
pod/external-secrets-cert-controller-565fcd479b-xbkcp 0/1 Running 0 12s
pod/external-secrets-webhook-7fb59d4b88-9tkl6 0/1 Running 0 12s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT ( S ) AGE
service/external-secrets-webhook ClusterIP 10.3.43.102 < non e > 443/TCP 13s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/external-secrets 1/1 1 1 13s
deployment.apps/external-secrets-cert-controller 0/1 1 0 13s
deployment.apps/external-secrets-webhook 0/1 1 0 13s
NAME DESIRED CURRENT READY AGE
replicaset.apps/external-secrets-8cbc56569 1 1 1 13s
replicaset.apps/external-secrets-cert-controller-565fcd479b 1 1 0 13s
replicaset.apps/external-secrets-webhook-7fb59d4b88 1 1 0 13s
Criação de um segredo que contém o PAT
Comece por codificar o seu user_pat em base 64 para que possa ser armazenado num segredo Kubernetes.
$ echo -n "<token>" | base64
ZXlKaG...wVkFn
Ou, se o user_pat estiver armazenado numa variƔvel de ambiente:
PAT_TOKEN_B64 = $( echo -n $PAT_TOKEN | base64 ) ; echo $PAT_TOKEN_B64
Em seguida, crie um ficheiro secret.yaml:
apiVersion : v1
kind : Secret
metadata :
name : ovhcloud-vault-token
namespace : external-secrets
data :
token : ZXlKaG...wVkFn
E aplique o recurso ao cluster com o comando kubectl apply -f secret.yaml.
Ou, se utilizar uma variƔvel de ambiente:
kubectl create secret generic ovhcloud-vault-token -n external-secrets --from-literal=token=$PAT_TOKEN_B64
O segredo deverĆ” ter sido criado:
$ kubectl get secret ovhcloud-vault-token -n external-secrets
NAME TYPE DATA AGE
ovhcloud-vault-token Opaque 1 5m
Configuração do External Secrets Operator
Em primeiro lugar, configure um ClusterSecretStore responsÔvel pela sincronização com o Secret Manager.
Configuramos o SecretStore utilizando o HashiCorp Vault com autenticação por token e o endpoint OKMS como backend.
Adicione o user_pat como segredo para poder utilizĆ”-lo nos charts.
Para definir um novo recurso ClusterSecretStore, crie um ficheiro clustersecretstore.yaml com o seguinte conteĆŗdo:
apiVersion : external-secrets.io/v1
kind : ClusterSecretStore
metadata :
name : vault-secret-store
spec :
provider :
vault :
server : "https://<region>.okms.ovh.net/api/<okms_id>" # endpoint OKMS, preencha com a região correta e o seu okms_id
path : "secret"
version : "v2"
auth :
tokenSecretRef :
name : ovhcloud-vault-token # o secret k8s que contƩm o seu PAT
key : token
namespace : external-secrets
Info
Esta integração também funciona com um SecretStore.
O nome da região pode ser obtido a partir da localização da sua região utilizando:
šŖšŗ EU ā¾
GET /location
Por exemplo, para Europe (France - Paris) , o endpoint OKMS Ć© eu-west-par.okms.ovh.net .
Implemente o recurso no seu cluster:
kubectl apply -f clustersecretstore.yaml
Utilização do External Secrets Operator
Depois de configurado o ClusterSecretStore, pode definir os ExternalSecret provenientes do Secret Manager.
Crie um ficheiro externalsecret.yaml com o seguinte conteĆŗdo:
apiVersion : external-secrets.io/v1
kind : ExternalSecret
metadata :
name : docker-config-secret
namespace : external-secrets
spec :
refreshInterval : 30m
secretStoreRef :
name : vault-secret-store
kind : ClusterSecretStore
target :
template :
type : kubernetes.io/dockerconfigjson
data :
.dockerconfigjson : "{{ .mysecret | toString }}"
name : ovhregistrycred
creationPolicy : Owner
data :
- secretKey : mysecret
remoteRef :
key : prod/va1/dockerconfigjson
Aplique o recurso no seu cluster:
kubectl apply -f externalsecret.yaml
Isto irĆ” criar um objeto Secret do Kubernetes.
$ kubectl get secret -n external-secrets
NAME TYPE DATA AGE
...
ovhregistrycred kubernetes.io/dockerconfigjson 1 15m
...
Para mais informações sobre a gestão do External Secrets Operator, consulte a documentação dedicada, utilizando o fornecedor HashiCorp Vault: https://external-secrets.io/latest/ .
Quer saber mais?
Métodos de autenticação OKMS
Utilizar o Secret Manager com a API REST
Fale com a nossa comunidade de utilizadores .