Vault Secrets Operator(VSO)***镜像是基于当前发布版本自动构建的容器镜像,用于在Kubernetes环境中实现Vault密钥与Kubernetes Secrets的原生同步。其核心用途是允许Kubernetes Pod通过Kubernetes Secrets间接消费Vault密钥,无需直接访问Vault服务,从而简化密钥管理流程并增强安全性。该镜像支持从Vault社区版、企业版及HCP Vault Secrets同步密钥。
通过监听Kubernetes集群中支持的自定义资源定义(CRD),触发Vault密钥到Kubernetes Secrets的同步操作,CRD中包含同步所需的配置规范。
兼容多种Vault服务类型,包括Vault社区版、企业版以及HCP Vault Secrets,满足不同部署环境的需求。
将Vault中的源密钥数据直接写入Kubernetes目标Secret,并持续监控源密钥变更,确保目标Secret与源密钥实时保持一致。
应用Pod只需访问Kubernetes Secrets即可获取密钥数据,无需集成Vault SDK或直接调用Vault API,降低应用复杂度。
VSO作为Kubernetes Operator,需部署至Kubernetes集群中,以下为基础部署流程:
首先部署VSO所需的CRD:
bashkubectl apply -f [***] kubectl apply -f [***] # 其他CRD(如VaultAuth、VaultConnection等)根据实际需求部署,参考***文档
通过容器镜像部署VSO控制器(需替换<IMAGE_TAG>为实际版本,如1.0.0):
yaml# vault-secrets-operator-deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: vault-secrets-operator namespace: vault-secrets-operator spec: replicas: 1 selector: matchLabels: app: vault-secrets-operator template: metadata: labels: app: vault-secrets-operator spec: containers: - name: vault-secrets-operator image: hashicorp/vault-secrets-operator:<IMAGE_TAG> args: - --leader-elect env: - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: VAULT_ADDR value: "[***]" # Vault服务地址 - name: VAULT_TOKEN valueFrom: secretKeyRef: name: vault-token key: token # 存储Vault访问令牌的Secret
应用部署清单:
bashkubectl create namespace vault-secrets-operator kubectl apply -f vault-secrets-operator-deploy.yaml
以同步Vault静态密钥为例,创建VaultStaticSecret CRD:
yamlapiVersion: secret.hashicorp.com/v1beta1 kind: VaultStaticSecret metadata: name: example-vault-static-secret spec: vaultAuthRef: example-vault-auth # 关联Vault认证配置(需提前创建) mount: kv-v2 # Vault密钥引擎挂载路径 path: my-secret # Vault密钥路径 destination: name: k8s-secret # 目标Kubernetes Secret名称 create: true # 自动创建目标Secret refreshAfter: 30s # 同步间隔
应用CRD:
bashkubectl apply -f example-vault-static-secret.yaml
VSO作为Kubernetes Operator,设计目标为运行在K8s集群中,直接通过docker run部署需手动配置K8s API访问,仅建议用于测试环境:
bashdocker run -d \ --name vault-secrets-operator \ -v /path/to/kubeconfig:/root/.kube/config \ # 挂载K8s配置以访问集群API -e VAULT_ADDR="[***]" \ # Vault服务地址 -e VAULT_TOKEN="hvs.xxxx" \ # Vault访问令牌(测试用,生产环境建议用Vault Auth CRD) -e LOG_LEVEL="info" \ # 日志级别(debug/info/warn/error) hashicorp/vault-secrets-operator:<IMAGE_TAG>
VSO支持通过环境变量或CRD配置参数自定义行为,核心配置如下:
| 参数名 | 说明 | 默认值 |
|---|---|---|
VAULT_ADDR | Vault服务地址(如[***]) | 无(必填) |
POD_NAMESPACE | Operator部署的Kubernetes命名空间(用于监听CRD) | 自动从Pod元数据获取 |
LOG_LEVEL | 日志级别(debug/info/warn/error) | info |
LEADER_ELECT | 是否启用Leader选举(多副本部署时确保单实例同步) | true |
WATCH_NAMESPACE | 限制监听的命名空间(默认监听所有命名空间,指定后仅监听目标命名空间) | 无(监听所有) |
通过VaultStaticSecret/VaultDynamicSecret等CRD的spec字段配置同步规则,核心参数包括:
vaultAuthRef:关联Vault认证配置(如Kubernetes Auth、Token Auth等,需通过VaultAuth CRD定义)。mount:Vault密钥引擎的挂载路径(如kv-v2)。path:Vault密钥的完整路径(如myapp/database)。destination:目标Kubernetes Secret的名称及创建策略。refreshAfter:密钥同步间隔(如30s)。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429