hashicorp/postgres-nomad-demonomad-vault-integration 镜像专为 Nomad 与 Vault 的集成场景设计,提供开箱即用的工具链和配置模板,帮助用户在 Nomad 集群中安全集成 Vault 密钥管理系统。其核心用途是简化 Nomad 任务对 Vault 中敏感信息(如密钥、证书、凭证)的访问流程,实现敏感数据的动态获取、自动轮换和安全分发,保障 Nomad 集群中服务的配置安全性。
secret/);通过 Docker Hub 拉取最新版本镜像:
bashdocker pull hashicorp/nomad-vault-integration:latest
以下示例通过 docker run 启动容器,模拟 Nomad 任务通过镜像访问 Vault 并获取密钥:
bashdocker run -d \ --name nomad-vault-demo \ -e VAULT_ADDR="[***]" \ # Vault 服务器地址 -e VAULT_TOKEN="s.token.example123" \ # Vault 访问令牌(需具备对应策略权限) -e NOMAD_JOB_NAME="web-service" \ # 关联的 Nomad 任务名称(用于动态生成密钥路径) -e SECRET_PATH="secret/nomad/web" \ # Vault 中存储密钥的路径 --network nomad-vault-net \ # 确保与 Nomad、Vault 网络连通 hashicorp/nomad-vault-integration:latest
容器启动后,会自动通过 Vault Agent 从 secret/nomad/web 路径拉取密钥,并将其注入到 /vault/secrets 目录下的文件中,供 Nomad 任务读取。
通过 docker-compose.yml 编排 Nomad、Vault 和集成镜像,模拟完整集成环境:
yamlversion: '3.8' services: vault: image: hashicorp/vault:1.15.0 container_name: vault-server ports: - "8200:8200" environment: - VAULT_DEV_ROOT_TOKEN_ID=s.token.devroot # 开发模式根令牌(生产环境禁用) cap_add: - IPC_LOCK # 启用内存锁定,防止密钥泄露到磁盘 command: server -dev # 开发模式(生产环境需配置持久化存储和 TLS) nomad: image: hashicorp/nomad:1.6.0 container_name: nomad-server ports: - "4646:4646" # HTTP API 端口 command: agent -dev -bind 0.0.0.0 # 开发模式(单节点,生产环境需配置集群) nomad-vault-integration: image: hashicorp/nomad-vault-integration:latest container_name: nomad-vault-demo depends_on: - vault - nomad environment: - VAULT_ADDR="[***]" - VAULT_TOKEN="s.token.devroot" # 使用 Vault 开发模式根令牌 - NOMAD_JOB_NAME="demo-job" - SECRET_PATH="secret/nomad/demo" network_mode: "service:nomad" # 共享 Nomad 容器网络命名空间
启动服务:
bashdocker-compose up -d
| 环境变量名 | 作用描述 | 是否必填 | 示例值 |
|---|---|---|---|
VAULT_ADDR | Vault 服务器地址(含协议和端口) | 是 | [***] |
VAULT_TOKEN | Vault 访问令牌(需具备 SECRET_PATH 路径的读取权限) | 是 | s.token.xxxxxx |
NOMAD_JOB_NAME | 关联的 Nomad 任务名称(用于日志和密钥路径标识) | 否 | web-service |
SECRET_PATH | Vault 中存储目标密钥的路径(如 secret/app/db) | 是 | secret/nomad/prod/db |
VAULT_SKIP_VERIFY | 是否跳过 Vault TLS 证书验证(开发环境用) | 否 | true(默认 false) |
AGENT_LOG_LEVEL | Vault Agent 日志级别(debug/info/warn/error) | 否 | info(默认 info) |
VAULT_TOKEN 对应的 Vault 策略允许读取 SECRET_PATH 路径,策略示例:
hclpath "secret/nomad/prod/*" { capabilities = ["read"] }
VAULT_ADDR 可访问。VAULT_SKIP_VERIFY,配置有效的 TLS 证书;VAULT_TOKEN,优先使用 Vault AppRole 或 Nomad 服务账户动态获取令牌;VAULT_TOKEN 和 Vault 中的密钥,降低泄露风险。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务