# 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 ``` ## 使用说明 ### 添加新配置 当需要为新的云服务商或环境添加配置时,请遵循上述命名规范: 1. 确定环境名称(如 `dev`) 2. 确定云服务提供商(如 `aws`) 3. 确定区域或服务(如 `ap-northeast-2`) 4. 确定具体的配置键名(如 `access_key`) 例如: ``` consul kv put config/dev/aws/ap-northeast-2/access_key your_access_key ``` ### 在Terraform中使用 在Terraform配置中,使用 `consul_keys` 数据源获取配置: ```hcl 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`