首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用航海图中的文件将金库的关键秘密传递给库伯奈特吊舱

如何利用航海图中的文件将金库的关键秘密传递给库伯奈特吊舱
EN

Stack Overflow用户
提问于 2021-09-20 20:53:27
回答 2查看 2.8K关注 0票数 2

我使用天蓝色密钥库来保存秘密,并在deployment.yaml中作为env变量使用。

但问题是,我可以在蔚蓝的库伯内特斯群中看到这些秘密。

我在kubernetes文档中看到,为了更安全的部署,我们可以使用这些变量作为文件而不是env变量。

要实现这一点,我需要做什么改变?

这是我的头盔图-

SecretProviderClass.yaml

代码语言:javascript
复制
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
  name: azure-keyvault 
spec:
  provider: azure
  secretObjects:
  - secretName: database-configs
    type: Opaque
    data:
    - objectName: DB-URL
      key: DB-URL

  parameters:
    usePodIdentity: "false"
    useVMManagedIdentity: "true"
    userAssignedIdentityID: {{ .Values.spec.parameters.userAssignedIdentityID }} 
    resourceGroup: {{ .Values.spec.parameters.resourceGroup }} 
    keyvaultName: {{ .Values.spec.parameters.keyvaultName }} 
    tenantId: {{ .Values.spec.parameters.tenantId }} 
    objects: |
      array:
        - |
          objectName: DB-URL
          objectType: secret
          objectAlias: DB-URL

deployment.yaml

代码语言:javascript
复制
env:
          - name: DB-URL
            valueFrom:
              secretKeyRef:
                name: database-configs
                key: DB-URL
          volumeMounts:
          - mountPath: "/mnt/azure"
            name: volume
          - mountPath: "mnt/secrets-store"
            name: secrets-mount
            readOnly: true
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: azure-managed-disk      
        - name: secrets-mount
          csi:
            driver: secrets-store.csi.k8s.io
            readOnly: true
            volumeAttributes:
              secretProviderClass: "azure-keyvault"

文件,其中helm在部署时替换了这些值-

settings.ini -

代码语言:javascript
复制
[server]
hostname = "localhost"
hot_deployment = false
url = "$env{DB-URL}"

[user_store]
type = "read_only_ldap"

任何帮助都是非常感谢的。

我正在寻找安全的方法来使用金库和库伯奈特斯。

EN

回答 2

Stack Overflow用户

发布于 2021-09-20 22:30:14

这些秘密出现在Azure Portal Kubernetes资源视图中,因为SecretProviderClass azure-keyvaultspec.secretObjects字段。在某些情况下,您可能希望创建一个Kubernetes秘密来反映已装入的内容。使用可选的secretObjects字段来定义同步的Kubernetes秘密对象的所需状态。参考文献

删除spec.secretObjects将阻止挂载的秘密内容与AKS集群同步。

环境变量是一个动态命名的值,可以影响在计算机上运行进程的方式。它们是运行进程的环境的一部分。不应将这些与文件混淆。

Kubernetes文件说,秘密可以通过以下三种方式与Pod一起使用:

我看到您的Helm图表已经设置了秘密卷挂载。这就离开了这里的最后一步

修改您的图像或命令行,以便程序在显示机密的目录中查找文件(在本例中,它看起来像/mnt/secrets-store)。秘密data映射中的每个键都成为mountPath下的文件名。

备注:假设您错过了/

  • mountPath:“mnt/机密-商店”
票数 0
EN

Stack Overflow用户

发布于 2022-04-23 00:00:13

我仍然在寻找一个更好的答案,但这是我尝试过的。

部署一个小虚拟部署,将所有秘密映射到卷映射和环境变量,并与SecretProviderClass匹配。这会在K8S中创建秘密。

现在,使用这些秘密部署头盔图是可行的。

我知道这是部署不必要的东西的开销+它需要高度可用。但却找不到任何解决办法。

寻找更好的答案!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69260696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档