尝试使用vault injector将vault secret作为环境变量导出到k8s pod。https://developer.hashicorp.com/vault/docs/platform/k8s/injector/examples#environment-variable-example
如示例中所述,您需要在容器中源配置文件,它将覆盖您在dockerfile中传递的ENTRYPOINT脚本/命令。
containers:
- name: web
image: alpine:latest
command:
['sh', '-c']
args:
['source /vault/secrets/config && <entrypoint script>']
在我设置中,我没有可以放在args中的静态入口点脚本。docker文件有自己的command/script作为入口点脚本运行。
试图找到是否有任何替代源这个保险库配置在一个容器,让我不改变任何在dockerfile中的入口点脚本。不知道如果k8s是提供任何方法来做到这一点与post-hook或东西。首先运行dockerfile中提到的入口点,然后执行其他脚本/命令通过post-hook。
1条答案
按热度按时间f4t66c6m1#
您可以使用Vault Secrets Operator将secret从Vault同步到Kubernetes Secret资源。
一旦完成了这些操作,就可以在部署清单中使用
envFrom
或vaultFrom
指令将这些秘密作为环境变量公开,如in the documentation所述。此方法不需要重写容器的入口点或参数。
看起来Vault Secrets Operator相对较新,文档似乎有点单薄。您可以使用External Secrets Operator实现类似的功能,它的额外优势是支持各种秘密存储后端。