问题描述
我正在阅读 hashicorp
的官方 documentation,关于利用 CSI 机密驱动程序安装通过提供给 Pod 的 vault
创建的机密。
一旦完成了大量设置/样板工作,这些秘密似乎最终会通过 SecretProviderClass
作为 follows 提供给工作负载:
---
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
Metadata:
name: vault-db-creds
spec:
# Vault CSI Provider
provider: vault
parameters:
# Vault role name to use during login
roleName: 'app'
# Vault's hostname
vaultAddress: 'https://vault:8200'
# TLS CA certification for validation
vaultCACertPath: '/vault/tls/ca.crt'
objects: |
- objectName: "dbUsername"
secretPath: "database/creds/db-app"
secretKey: "username"
- objectName: "dbPassword"
secretPath: "database/creds/db-app"
secretKey: "password"
# "objectName" is an alias used within the SecretProviderClass to reference
# that specific secret. This will also be the filename containing the secret.
# "secretPath" is the path in Vault where the secret should be retrieved.
# "secretKey" is the key within the Vault secret response to extract a value from.
根据上述相关评论:
"objectName" 是 SecretProviderClass 中用来引用的别名 那个特定的秘密。这也将是包含机密的文件名。
我认为这意味着例如dbUsername
不会作为相应 pod 的环境变量随时可用。
有没有办法将这些变量(例如 dbUsername
、username
等)作为环境变量公开给 k8s
应用程序?
我最好的假设(在开始 PoC 之前)是,在 /path/where/all/vault/secrets/are/mounted/database/creds/
下迭代获取所有文件也许可以解决问题,但我想知道是否有更好的替代方案,因为目前大多数云应用程序期望秘密作为环境变量,因此重构代码以读取文件并不是一种替代方法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)