SamGwala/SkyGuard
GitHub: SamGwala/SkyGuard
SkyGuard 是一个 AWS 云原生基础设施韧性平台,通过检测、分类和自动化多层恢复策略实现基于决策的事件响应。
Stars: 0 | Forks: 0
# SkyGuard
## 云原生基础设施韧性与事件响应平台
SkyGuard 是一个基于 AWS 的基础设施韧性项目,旨在超越简单的故障检测。
该项目的目标是构建一个平台,最终能够检测故障、对事件进行分类、决定正确的恢复操作、在自动化能力不足时进行升级,并使用 AWS 服务支持基础设施恢复。
SkyGuard 使用 Terraform 和 AWS 作为实际的云工程项目进行构建。
## 项目存在的原因
我之前的项目专注于一个问题:
**基础设施能否检测到故障并自动恢复?**
SkyGuard 探索了下一个问题:
**基础设施能否根据故障类型及其历史记录做出更好的恢复决策?**
SkyGuard 不再以相同的方式处理每个事件,而是被设计成一个基于决策的事件响应平台。
## 当前进度
### 已完成
* 项目仓库结构
* Terraform 环境结构
* VPC 模块
* 公有子网
* Internet Gateway
* 路由表
* 路由表关联
* Terraform 变量和输出
### 当前阶段
网络基础。
SkyGuard 的第一个版本目前预置了未来计算、监控和事件响应组件所需的基础网络层。
## 目前的架构
```
VPC
│
├── Public Subnet
│
├── Internet Gateway
│
├── Route Table
│
└── Route Table Association
```
网络层被编写为可重用的 Terraform 模块。
## Terraform 结构
```
terraform/
│
├── environments/
│ └── dev/
│ ├── main.tf
│ ├── providers.tf
│ ├── variables.tf
│ └── outputs.tf
│
└── modules/
├── vpc/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
│
├── iam/
└── ec2/
```
## Terraform 设计经验
该项目遵循以下模式:
```
modules = HOW
environments = WHAT
```
VPC 模块定义了如何构建网络。
dev 环境定义了要使用的具体值,例如:
* VPC CIDR block
* 公有子网 CIDR block
* 环境名称
* 项目名称
* 所有者
这使得该模块可以在未来的 dev、test 和 production 等环境中重复使用。
## 计划的 AWS 技术栈
* Terraform
* AWS VPC
* EC2
* IAM
* Systems Manager
* CloudWatch
* EventBridge
* Lambda
* DynamoDB
* SNS
* Grafana
## 计划的恢复策略
SkyGuard 最终将支持三个恢复层:
### 第 1 层:SSM Runbooks
用于轻量级恢复,例如重启服务或清除临时问题。
### 第 2 层:基础设施替换
当实例变得不正常且需要被替换时使用。
### 第 3 层:环境重建
当恢复已经不够且需要根据代码重建基础设施时使用。
## 接下来的工作
后续步骤:
* 构建 IAM 模块
* 创建 EC2 实例模块
* 附加 IAM 实例配置文件
* 部署 SkyGuard-Node-01
* 安装和配置 CloudWatch Agent
* 创建监控告警
* 添加基于 EventBridge 和 Lambda 的事件处理
## 状态
项目状态:积极开发中
当前里程碑:网络基础完成
标签:AWS, DPI, ECS, Terraform, 故障恢复, 自动化运维, 运维