了解kubernetes spring boot应用中的采购秘密



我遵循这个指南来使用秘密:https://docs.spring.io/spring-cloud-kubernetes/docs/current/reference/html/index.html#secrets-propertysource.

大致说来。

  1. 保存秘密

  2. 在部署中引用机密。yml文件

    containers:
    - env:
    - name: DB_USERNAME
    valueFrom:
    secretKeyRef:
    name: db-secret
    key: username
    - name: DB_PASSWORD
    valueFrom:
    secretKeyRef:
    name: db-secret
    key: password
    
  3. 然后显示"您可以通过多种方式选择要使用的秘密:"并给出了3个例子。然而,不做这些步骤,我仍然可以完美地看到我的嫉妒的秘密。此外,步骤1和步骤2中的操作独立于spring引导(将秘密保存并移动到环境变量中)

我的问题:

  1. 如果我在步骤3中建议的更改,它对我的容器/应用程序/pod有什么更改/改进?
  2. 有没有办法能够避免所有的映射在步骤1和把所有的秘密在一个环境?
  3. 他们写- spring.cloud.kubernetes.secrets。路径=/etc/secrets来获取所有的秘密,他们怎么知道秘密在一个叫做/etc/
  4. 的文件夹里呢?

您可以通过以下方式从secret挂载所有的env变量:

containers:
- name: app
envFrom:
- secretRef:
name: db-secret

至于Spring的秘密从何而来——我不是Spring的专家,但在你提供的链接中似乎已经有了解释:

当启用时,Fabric8SecretsPropertySource查找Kubernetes以下来源的秘密:

从秘密挂载递归读取

以应用程序命名(由spring.application.name定义)

匹配一些标签

所以它从秘密挂载中获取秘密(如果您将它们挂载为卷)。它还扫描Kubernetes API的秘密(我猜在相同的命名空间的应用程序运行)。它可以通过使用Kubernetes服务帐户令牌来实现,默认情况下,该令牌总是挂载到pod中。这取决于Kubernetes RBAC权限赋予pod的serviceaccount的权限。

所以它尝试使用Kubernetes API搜索秘密,并将它们与应用程序名称或应用程序标签进行匹配。

相关内容

  • 没有找到相关文章

最新更新