本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

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 |
# 容器日志示例 $ 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:。例如:
# 生成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中存在两个密钥:
$ vault kv get secret/k8s/first === Data === Key Value --- ----- one *** two 23456781 $ vault kv get secret/k8s/second === Data === Key Value --- ----- green *** poison ivy
部署配置:
# deployment.yaml 片段 env: - name: VAULT_SECRETS value: secret/data/k8s/first,secret/data/k8s/second
同步结果:
$ 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可能覆盖此值) | 否 | - |
# 初始化容器日志 $ 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
基于Seth Vargo的工作。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429