1 feat: 重构基础设施架构并完善Consul集群配置

2
     3	主要变更:
     4	- 重构Terraform/OpenTofu目录结构,统一迁移至infrastructure/opentofu
     5	- 添加"7天创造世界"文档,记录基础设施建设演进逻辑
     6	- 更新Consul集群配置管理经验,添加实际案例和解决方案
     7	- 修正README中的Sticky Note,反映Consul集群健康状态
     8	- 添加Ansible部署配置和inventory文件
     9	- 完善项目文档结构,添加各组件配置指南
    10
    11	技术架构演进:
    12	- 第1天: Tailscale网络连接基础 
    13	- 第2天: Ansible分布式控制 
    14	- 第3天: Nomad服务感知与任务调度 
    15	- 第4天: Consul配置集中管理 
    16	- 第5天: OpenTofu状态一致性 
    17	- 第6天: Vault密钥管理 
    18	- 第7天: Waypoint应用部署 
This commit is contained in:
2025-09-30 03:46:33 +00:00
parent c0064b2cad
commit e8bfc76038
119 changed files with 1772 additions and 631 deletions

View File

@@ -0,0 +1,121 @@
# CSOL 基础设施建设 - 7天创造世界
## 概述
本文档描述了CSOL基础设施建设的完整流程采用"7天创造世界"的比喻,系统地阐述了从网络连接到应用部署的完整建设过程。
## 第1天Tailscale - 网络连接基础
**目标**:打通所有分布式地点的网络连接
**核心任务**
- 在所有节点部署Tailscale建立安全的网络连接
- 确保所有节点可以通过Tailscale网络相互访问
- 为后续的分布式管理奠定网络基础
**关键成果**
- 所有节点加入Tailscale网络
- 节点间可以通过Tailscale IP直接通信
- 为后续的Ansible、Nomad等工具提供网络基础
## 第2天Ansible - 分布式控制
**目标**:实现灵活的分布式节点控制
**核心任务**
- 部署Ansible作为配置管理工具
- 建立inventory文件管理所有节点信息
- 编写playbook实现"八爪鱼式"的远程控制能力
**关键成果**
- 可以通过Ansible批量管理所有节点
- 标准化的配置管理流程
- 自动化的软件部署和配置更新
## 第3天Nomad - 服务感知与任务调度
**目标**:建立服务感知能力和任务调度系统,提供容错性
**核心任务**
- 部署Nomad集群实现资源调度
- 配置服务器节点和客户端节点
- 建立服务发现和健康检查机制
**关键成果**
- 集群具备任务调度能力
- 服务自动发现和故障转移
- 资源的高效利用和负载均衡
## 第4天Consul - 配置集中管理
**目标**:解决容器技术配置的集中管理问题
**核心任务**
- 部署Consul集群提供配置管理和服务发现
- 通过Nomad拉起Consul服务
- 建立键值存储,用于动态配置管理
**关键成果**
- 配置的集中管理和动态更新
- 服务注册与发现
- 为后续的Vault集成提供基础
## 第5天Terraform - 状态一致性
**目标**:解决基础设施状态一致性问题
**核心任务**
- 使用Terraform管理基础设施资源
- 建立基础设施即代码(IaC)的实践
- 确保环境状态的一致性和可重复性
**关键成果**
- 基础设施的声明式管理
- 状态的一致性和可预测性
- 环境的快速复制和重建能力
## 第6天Vault - 安全密钥管理
**目标**:解决大规模自动化编程中的环境变量和敏感信息管理
**核心任务**
- 部署Vault集群提供密钥管理服务
- 集成Vault与Nomad、Consul
- 建立动态密钥管理机制
**关键成果**
- 敏感信息的集中安全管理
- 动态密钥生成和轮换
- 为自动化流程提供安全的配置获取方式
## 第7天Waypoint - 应用部署现代化
**目标**:实现应用部署的现代化管理
**核心任务**
- 部署Waypoint提供应用生命周期管理
- 建立标准化的应用部署流程
- 集成CI/CD流程
**关键成果**
- 应用部署的标准化和自动化
- 开发体验的提升
- 完整的应用生命周期管理
## 建设原则
1. **循序渐进**严格按照7天的顺序进行建设每个阶段的基础是前一个阶段的完成
2. **依赖明确**:每个工具都有明确的依赖关系,确保架构的合理性
3. **功能互补**:每个工具解决特定问题,形成完整的基础设施解决方案
4. **可扩展性**:整个架构设计考虑未来的扩展需求
## 重要提醒
**当前问题**本地节点不接受任务导致无法部署Consul造成配置混乱
**解决方案**
1. 将本地节点也设置为Consul的管理节点
2. 确保本地节点能够接受和执行任务
3. 建立sticky note机制不断提醒自己配置状态和依赖关系
**核心逻辑**只有解决了本地节点的任务接受问题才能正确部署Consul进而保证整个基础设施建设的顺利进行。

View File

@@ -66,16 +66,6 @@ data "consul_keys" "oracle_config" {
}
```
#### 私钥文件创建
```hcl
# 将从Consul获取的私钥保存到临时文件
resource "local_file" "oci_kr_private_key" {
content = data.consul_keys.oracle_config.var.private_key
filename = "/tmp/oci_kr_private_key.pem"
}
```
#### OCI Provider配置
```hcl
@@ -84,7 +74,7 @@ provider "oci" {
tenancy_ocid = data.consul_keys.oracle_config.var.tenancy_ocid
user_ocid = data.consul_keys.oracle_config.var.user_ocid
fingerprint = data.consul_keys.oracle_config.var.fingerprint
private_key_path = local_file.oci_kr_private_key.filename
private_key = file(var.oci_config.private_key_path)
region = "ap-chuncheon-1"
}
```
@@ -140,8 +130,8 @@ terraform apply -var-file=consul.tfvars
使用Consul Provider直接从Consul获取配置有以下优势
1. **更高的安全性**:私钥不再需要存储在磁盘上的配置文件中而是直接从Consul获取
2. **更简洁的配置**无需手动创建临时文件Terraform自动处理
1. **更高的安全性**:私钥不再需要存储在磁盘上的临时文件中而是直接从Consul获取并在内存中使用
2. **更简洁的配置**无需手动创建临时文件Terraform直接处理私钥内容
3. **声明式风格**完全符合Terraform的声明式配置风格
4. **更好的维护性**配置集中存储在Consul中便于管理和更新
5. **多环境支持**可以轻松支持多个环境dev、staging、production的配置