Я пытаюсь использовать секреты из Azure Key Vault в развертывании Kubernetes в качестве env-переменных и у меня не получается. Я использую Azure pod identity, и секреты монтируются в файл, и это работает, однако я хочу, чтобы они были доступны как переменные env.
Вот мой файл secrets.yml:
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: azure-kvname
spec:
provider: azure
secretObjects:
- secretName: test-secret
type: Opaque
data:
- objectName: test-db-user
key: dbuser
- objectName: test-db-pass
key: dbpassword
parameters:
usePodIdentity: "true"
keyvaultName: "test-keyvault"
cloudName: ""
objects: |
array:
- |
objectName: test-db-user
objectType: secret
objectVersion: ""
- |
objectName: test-db-pass
objectType: secret
objectVersion: ""
tenantId: "<tenantID>"
И мой deployment.yml:
apiVersion: v1
kind: Pod
metadata:
name: nginx-secrets-store-inline
labels:
aadpodidbinding: aadpodidbinding
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: secrets-store-inline
mountPath: "/mnt/secrets-store"
readOnly: true
env:
- name: DB_USER
valueFrom:
secretKeyRef:
name: test-secret
key: dbuser
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: test-secret
key: dbpassword
volumes:
- name: secrets-store-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: azure-kvname
Я следовал примерам, предоставленным Azure: secret, deployment
Когда я применяю оба файла, я получаю CreateContainerConfigError
: Error: secret "test-secret" not found