设置 Vault 变量后
可以在部署中添加注释,将变量从Vault中取出到部署中
annotations:
vault.hashicorp.com/agent-image: <Agent image>
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-inject-secret-secrets: kv/<Path-of-secret>
vault.hashicorp.com/agent-inject-template-secrets: |2
{{- with secret "kv/<Path-of-secret>" -}}
#!/bin/sh
set -e
{{- range $key, $value := .Data.data }}
export {{ $key }}={{ $value }}
{{- end }}
exec "$@"
{{- end }}
vault.hashicorp.com/auth-path: auth/<K8s cluster for auth>
vault.hashicorp.com/role: app
这将在您的 POD 中创建该文件。
当你的应用程序运行时,它应该首先执行这个文件,环境变量将被注入到 POD 中。
因此,Vault 注释将创建一个与您获得的文件相同的文件txt但相反,我们会这样做
{{- range $key, $value := .Data.data }}
export {{ $key }}={{ $value }}
{{- end }}
它将保留并注入export在键和值之前。现在该文件是一种 shell 脚本,一旦它在应用程序启动时执行,它将向OS level.
将此文件保留在 repo 中并将其添加到 Docker 中./bin/runapp
#!/bin/bash
if [ -f '/vault/secrets/secrets' ]; then
source '/vault/secrets/secrets'
fi
node <path-insnide-docker>/index.js #Sorry dont know scala or Java
包.json
"start": "./bin/runapp",
Dockerfile
ADD ./bin/runapp ./
EXPOSE 4444
CMD ["npm", "start"]
您的保险库注入文件将类似于 pod 内的内容/vault/secrets/secrets
或您配置的路径。
#!/bin/sh
set -e
export development=false
export production=true
exec "$@"