使用 azure secret 提供程序进行自定义 class

kustomize with azure secret provider class

我为我的 Azure Kubernetes 服务部署定义了一个 secretsProviderClass 资源,它允许我从 Azure Key Vault 创建机密。我想将 Kustomize 与它一起使用,以便统一我在多个环境中的部署。这是我的清单:

apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
  name: azure-kvname
spec:
  provider: azure
  secretObjects:
  - data:
    - key: dbuser
      objectName: db-user
    - key: dbpassword
      objectName: db-pass
    - key: admin
      objectName: admin-user
    - key: adminpass
      objectName: admin-password
    secretName: secret
    type: Opaque
  parameters:
    usePodIdentity: "true"
    keyvaultName: "dev-keyvault"
    cloudName: ""
    objects:  |
      array:
        - |
          objectName: db-user
          objectType: secret
          objectVersion: ""
        - |
          objectName: db-pass
          objectType: secret
          objectVersion: ""
        - |
          objectName: admin-user
          objectType: secret
          objectVersion: ""
        - |
          objectName: admin-password
          objectType: secret
          objectVersion: ""
    tenantId: "XXXXXXXXXXXX"

这是我用作基础的清单。我想对此使用覆盖并根据我要部署到的环境应用值。具体来说,我想修改 objectName 属性。我尝试应用 Json6902 补丁:

- op: replace
  path: /spec/parameters/objects/array/0/objectName
  value: "dev-db-user"

- op: replace
  path: /spec/parameters/objects/array/1/objectName
  value: "dev-db-password"

- op: replace
  path: /spec/parameters/objects/array/2/objectName
  value: "dev-admin-user"

- op: replace
  path: /spec/parameters/objects/array/3/objectName
  value: "dev-admin-password"

不幸的是,它没有用,也没有替换值。 Kustomize 可以吗?

不幸的是 - 您尝试访问的值不是另一个嵌套的 YAML 数组 - YAML 中一行末尾的管道符号表示后面的任何缩进文本都应解释为多行标量值

使用 kustomize,您可能需要替换整个 /spec/parameters/objects

如果您还没有开始使用 kustomize,您可以考虑像 Helm 这样的模板引擎,它应该允许您替换此字符串中的值

...或者您可以结合使用 Helm 进行模板化和 Kustomize 进行资源管理、特定配置的补丁和覆盖。