feat: 重构基础设施配置与安全凭证管理
Some checks failed
Infrastructure CI/CD / Validate Infrastructure (push) Failing after 9s
Infrastructure CI/CD / Plan Infrastructure (push) Has been skipped
Infrastructure CI/CD / Apply Infrastructure (push) Has been skipped
Simple Test / test (push) Successful in 1s

- 新增多个云服务商配置文件(OCI、阿里云)
- 重构Vault、Consul、Nomad等服务的部署配置
- 新增备份与恢复完美状态的脚本
- 更新安全凭证管理文档
- 优化Traefik动态配置
- 删除过时的脚本和配置文件

重构后的配置支持多区域部署,优化了服务发现和负载均衡机制,并完善了安全凭证的备份与恢复流程。
This commit is contained in:
2025-10-13 03:08:22 +00:00
parent 41bff0cd02
commit 4381428b5d
48 changed files with 3628 additions and 498 deletions

View File

@@ -0,0 +1,91 @@
# Security 目录说明
## 目录结构
```
security/
├── secrets/ # 敏感配置文件
│ ├── vault-unseal-keys.txt # Vault解封密钥
│ ├── vault-root-token.txt # Vault根令牌
│ ├── vault-cluster-info.txt # Vault集群信息
│ └── *.hcl # 其他配置文件
├── scripts/ # 批量部署脚本
├── templates/ # 配置模板
└── README.md # 本文件
```
## Vault密钥管理
### 密钥文件说明
- `vault-unseal-keys.txt`: 包含5个Vault解封密钥需要至少3个才能解封Vault
- `vault-root-token.txt`: Vault根令牌拥有完全管理权限
- `vault-cluster-info.txt`: Vault集群的基本信息和配置
### 使用Vault密钥
```bash
# 解封Vault需要3个密钥
vault operator unseal -address=http://warden.tailnet-68f9.ts.net:8200 <key1>
vault operator unseal -address=http://warden.tailnet-68f9.ts.net:8200 <key2>
vault operator unseal -address=http://warden.tailnet-68f9.ts.net:8200 <key3>
# 使用根令牌认证
export VAULT_TOKEN=hvs.TftK5zfANuPWOc7EQEvjipCE
vault auth -address=http://warden.tailnet-68f9.ts.net:8200
```
### 安全注意事项
1. **密钥保护**: 所有Vault密钥文件权限设置为600仅所有者可读写
2. **备份策略**: 定期备份密钥文件到安全位置
3. **访问控制**: 限制对security目录的访问权限
4. **版本控制**: 不要将密钥文件提交到Git仓库
## 使用说明
### 1. 配置文件管理
- 将需要上传的敏感配置文件放在 `secrets/` 目录下
- 文件名格式:`{节点名}-{配置类型}.{扩展名}`
- 例如:`ch4-nomad.hcl``ash3c-consul.json`
### 2. 批量部署脚本
使用 `scripts/deploy-security-configs.sh` 脚本批量部署:
```bash
# 部署所有配置
./scripts/deploy-security-configs.sh
# 部署特定节点
./scripts/deploy-security-configs.sh ch4
# 部署特定类型
./scripts/deploy-security-configs.sh all nomad
```
### 3. 配置模板
- `templates/` 目录存放配置模板
- 支持变量替换
- 使用 Jinja2 语法
## 安全注意事项
1. **本地备份**:所有配置文件在上传前都会在本地保存备份
2. **权限控制**确保配置文件权限正确600 或 644
3. **敏感信息**:不要在配置文件中硬编码密码或密钥
4. **版本控制**:使用 Git 跟踪配置变更,但排除密钥文件
## 部署流程
1. 将配置文件放入 `secrets/` 目录
2. 检查配置文件格式和内容
3. 运行批量部署脚本
4. 验证部署结果
5. 清理临时文件
## 故障恢复
如果部署失败:
1. 检查 `logs/` 目录下的错误日志
2. 使用备份文件恢复
3. 重新运行部署脚本
## 联系方式
如有问题,请联系系统管理员。

View File

