我尝试遵循 Hashicorp Vault 的指南将机密注入应用程序 pod:https://learn.hashicorp.com/tutorials/vault/kubernetes-sidecar#inject-secrets-into-the-pod
问题是,我根本无法让Vault-agent(sidecar)初始化。
我尝试遵循几个指南,但在尝试启动 sidecar 时总是收到此错误。我不知道为什么我一直收到它,因为日志没有显示任何错误:
kubectl logs pod/orgchart-6f88c9f9f4-fzwcf vault-agent -n vault
我不太确定发生了什么事。我完全遵循上述指南。
当我尝试运行部署补丁时发生错误,该补丁用于在应用程序中注入机密。这是补丁的代码:
spec:
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: 'true'
vault.hashicorp.com/role: 'internal-app'
vault.hashicorp.com/agent-inject-secret-database-config.txt: 'internal/data/database/config'
该指南对部署补丁进行了以下说明:
Vault Agent Injector 仅在包含一组特定注释时修改部署。现有部署可能会对其定义进行修补以包含必要的注释。
因此,我们使用补丁来修改部署并注入所需的秘密,然后像这样应用它:
kubectl patch deployment orgchart --patch "$(cat patch-inject-secrets.yaml)"
提前谢谢您!
该 Pod 中是否有Vault-agent-init 容器?可以分享一下日志吗?通常,vault-agent-init 是有问题的,并且大多数时候日志会显示任何配置问题。
通过读取
vault-agent-init
容器的日志:
kubectl logs pods/orgchart-68cc76597b-vjr2k vault-agent-init
我能够理解这个问题了:
2023-12-23T18:20:51.978Z [WARN] (view) vault.read(internal/data/database/config): vault.read(internal/data/database/config): Error making API request.
URL: GET http://vault.default.svc:8200/v1/internal/data/database/config
Code: 403. Errors:
* 1 error occurred:
* permission denied
(retry attempt 2 after "500ms")
作为临时解决方法,我使用
*
而不是 internal/data/database/config
:
vault policy write internal-app - <<EOF
path "*" {
capabilities = ["read"]
}
EOF
可以端口转发 Vault UI 以在 UI 中查看机密,而不是在终端中键入 Vault 命令:
kubectl port-forward vault-0 8200:8200