如何使用 Azure Vault 中保存的 acr 机密进行图像提取?

如何使用 Azure Vault 中保存的 acr 机密进行图像提取?

使用 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 机密。

相关内容