@@ -0,0 +1 @@
CF Token: 0aPWoLaQ59l0nyL1jIVzZaEx2e41Gjgcfhn3ztJr

View File

@@ -0,0 +1,69 @@
# Grafana API 凭证备忘录
## 基本信息
- **Grafana URL**: http://influxdb.tailnet-68f9.ts.net:3000
- **用户名**: admin
- **密码**: admin123
- **认证方式**: Basic Auth
## API 使用示例
### 1. 使用 API Token (推荐)
```bash
# 创建 Dashboard
curl -X POST "http://influxdb.tailnet-68f9.ts.net:3000/api/dashboards/db" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer glsa_Lu2RW7yPMmCtYrvbZLNJyOI3yE1LOH5S_629de57b" \
-d @dashboard.json
# 获取组织信息
curl -X GET "http://influxdb.tailnet-68f9.ts.net:3000/api/org" \
-H "Authorization: Bearer glsa_Lu2RW7yPMmCtYrvbZLNJyOI3yE1LOH5S_629de57b"
```
### 2. 使用 Basic Auth (备用)
```bash
# 创建 Dashboard
curl -X POST "http://influxdb.tailnet-68f9.ts.net:3000/api/dashboards/db" \
-H "Content-Type: application/json" \
-u "admin:admin" \
-d @dashboard.json
# 获取组织信息
curl -X GET "http://influxdb.tailnet-68f9.ts.net:3000/api/org" \
-u "admin:admin"
```
### 3. 健康检查 (无需认证)
```bash
curl -X GET "http://influxdb.tailnet-68f9.ts.net:3000/api/health"
```
## 已创建的 Dashboard
### Loki 热点图 Demo
- **Dashboard ID**: 18
- **UID**: 5e81473e-f8e0-4f1e-a0c6-bbcc5c4b87f0
- **URL**: http://influxdb.tailnet-68f9.ts.net:3000/d/5e81473e-f8e0-4f1e-a0c6-bbcc5c4b87f0/loki-e697a5-e5bf97-e783ad-e782b9-e59bbe-demo
- **功能**: 4个热点图面板类似GitHub贡献图效果
## API Token (推荐使用)
- **Service Account ID**: 2
- **Service Account UID**: df0t9r2rzqygwf
- **Token Name**: mgmt-api-token
- **API Token**: `glsa_Lu2RW7yPMmCtYrvbZLNJyOI3yE1LOH5S_629de57b`
- **权限**: Admin
## API Keys 状态
- **当前状态**: 传统API keys功能不可用 (返回404 Not Found)
- **原因**: Grafana 12.2.0使用Service Accounts替代传统API keys
- **解决方案**: 使用Service Account Token (推荐)
## 注意事项
- 此版本Grafana (12.2.0) 理论上支持API keys但当前实例不可用
- 密码已从默认admin改为admin123
- 所有API调用都需要Basic Auth认证
- 建议后续检查Grafana配置启用API keys功能
## 创建时间
2025-10-12 08:56 UTC

View File

