3.3 KiB
3.3 KiB
Consul KV 命名规范
本文档描述了在Consul KV中存储配置信息的统一命名规范,以确保所有配置管理的一致性和可维护性。
命名规范
基本格式
config/{environment}/{provider}/{region_or_service}/{key}
各部分说明
- config: 固定前缀,表示这是一个配置项
- environment: 环境名称,如
dev、staging、prod等 - provider: 云服务提供商,如
oracle、digitalocean、aws、gcp等 - region_or_service: 区域或服务名称,如
kr、us、sgp等 - key: 具体的配置键名,如
token、tenancy_ocid、user_ocid等
示例
Oracle Cloud 配置
config/dev/oracle/kr/tenancy_ocid
config/dev/oracle/kr/user_ocid
config/dev/oracle/kr/fingerprint
config/dev/oracle/kr/private_key
config/dev/oracle/kr/region
config/dev/oracle/us/tenancy_ocid
config/dev/oracle/us/user_ocid
config/dev/oracle/us/fingerprint
config/dev/oracle/us/private_key
config/dev/oracle/us/region
DigitalOcean 配置
config/dev/digitalocean/token
其他云服务商配置(示例)
config/dev/aws/access_key
config/dev/aws/secret_key
config/dev/aws/region
config/dev/gcp/project_id
config/dev/gcp/credentials_file
config/dev/gcp/region
使用说明
添加新配置
当需要为新的云服务商或环境添加配置时,请遵循上述命名规范:
- 确定环境名称(如
dev) - 确定云服务提供商(如
aws) - 确定区域或服务(如
ap-northeast-2) - 确定具体的配置键名(如
access_key)
例如:
consul kv put config/dev/aws/ap-northeast-2/access_key your_access_key
在Terraform中使用
在Terraform配置中,使用 consul_keys 数据源获取配置:
data "consul_keys" "aws_config" {
key {
name = "access_key"
path = "config/dev/aws/ap-northeast-2/access_key"
}
key {
name = "secret_key"
path = "config/dev/aws/ap-northeast-2/secret_key"
}
}
provider "aws" {
access_key = data.consul_keys.aws_config.var.access_key
secret_key = data.consul_keys.aws_config.var.secret_key
region = "ap-northeast-2"
}
与Vault集成
当需要与Vault集成时,可以使用相同的命名规范,确保Consul和Vault中的配置路径保持一致。
维护说明
- 所有Agent在添加新的Consul KV键时,必须遵循此命名规范
- 定期检查Consul KV中的键,确保符合规范
- 如需修改命名规范,请更新此文档并通知所有相关Agent
常见问题
Q: 为什么不使用服务名称作为前缀(如 oracle/config/dev/...)?
A: 使用 config 作为统一前缀可以更容易地区分配置项和其他类型的键值对,便于管理和筛选。
Q: 如何处理敏感信息?
A: 敏感信息(如API密钥、私钥等)应存储在Vault中,Consul主要用于非敏感配置。如果必须在Consul中存储敏感信息,请确保Consul集群的安全性。
Q: 如何处理多环境配置?
A: 通过修改 environment 部分来区分不同环境,如 config/dev/...、config/staging/...、config/prod/...。
更新历史
- 2024-01-01: 初始版本,定义了基本的命名规范
- 2024-01-02: 统一DigitalOcean配置路径,从
consul/digitalocean/token改为config/dev/digitalocean/token