使用 azure vault 和 csi 驱动程序,能够创建机密并将它们作为容器中的单个文件进行访问。
我跟着这创建基本秘密的方法来。
可以将容器中的秘密作为容器内部的秘密文件来访问。
但是,当我尝试从中创建一个秘密并将其用于 imagePull 时,它不起作用。
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: azure-kvname
namespace: default
spec:
provider: azure
secretObjects:
- secretName: acr-test
type: kubernetes.io/dockerconfigjson
data:
- objectName: martrepo
key: .dockerconfigjson
parameters:
usePodIdentity: "false"
useVMManagedIdentity: "false"
userAssignedIdentityID: ""
keyvaultName: "secret-store-dummy"
objects: |
array:
- |
objectName: secret1
objectType: secret
objectVersion: ""
- |
objectName: martrepo
objectType: secret
objectVersion: ""
tenantId: "f33abe27-86cd-46d6-ae2b-b918362ab160"
---
kind: Pod
apiVersion: v1
metadata:
name: busybox-secrets-store-inline
spec:
containers:
- name: busybox
image: k8s.gcr.io/e2e-test-images/busybox:1.29
command:
- "/bin/sleep"
- "10000"
volumeMounts:
- name: secrets-store-inline
mountPath: "/mnt/secrets-store"
readOnly: true
volumes:
- name: secrets-store-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: "azure-kvname"
nodePublishSecretRef: # Only required when using service principal mode
name: secrets-store-creds
我尝试在 imagePullSecrets 上部署应用程序时使用上述 acr-test 密钥,但它没有起作用,因为事件显示了拉取图像的问题。
如果方法错误,请指导我。
而且,如何将这些秘密用作现有配置图的一部分?
答案1
我不相信这是可以实现的。CSI 驱动程序将机密作为卷安装在容器内,但在创建容器和安装卷之前需要镜像拉取机密,因此机密将不可用。
您需要将其设置为标准静态 Kubernetes 机密。