@@ -0,0 +1,89 @@
# Oracle Cloud Configuration
## 🔑 配置信息
### 存储在Consul KV中
```bash
# 查看所有Oracle Cloud配置
consul kv get -recurse config/oracle-cloud/
consul kv get -recurse config/oracle-cloud-kr-chuncheon/
# 获取美国节点配置
consul kv get config/oracle-cloud/user
consul kv get config/oracle-cloud/fingerprint
consul kv get config/oracle-cloud/tenancy
consul kv get config/oracle-cloud/region
consul kv get config/oracle-cloud/key_file
# 获取韩国节点配置
consul kv get config/oracle-cloud-kr-chuncheon/user
consul kv get config/oracle-cloud-kr-chuncheon/fingerprint
consul kv get config/oracle-cloud-kr-chuncheon/tenancy
consul kv get config/oracle-cloud-kr-chuncheon/region
consul kv get config/oracle-cloud-kr-chuncheon/key_file
```
### 存储在Vault中 (更安全)
```bash
# 查看美国节点配置
vault kv get secret/oracle-cloud
vault kv get secret/oracle-cloud/private-key
# 查看韩国节点配置
vault kv get secret/oracle-cloud-kr-chuncheon
vault kv get secret/oracle-cloud-kr-chuncheon/private-key
```
## 📝 配置内容
### 美国节点 (us-ashburn-1)
- **User OCID**: `ocid1.user.oc1..aaaaaaaappc7zxue4dlrsjljg4fwl6wcc5smetreuvpqn72heiyvjeeqanqq`
- **Fingerprint**: `73:80:50:35:b6:1d:e3:fc:68:f8:e3:e8:0b:df:79:e3`
- **Tenancy OCID**: `ocid1.tenancy.oc1..aaaaaaaayyhuf6swf2ho4s5acdpee6zssst6j7nkiri4kyfdusxzn3e7p32q`
- **Region**: `us-ashburn-1`
### 韩国节点 (ap-chuncheon-1)
- **User OCID**: `ocid1.user.oc1..aaaaaaaaqoa2my3fwh3jbayachyylqyneiveydrjliu2qz65ijlc57ehplha`
- **Fingerprint**: `b1:6e:4e:5a:b6:1c:34:bf:b1:73:76:f6:9f:27:6d:99`
- **Tenancy OCID**: `ocid1.tenancy.oc1..aaaaaaaawfv2wd54ly75ppfjgdgap7rtd3vhtziz25dwx23xo4rbkxnxlapq`
- **Region**: `ap-chuncheon-1`
### 私钥
- **美国节点**: Vault `secret/oracle-cloud/private-key`
- **韩国节点**: Vault `secret/oracle-cloud-kr-chuncheon/private-key`
- **格式**: PEM格式私钥
- **用途**: Oracle Cloud API认证
## 🚀 使用方式
### 从Consul读取配置
```bash
# 在Nomad job中使用模板
template {
data = <<EOF
[DEFAULT]
user={{ key "config/oracle-cloud/user" }}
fingerprint={{ key "config/oracle-cloud/fingerprint" }}
tenancy={{ key "config/oracle-cloud/tenancy" }}
region={{ key "config/oracle-cloud/region" }}
key_file=/local/oci_api_key.pem
EOF
destination = "local/oci_config"
}
```
### 从Vault读取配置
```bash
# 在应用中使用Vault API
curl -H "X-Vault-Token: $VAULT_TOKEN" \
https://vault.git-4ta.live/v1/secret/data/oracle-cloud
```
## 📅 创建时间
2025-10-12 09:25 UTC
## 🏷️ 标签
- 云提供商: Oracle Cloud Infrastructure
- 区域: us-ashburn-1, ap-chuncheon-1
- 存储方式: Consul KV + Vault
- 节点数量: 2个区域

View File

@@ -0,0 +1,56 @@
# Vault Configuration
## 🌐 访问信息
### Vault地址
- **Web UI**: https://vault.git-4ta.live/ui/
- **API**: https://vault.git-4ta.live/v1/
- **CLI**: `export VAULT_ADDR="https://vault.git-4ta.live"`
### 集群信息
- **集群名称**: vault-cluster
- **存储后端**: Consul
- **HA模式**: 启用
- **版本**: 1.20.4
## 🔧 已配置的存储
### KV存储引擎
- **路径**: `secret/`
- **类型**: kv-v2
- **状态**: 已启用
### 已存储的配置
- **Grafana API Token**: `secret/grafana`
- **Cloudflare Tokens**: `secret/cloudflare`
## 📋 常用命令
### 查看存储的配置
```bash
vault kv get secret/grafana
vault kv get secret/cloudflare
```
### 列出所有存储
```bash
vault kv list secret/
```
### 添加新配置
```bash
vault kv put secret/new-config key="value"
```
## 🚀 部署信息
### Nomad Job
- **Job名称**: vault-single-nomad
- **部署节点**: warden, ch4, ash3c
- **端口**: 8200
- **自动解封**: 已配置
### 健康检查
```bash
curl -k -s https://vault.git-4ta.live/v1/sys/health | jq
```