
vault-kubernetes-authenticator是一个用于Kubernetes环境与Vault集成的工具镜像,提供初始化容器(Init Container)和Sidecar容器,实现Vault令牌获取、Vault密钥同步至Kubernetes密钥以及令牌续期功能,保障Pod在生命周期内安全访问Vault资源。
vault-kubernetes-authenticator向Vault进行身份验证,获取一次性使用的Vault令牌。vault-kubernetes-synchronizer将Vault密钥同步至Kubernetes密钥,并支持标签管理和过期密钥清理。vault-kubernetes-token-renewer定期续期Vault令牌,确保Pod生命周期内令牌有效。启动初始化容器vault-kubernetes-authenticator向Vault进行身份验证并获取令牌,令牌将在指定TTL后过期,适用于一次性访问Vault的场景。
先通过vault-kubernetes-authenticator获取Vault令牌,再启动vault-kubernetes-synchronizer将指定Vault密钥同步为Kubernetes密钥,支持密钥映射、编码处理及标签管理。
先通过vault-kubernetes-authenticator获取令牌,再启动Sidecar容器vault-kubernetes-token-renewer定期续期令牌,确保Pod运行期间令牌持续有效。
vault-kubernetes-token-renewer续期失败时(restartPolicy=always),容器将重启。若令牌已过期无法续期,需重启Pod由vault-kubernetes-authenticator重新获取令牌。VAULT_REAUTH=true,令牌续期失败时将重新认证,此时需确保提供vault-kubernetes-authenticator所需的所有认证环境变量,且令牌消费者需支持重新读取令牌文件。支持通过环境变量配置Vault客户端,常用变量如下:
VAULT_ADDR:Vault服务器地址VAULT_CACERT:CA证书路径VAULT_SKIP_VERIFY:是否跳过TLS验证(默认false)VAULT_TOKEN:Vault令牌VAULT_ROLE:用于身份验证的Vault角色名称最小配置需设置
VAULT_ADDR,若未配置TLS验证,需设置VAULT_SKIP_VERIFY=true。
用于向Vault进行身份验证并获取令牌,存储至指定路径供其他容器使用。
| 环境变量 | 描述 | 是否必需 | 默认值 |
|---|---|---|---|
VAULT_ROLE | 用于身份验证的Vault角色名称 | 是 | - |
VAULT_TOKEN_PATH | 存储令牌的磁盘路径(通常为共享卷) | 否 | - |
VAULT_AUTH_MOUNT_PATH | Vault中Kubernetes认证方法的挂载路径 | 否 | kubernetes |
SERVICE_ACCOUNT_TOKEN_PATH | Kubernetes服务账户JWT令牌路径 | 否 | /var/run/secrets/kubernetes.io/serviceaccount/token |
ALLOW_FAIL | 身份验证失败时是否允许容器成功退出(需后续容器处理失败场景) | 否 | false |
bash# 容器日志示例 $ k logs vault-kubernetes-authenticator-5675d58d95-4wd8v -c vault-kubernetes-authenticator 2018/11/26 14:56:29 successfully authenticated to vault 2018/11/26 14:56:29 successfully stored vault token at /home/vault/.vault-token # 验证令牌文件 $ k exec -ti vault-kubernetes-authenticator-5675d58d95-4wd8v sh ~ $ VAULT_TOKEN=$(cat /home/vault/.vault-token) ~ $ echo $VAULT_TOKEN 8Pj0EzFLWQv8uWcjbP9hF1MB
依赖vault-kubernetes-authenticator获取的令牌,将Vault密钥同步至Kubernetes密钥,并管理密钥生命周期。
| 映射格式 | Vault密钥路径 | Kubernetes密钥名称 |
|---|---|---|
secret/k8s/first | secret/k8s/first | first |
secret/k8s/first:third | secret/k8s/first | third |
secret/k8s/ | secret/k8s/first、secret/k8s/second | first、second |
Kubernetes密钥名称和标签需符合RFC-1123规范。
若Vault中存储的是二进制数据(如Java KeyStore),需使用base64编码并添加前缀base64:。例如:
bash# 生成Vault密钥内容 echo "base64:$(base64 -w0 filename)"
同步时会自动解码,避免双重编码。
| 环境变量 | 描述 | 是否必需 | 默认值 |
|---|---|---|---|
VAULT_TOKEN_PATH | 存储令牌的磁盘路径(与vault-kubernetes-authenticator共享) | 是 | - |
VAULT_SECRETS | 待同步的Vault密钥列表,逗号分隔(遵循密钥映射规则) | 是 | - |
SECRET_PREFIX | Kubernetes密钥名称前缀(如v3t_,则Vault密钥first同步为v3t_first) | 否 | - |
SYNCHRONIZER_ANNOTATION | 用于标记同步生成的Kubernetes密钥的注解键名 | 否 | vault-secret |
SYNCHRONIZER_LABELS | 添加到同步密钥的标签,格式k1=v1,k2=v2(重复键会覆盖现有标签) | 否 | - |
vault-kubernetes-authenticator身份验证失败且ALLOW_FAIL=true:
VAULT_SECRETS对应的Kubernetes密钥是否已存在,存在则警告后成功退出;Vault中存在两个密钥:
bash$ vault kv get secret/k8s/first === Data === Key Value --- ----- one 12345678 two 23456781 $ vault kv get secret/k8s/second === Data === Key Value --- ----- green lantern poison ivy
部署配置:
yaml# deployment.yaml 片段 env: - name: VAULT_SECRETS value: secret/data/k8s/first,secret/data/k8s/second
同步结果:
bash$ k get secrets | grep -e first -e second first Opaque 2 16m second Opaque 2 16m $ k describe secret first Name: first Namespace: vault-test Annotations: vault-secret=secret/data/k8s/first Type: Opaque Data ==== one: 8 bytes two: 8 bytes
依赖vault-kubernetes-authenticator获取的令牌,定期续期Vault令牌,确保Pod生命周期内令牌有效。
| 环境变量 | 描述 | 是否必需 | 默认值 |
|---|---|---|---|
VAULT_TOKEN_PATH | 存储令牌的磁盘路径(与vault-kubernetes-authenticator共享) | 是 | - |
VAULT_REAUTH | 令牌无效时是否重新认证(需提供vault-kubernetes-authenticator的认证环境变量) | 否 | false |
VAULT_TTL | 请求的令牌TTL(Vault可能覆盖此值) | 否 | - |
bash# 初始化容器日志 $ k logs vault-kubernetes-token-renewer-844488f7bc-c6ztf -c vault-kubernetes-authenticator 2018/11/26 14:56:30 successfully authenticated to vault 2018/11/26 14:56:30 successfully stored vault token at /home/vault/.vault-token # Sidecar容器日志 $ k logs vault-kubernetes-token-renewer-844488f7bc-c6ztf -c vault-kubernetes-token-renewer 2018/11/26 14:56:32 start renewer loop 2018/11/26 14:56:32 token renewed
基于https://github.com/sethvargo/vault-kubernetes-authenticator%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务