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集群中,以下为基础部署流程:
1. 安装CRD
首先部署VSO所需的CRD:
bashkubectl apply -f https://raw.githubusercontent.com/hashicorp/vault-secrets-operator/main/config/crd/bases/secret.hashicorp.com_vaultstaticsecrets.yaml kubectl apply -f https://raw.githubusercontent.com/hashicorp/vault-secrets-operator/main/config/crd/bases/secret.hashicorp.com_vaultdynamicsecrets.yaml # 其他CRD(如VaultAuth、VaultConnection等)根据实际需求部署,参考官方文档
2. 部署Operator
通过容器镜像部署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: "https://vault.example.com:8200" # 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
3. 创建同步CRD示例
以同步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="https://vault.example.com:8200" \ # 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服务地址(如https://vault:8200) | 无(必填) |
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 登录认证访问私有仓库
无需登录使用专属域名
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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务