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

该镜像提供与Vault集成的工具,用于在Kubernetes环境中实现Vault认证、密钥同步及令牌管理。基于Seth Vargo的vault-kubernetes-authenticator项目,支持三种核心场景:获取一次性Vault令牌、同步Vault密钥至Kubernetes密钥、以及为Pod生命周期内提供持续有效的Vault令牌。
启动初始化容器vault-kubernetes-authenticator向Vault认证并获取令牌,该令牌将在指定TTL后过期,适用于一次性密钥访问场景。
先通过vault-kubernetes-authenticator认证获取令牌,再启动vault-kubernetes-synchronizer初始化容器,将Vault密钥同步至Kubernetes密钥,适用于需要在Kubernetes中持久化使用Vault密钥的场景。
通过vault-kubernetes-authenticator初始化容器获取令牌,再启动vault-kubernetes-token-renewer边车容器定期续期令牌,确保Pod运行期间令牌持续有效。
通过以下环境变量配置Vault客户端,最小配置需包含VAULT_ADDR(建议配合VAULT_SKIP_VERIFY=true用于测试环境):
VAULT_ADDR:Vault服务地址VAULT_CACERT:CA证书路径VAULT_CAPATH:CA证书目录VAULT_CLIENT_CERT:客户端证书路径VAULT_CLIENT_KEY:客户端密钥路径VAULT_CLIENT_TIMEOUT:客户端超时时间VAULT_SKIP_VERIFY:是否跳过TLS验证(布尔值)VAULT_TLS_SERVER_NAME:TLS服务器名称VAULT_WRAP_TTL:包装令牌TTLVAULT_MAX_RETRIES:最大重试次数VAULT_TOKEN:Vault令牌VAULT_MFA:MFA配置VAULT_RATE_LIMIT:速率限制vault-kubernetes-authenticator用于向Vault认证并获取令牌,存储至指定路径供后续使用。
VAULT_ROLE:必填,用于认证的Vault角色名称VAULT_TOKEN_PATH:令牌存储路径(通常为共享卷)VAULT_AUTH_MOUNT_PATH: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-synchronizer依赖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 | first |
secret/k8s/second | second |
Kubernetes中的标签/名称需符合RFC-1123规范。
若Vault中存储的是二进制数据(如Java KeyStore),需使用base64编码并添加前缀base64:。例如:
# 创建Vault密钥(包含base64编码数据) echo "base64:$(base64 -w0 filename)" | vault kv put secret/k8s/jks keystore=-
同步器会自动解码base64:前缀的内容,避免双重编码。
VAULT_TOKEN_PATH:令牌存储路径(与认证容器共享)VAULT_SECRETS:逗号分隔的Vault密钥路径列表(支持上述映射格式)SECRET_PREFIX:Kubernetes密钥名称前缀(如v3t_,则Vault密钥first同步为v3t_first)SYNCHRONIZER_ANNOTATION:用于标记同步器管理的密钥的注解(默认:vault-secret)SYNCHRONIZER_LABELS:添加到同步密钥的标签(格式:k1=v1,k2=v2,重复键会覆盖)vault-kubernetes-authenticator认证失败且ALLOW_FAIL=true:
VAULT_SECRETS对应的Kubernetes密钥是否已存在,存在则继续,缺失则失败Vault中存在两个密钥:
$ vault kv get secret/k8s/first ====== Metadata ====== ... === Data === Key Value --- ----- one *** two 23456781 $ vault kv get secret/k8s/second ====== Metadata ====== ... ===== 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-token-renewer依赖vault-kubernetes-authenticator,定期续期Vault令牌,确保Pod生命周期内令牌有效。
VAULT_TOKEN_PATH:令牌存储路径(与认证容器共享)VAULT_REAUTH:令牌无效时是否重新认证(默认: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 # 查看边车容器日志 $ 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
permission denied时,需为服务账户添加sys/mounts路径的read权限:
path "sys/mounts" { capabilities = ["read"] }
strconv.Atoi: parsing "": invalid syntax时,需启用KV引擎版本:
vault secrets enable -version=2 kv # 启用v2版本 vault kv enable-versioning secret/ # 为现有路径启用版本控制
免费版仅支持 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