Holuphilix/Production-Devsecops-Platform
GitHub: Holuphilix/Production-Devsecops-Platform
这是一个生产级云原生DevSecOps平台,通过集成CI/CD自动化、安全扫描、Kubernetes编排和可观测性,实现了安全软件交付流程的标准化与自动化。
Stars: 0 | Forks: 0
# 🚀 生产级 DevSecOps CI/CD 平台
一个生产级云原生平台工程项目,旨在通过自动化 CI/CD 编排、Kubernetes 工作负载管理、基础设施即代码自动化、集成的 DevSecOps 安全执行以及平台可观测性,来标准化安全的软件交付流程。
该平台演示了现代工程团队如何将安全性、自动化、运维监控和 Kubernetes 编排集成到统一的软件交付工作流中,同时保持部署的一致性、基础设施的可靠性和运维的可见性。
该实现侧重于平台工程原则,包括安全部署标准化、基础设施自动化、运维可观测性、开发者工作流赋能以及云原生工作负载编排。








# 📚 目录
- [📖 执行摘要](#-executive-summary)
- [⚠️ 业务问题](#️-business-problem)
- [🎯 平台工程目标](#-platform-engineering-objectives)
- [🛠️ 解决方案概述](#️-solution-overview)
- [✨ 核心平台能力](#-core-platform-capabilities)
- [💻 技术栈](#-technology-stack)
- [🏗️ 平台架构](#️-platform-architecture)
- [📂 仓库结构](#-repository-structure)
# 📖 执行摘要
现代云原生环境需要安全、可扩展且可观测的软件交付工作流,能够在支持快速部署周期的同时,不损害基础设施安全、运维可见性或部署一致性。
本项目实现了一个生产级的 DevSecOps CI/CD 平台,该平台将 Kubernetes 编排、基础设施即代码自动化、自动化安全验证、可观测性工具和运维告警集成到一个统一的云原生交付平台中。
该平台利用 GitHub Actions 进行 CI/CD 自动化,Docker 进行容器化,Kubernetes 进行工作负载编排,Terraform 进行基础设施配置,SonarQube 进行静态应用安全测试 (SAST),Gitleaks 进行密钥检测,Checkov 进行基础设施安全验证,Trivy 进行容器漏洞管理,Prometheus 进行指标收集,Grafana 进行运维可观测性,以及 Slack 进行实时平台通知。
该项目强调专注于部署标准化、运维一致性、安全自动化、基础设施可靠性和云原生平台操作的平台工程原则。
# ⚠️ 业务问题
现代软件交付管道在云原生基础设施环境中面临着日益增加的运维和安全挑战。
工程团队通常会遇到以下问题:
- 源代码仓库中暴露的密钥和泄露的凭证
- 部署到生产环境中的存在漏洞的容器镜像
- 由不安全的基础设施即代码 部署导致的基础设施配置错误
- 跨 Kubernetes 工作负载缺乏部署标准化
- 对平台健康和运维指标的可观测性有限
- 基础设施安全违规检测延迟
- 跨工程环境的 CI/CD 工作流不一致
- 运维告警和监控可见性不足
如果没有自动化的安全执行、基础设施验证、可观测性工具和标准化的部署工作流,组织将增加运维风险、部署不一致性和云原生安全风险。
本项目通过集成的 DevSecOps 平台架构解决这些挑战,该架构专注于安全交付自动化、Kubernetes 编排、基础设施标准化、运维监控和持续安全验证。
# 🎯 平台工程目标
本项目的主要目标是设计一个云原生内部交付平台,能够支持安全、可观测和标准化的软件交付工作流。
该平台围绕以下工程目标进行设计:
- 标准化安全的 Kubernetes 应用程序部署
- 自动化 CI/CD 交付工作流
- 通过策略扫描强制执行基础设施安全验证
- 集成自动化密钥检测和漏洞管理
- 提供集中式可观测性和运维监控
- 提高跨环境的部署一致性
- 通过基础设施即代码实现可扩展的平台运营
- 建立对平台健康状态的持续运维可见性
- 集成实时运维和安全通知
- 演示面向生产的平台工程工作流
# 🛠️ 解决方案概述
该平台将 CI/CD 自动化、容器编排、基础设施自动化、安全验证、监控系统和运维告警集成到一个统一的云原生工程工作流中。
该实现遵循安全的交付生命周期,其中源代码提交通过 GitHub Actions 自动触发 CI/CD 管道执行。管道在允许将工作负载部署到 Kubernetes 之前,执行多个自动化安全执行阶段,包括密钥检测、静态应用安全测试 (SAST)、基础设施安全验证和容器漏洞扫描。
基础设施资源和 Kubernetes 对象通过 Terraform 进行配置,以确保跨环境的部署一致性和基础设施可重现性。
部署的平台集成了 Prometheus 用于指标收集,Grafana 用于运维可观测性,从而实现对 Kubernetes 工作负载、容器运行时指标、基础设施健康和平台运维状态的实时可见性。
Slack 集成提供自动化的运维通知和安全告警,提高了整个平台环境的事件可见性和运维响应能力。
# ✨ 核心平台能力
- 自动化 CI/CD 管道编排
- Kubernetes 工作负载部署自动化
- 基础设施即代码配置和标准化
- 静态应用安全测试 (SAST)
- 自动化密钥检测和凭证保护
- 基础设施安全验证和策略执行
- 容器漏洞扫描和修复可见性
- 平台可观测性和指标收集
- 实时运维告警和通知
- 云原生工作负载编排
- 安全软件交付自动化
- 基础设施一致性和部署可重现性
# 💻 技术栈
| 类别 | 技术 |
|---|---|
| ⚙️ CI/CD 自动化 | GitHub Actions |
| 📦 容器化 | Docker |
| ☸️ 容器编排 | Kubernetes (Kind) |
| 🏗️ 基础设施即代码 | Terraform |
| 🔍 静态代码分析 | SonarQube |
| 🔐 密钥检测 | Gitleaks |
| 🛡️ 基础设施安全 | Checkov |
| 🚨 容器安全 | Trivy |
| 📊 指标收集 | Prometheus |
| 📈 可观测性仪表盘 | Grafana |
| 🔔 通知系统 | Slack |
| 🐧 平台运行环境 | Ubuntu Linux |
# 🏗️ 平台架构
平台架构遵循安全的云原生交付工作流,将 CI/CD 自动化、Kubernetes 编排、基础设施安全执行、可观测性工具和运维告警集成到一个统一的平台工程生态系统中。
当源代码更改被推送到 GitHub 仓库时,工作流开始。GitHub Actions 自动触发 CI/CD 工作流,该工作流负责验证应用程序完整性、执行安全策略、构建容器镜像以及编排工作负载部署到 Kubernetes 平台环境中。
安全执行层集成了多个自动化验证阶段,包括:
- 🔐 用于凭证和密钥检测的 Gitleaks
- 🔍 用于静态应用安全测试 (SAST) 的 SonarQube
- 🛡️ 用于基础设施即代码安全验证的 Checkov
- 🚨 用于容器漏洞扫描的 Trivy
在成功进行安全验证之后,平台将工作负载部署到使用 Kind 在本地配置的 Kubernetes 集群中。
可观测性层集成了 Prometheus 和 Grafana,以提供集中式指标收集、Kubernetes 工作负载监控、基础设施可见性和运维仪表盘,从而支持云原生平台运维。
Slack 集成提供运维通知和安全告警,以提高整个平台环境的事件感知能力和部署可见性。
[专业平台架构图]
# 📂 仓库结构
```
production-devsecops-platform/
│
├── app/
│
├── kubernetes/
│
├── terraform/
│
├── monitoring/
│
├── security/
│
├── .github/
│ └── workflows/
│
├── images/
│
├── diagrams/
│
├── docs/
│
├── scripts/
│
├── logs/
│
├── tests/
│
└── README.md
```
# ⚙️ 实施任务
## 🖥️ 任务 1 — 本地平台环境配置
### 🎯 目标
本任务的目标是建立支持安全云原生软件交付工作流所需的基础本地平台工程环境。
此阶段侧重于:
- 将远程 GitHub 仓库克隆到 Ubuntu 本地环境中
- 标准化平台仓库结构
- 初始化本地开发工作区
- 安装和验证所需的平台工具
- 使用 Kind 配置本地 Kubernetes 运行环境
- 验证 Docker 和 Kubernetes 的运维准备情况
此基础设置确立了核心平台环境,该环境将在整个项目生命周期中支持后续的 DevSecOps 自动化、Kubernetes 编排、可观测性集成、基础设施即代码配置和安全交付工作流。
### 📥 克隆 GitHub 仓库
运行以下命令将 GitHub 仓库克隆到 Ubuntu 本地环境中。
```
git clone https://github.com/holuphilix/Production-Devsecops-Platform.git
```
### 📂 进入仓库目录
进入克隆的仓库目录。
```
cd production-devsecops-platform
```
### 🏗️ 创建平台仓库结构
运行以下命令以创建完整的基础平台工程仓库结构。
```
mkdir -p \
app \
kubernetes \
terraform \
monitoring \
security \
.github/workflows \
images \
diagrams \
docs \
scripts \
logs \
tests \
&& touch \
README.md \
terraform/main.tf \
terraform/variables.tf \
terraform/outputs.tf \
kubernetes/namespace.yaml \
kubernetes/deployment.yaml \
kubernetes/service.yaml \
monitoring/prometheus-values.yaml \
monitoring/grafana-values.yaml \
security/.gitkeep \
app/.gitkeep \
scripts/.gitkeep \
logs/.gitkeep \
tests/.gitkeep
```
### 🔍 验证仓库结构
运行以下命令以验证新创建的仓库结构。
```
tree
```
### 📸 仓库结构验证
以下输出验证了平台工程仓库结构的成功创建,包括 Kubernetes 清单、Terraform 配置文件、监控配置目录、安全资源、工作流目录、运维文件夹和镜像组织路径。

### 🚫 创建 .gitignore 文件
创建 `.gitignore` 文件,以防止不必要的系统文件、Terraform 状态文件、日志、缓存文件和本地环境产物被推送到 GitHub 仓库中。
运行以下命令以创建 `.gitignore` 文件。
```
touch .gitignore
```
### 📝 配置 .gitignore 文件
运行以下命令以打开 `.gitignore` 文件。
```
nano .gitignore
```
将以下配置添加到 `.gitignore` 文件中。
```
# =========================
# Terraform Files
# =========================
*.tfstate
*.tfstate.*
.terraform/
crash.log
override.tf
override.tf.json
*_override.tf
*_override.tf.json
.terraform.lock.hcl
# =========================
# Kubernetes Files
# =========================
kubeconfig.yaml
# =========================
# Docker Files
# =========================
*.tar
# =========================
# Logs
# =========================
logs/
*.log
# =========================
# Environment Files
# =========================
.env
.env.*
# =========================
# macOS Files
# =========================
.DS_Store
# =========================
# Linux Files
# =========================
*~
# =========================
# VSCode Files
# =========================
.vscode/
# =========================
# Node.js Files
# =========================
node_modules/
# =========================
# Python Files
# =========================
__pycache__/
*.pyc
# =========================
# Coverage Reports
# =========================
coverage/
# =========================
# Temporary Files
# =========================
tmp/
temp/
```
### ✅ 验证 .gitignore 文件
运行以下命令以验证 `.gitignore` 配置。
```
cat .gitignore
```
### 📸 .gitignore 配置验证
以下输出验证了平台工程仓库 `.gitignore` 文件的成功配置。

### 🔄 更新 Ubuntu 软件包仓库
在安装平台工具之前,更新 Ubuntu 软件包索引。
```
sudo apt update
```
### 🐳 安装 Docker Engine
在 Ubuntu 环境中安装 Docker Engine。
```
sudo apt install docker.io -y
```
### ▶️ 启动并启用 Docker
启动并启用 Docker 服务,以确保持久的运行时可用性。
```
sudo systemctl enable docker
sudo systemctl start docker
```
### ✅ 验证 Docker 安装
运行以下命令以验证 Docker 安装和运行时可用性。
```
docker --version
```
### 📸 Docker Engine 安装验证
以下输出确认 Docker Engine 已成功安装并在 Ubuntu 平台环境中正常运行。

### 👤 将当前用户添加到 Docker 组
运行以下命令以允许在不使用 sudo 权限的情况下执行 Docker。
```
sudo usermod -aG docker $USER
```
### 🔄 应用 Docker 组更改
运行以下命令以将 Docker 组更改应用到当前 shell 会话。
```
newgrp docker
```
### 🐳 验证 Docker 运行时访问
运行以下命令以验证非 root 用户的 Docker 访问权限。
```
docker ps
```
### 📸 Docker 运行时访问验证
以下输出验证了在没有提升 sudo 权限的情况下成功进行 Docker 运行时访问。

### ☸️ 安装 kubectl
安装 Kubernetes 工作负载管理和集群操作所需的 Kubernetes CLI 工具。
```
curl -LO "https://dl.k8s.io/release/$(curl -L -s \
https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
```
### ⚙️ 赋予 kubectl 可执行权限
```
chmod +x kubectl
```
### 📦 将 kubectl 移动到系统路径
```
sudo mv kubectl /usr/local/bin/
```
### ✅ 验证 kubectl 安装
运行以下命令以验证 kubectl 安装。
```
kubectl version --client
```
### 📸 kubectl 客户端验证
以下输出确认用于 Kubernetes 集群管理和工作负载编排的 Kubernetes 命令行客户端已成功安装。

### 🚀 安装 Kind Kubernetes 运行环境
下载用于配置本地 Kubernetes 平台集群的 Kind Kubernetes 运行环境。
```
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64
```
### ⚙️ 赋予 Kind 二进制文件可执行权限
```
chmod +x ./kind
```
### 📦 将 Kind 二进制文件移动到系统路径
```
sudo mv ./kind /usr/local/bin/kind
```
### ✅ 验证 Kind 安装
运行以下命令以验证 Kind 安装。
```
kind version
```
### 📸 Kind 运行环境验证
以下输出确认 Kind Kubernetes 运行环境已成功安装。

### ☸️ 配置本地 Kubernetes 集群
使用 Kind 创建本地 Kubernetes 集群。
### 🔍 验证 Kubernetes 集群可用性
运行以下命令以验证集群的可访问性和操作就绪情况。
```
kubectl cluster-info --context kind-devsecops-platform
```
### 📸 Kubernetes 集群配置验证
以下输出确认本地 Kubernetes 平台集群已成功配置和访问。

### 🖥️ 验证 Kubernetes 集群节点
运行以下命令以验证 Kubernetes 节点的可用性。
```
kubectl get nodes
```
### 📸 Kubernetes 集群节点验证
以下输出验证 Kubernetes 控制平面节点已在本地平台环境中成功配置并运行。

### 📦 验证正在运行的 Kubernetes 系统 Pod
运行以下命令以验证 Kubernetes 系统工作负载是否正在运行。
```
kubectl get pods -A
```
### 📸 Kubernetes 系统工作负载验证
以下输出确认 Kubernetes 系统组件已在 Kind 集群环境中成功运行。

### 📘 任务 1 总结
在本任务中,已在 Ubuntu 本地开发环境中成功配置了基础云原生平台工程环境。
已完成的设置包括:
- GitHub 仓库克隆
- 标准化仓库脚手架
- Docker Engine 安装和验证
- Kubernetes CLI 安装
- Kind Kubernetes 运行环境配置
- 本地 Kubernetes 集群部署
- Kubernetes 节点验证
- 平台运维就绪验证
此环境现在提供了在剩余的项目实施阶段中实现安全应用程序交付、Kubernetes 编排、DevSecOps 自动化、基础设施配置、可观测性集成和平台运营所需的基础设施。
## 🧩 任务 2 — 构建平台示例应用程序
### 🎯 目标
本任务的目标是构建基础示例应用程序,该应用程序将作为整个平台工程生命周期中的主要工作负载运行。
此应用程序将用作以下目的的核心工作负载:
- 容器化工作流
- Kubernetes 工作负载编排
- CI/CD 自动化
- DevSecOps 安全验证
- 基础设施部署测试
- 平台可观测性集成
- 运行时监控
- 运维验证
实现的重点是建立一个轻量级的 Node.js 应用程序,能够支持平台环境中安全的云原生部署工作流。
### 📂 进入应用程序目录
运行以下命令以进入应用程序目录。
```
cd app
```
### ⚙️ 初始化 Node.js 应用程序
运行以下命令以初始化 Node.js 应用程序。
```
npm init -y
```
### 📸 Node.js 应用程序初始化验证
以下输出确认 Node.js 应用程序包配置已成功初始化。

### 📦 安装 Express 框架
安装构建平台示例应用程序所需的 Express 框架。
```
npm install express
```
### 📸 Express 框架安装验证
以下输出确认 Express 框架依赖项已成功安装。

### 📝 创建应用程序入口文件
运行以下命令以创建主应用程序入口文件。
```
touch app.js
```
### 📝 打开应用程序文件
运行以下命令以打开应用程序文件。
```
nano app.js
```
将以下应用程序配置添加到 `app.js` 文件中。
```
const express = require('express');
const app = express();
const PORT = 3000;
app.get('/', (req, res) => {
res.send('Production-Grade DevSecOps CI/CD Platform');
});
app.get('/health', (req, res) => {
res.status(200).json({
status: 'healthy',
platform: 'Production-Grade DevSecOps CI/CD Platform',
environment: 'local'
});
});
app.listen(PORT, () => {
console.log(`Platform application running on port ${PORT}`);
});
```
### 📸 应用程序源代码验证
下图验证了 Node.js 平台应用程序源代码的成功创建。

### ⚙️ 更新 package.json 启动脚本
运行以下命令以打开 `package.json` 文件。
```
nano package.json
```
用以下配置替换现有的 scripts 部分。
```
{
"name": "production-devsecops-platform",
"version": "1.0.0",
"description": "Production Grade DevSecOps CI/CD Platform",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.19.2"
}
}
```
### 📸 package.json 配置验证
以下输出确认应用程序运行时脚本已成功配置。

### 🚀 启动平台应用程序
运行以下命令以启动 Node.js 平台应用程序。
```
npm start
```
### 📸 本地应用程序运行时验证
以下输出确认平台示例应用程序正在 Ubuntu 本地环境中成功运行。

### 🌐 验证浏览器可访问性
在浏览器中打开以下 URL。
```
http://localhost:3000
```
### 📸 浏览器应用程序可访问性验证
下图验证了平台示例应用程序的浏览器可访问性成功。

### ❤️ 验证健康检查端点
在浏览器中打开以下 URL。
```
http://localhost:3000/health
```
### 📸 健康检查端点验证
以下输出确认平台健康验证端点运行成功。

### 🧪 验证应用程序目录结构
运行以下命令以验证更新后的应用程序目录结构。
```
tree
```
### 📸 应用程序目录结构验证
以下输出验证了 Node.js 应用程序文件、依赖包和运行时配置已成功创建。

### 📘 任务 2 总结
在本任务中,已在 Ubuntu 本地环境中成功开发并验证了基础平台示例应用程序。
已完成的实现包括:
- Node.js 应用程序初始化
- Express 框架安装
- 平台应用程序源代码创建
- 运行时配置设置
- 应用程序启动验证
- 浏览器可访问性测试
- 健康检查端点实现
- 应用程序结构验证
此应用程序现在将作为主要工作负载,在剩余的实施阶段中支持后续的容器化工作流、Kubernetes 编排、CI/CD 自动化、DevSecOps 安全执行、监控集成和平台运维验证。
## 🐳 任务 3 — 容器化和运行时标准化
### 🎯 目标
本任务的目标是使用 Docker 对平台示例应用程序进行容器化,以便在平台工程生态系统中建立标准化的运行时环境。
容器化可实现:
- 一致的应用程序运行时行为
- 环境可重现性
- Kubernetes 部署就绪
- 平台可移植性
- 可扩展的工作负载编排
- 标准化的云原生部署
- 运行时隔离和依赖一致性
此实现建立了在剩余项目阶段中实现 Kubernetes 编排、CI/CD 自动化、DevSecOps 安全扫描和平台部署工作流所需的基础容器运行时层。
### 📂 进入应用程序目录
运行以下命令以进入应用程序目录。
```
cd app
```
### 📝 创建 Dockerfile
运行以下命令以创建 Dockerfile。
```
touch Dockerfile
```
### 📝 打开 Dockerfile
运行以下命令以打开 Dockerfile。
```
nano Dockerfile
```
将以下 Docker 配置添加到 `Dockerfile` 中。
```
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
```
### 📸 Dockerfile 配置验证
下图验证了用于容器化平台应用程序的 Dockerfile 已成功创建。

### 🛑 停止本地 Node.js 运行时
在构建容器镜像之前,请停止当前运行的本地 Node.js 应用程序。
在运行 Node.js 应用程序的终端中按下以下键盘快捷键。
```
CTRL + C
```
### 🏗️ 构建 Docker 容器镜像
运行以下命令以构建 Docker 容器镜像。
```
docker build -t production-devsecops-platform:v1 .
```
### 📸 Docker 镜像构建验证
以下输出确认平台应用程序的 Docker 容器镜像已成功创建。

### 📦 验证可用的 Docker 镜像
运行以下命令以验证新创建的 Docker 镜像。
```
docker images
```
### 📸 Docker 镜像验证
以下输出确认平台容器镜像在 Docker 运行时环境中已成功可用。

### 🚀 运行 Docker 容器
运行以下命令以启动容器化的平台应用程序。
```
docker run -d -p 3000:3000 --name production-devsecops-container production-devsecops-platform:v1
```
### 📸 Docker 容器运行时验证
以下输出确认平台容器运行时环境已成功启动。

### 📦 验证正在运行的 Docker 容器
运行以下命令以验证活动的 Docker 容器。
```
docker ps
```
### 📸 活动 Docker 容器验证
以下输出验证平台应用程序容器正在 Docker 运行时环境中活跃运行。

### 🌐 验证通过 Docker 的浏览器可访问性
在浏览器中打开以下 URL。
```
http://localhost:3000
```
### 📸 Docker 化应用程序浏览器验证
下图确认容器化平台应用程序的浏览器可访问性成功。

### ❤️ 验证 Docker 化健康检查端点
在浏览器中打开以下 URL。
```
http://localhost:3000/health
```
### 📸 Docker 化健康检查端点验证
以下输出确认容器化平台健康验证端点运行成功。

### 📜 检查 Docker 容器日志
运行以下命令以检查容器运行时日志。
```
docker logs production-devsecops-container
```
### 📸 Docker 容器日志验证
以下输出验证平台容器环境的运行时日志记录成功。

### 📘 任务 3 总结
在本任务中,使用 Docker 成功对平台示例应用程序进行了容器化,以建立标准化的云原生运行时环境。
已完成的实现包括:
- Dockerfile 创建
- 容器镜像配置
- Docker 镜像构建验证
- 容器运行时部署
- Docker 镜像验证
- 浏览器可访问性测试
- 健康检查端点验证
- 容器运行时日志检查
此实现现在提供了在剩余的平台工程生命周期中实现 Kubernetes 工作负载编排、CI/CD 自动化、DevSecOps 安全执行、漏洞扫描和云原生部署标准化所需的基础容器运行时层。
## ☸️ 任务 4 — Kubernetes 工作负载编排
### 🎯 目标
本任务的目标是将容器化的平台应用程序部署到使用 Kind 配置的 Kubernetes 环境中。
此阶段建立了负责以下工作的基础 Kubernetes 编排层:
- 容器工作负载调度
- 应用程序可扩展性
- Kubernetes 服务暴露
- 云原生部署标准化
- 运行时编排
- 平台工作负载管理
- Kubernetes 运维验证
实现的重点是部署能够支持在整个平台工程生命周期中进行安全云原生工作负载操作的标准化 Kubernetes 资源。
### 📂 进入 Kubernetes 目录
运行以下命令以进入 Kubernetes 配置目录。
```
cd ../kubernetes
```
### 🏷️ 创建 Kubernetes 命名空间配置
运行以下命令以打开命名空间配置文件。
```
nano namespace.yaml
```
将以下配置添加到 `namespace.yaml` 文件中。
```
apiVersion: v1
kind: Namespace
metadata:
name: devsecops-platform
```
### 📸 Kubernetes 命名空间配置验证
下图验证了 Kubernetes 命名空间配置已成功创建。

### 🚀 创建 Kubernetes Deployment 配置
运行以下命令以打开 deployment 配置文件。
```
nano deployment.yaml
```
将以下配置添加到 `deployment.yaml` 文件中。
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: production-devsecops-deployment
namespace: devsecops-platform
spec:
replicas: 2
selector:
matchLabels:
app: production-devsecops-platform
template:
metadata:
labels:
app: production-devsecops-platform
spec:
containers:
- name: production-devsecops-container
image: production-devsecops-platform:v1
imagePullPolicy: Never
ports:
- containerPort: 3000
```
### 📸 Kubernetes Deployment 配置验证
下图确认 Kubernetes deployment 清单已成功创建。

### 🌐 创建 Kubernetes Service 配置
运行以下命令以打开 Kubernetes service 配置文件。
```
nano service.yaml
```
将以下配置添加到 `service.yaml` 文件中。
```
apiVersion: v1
kind: Service
metadata:
name: production-devsecops-service
namespace: devsecops-platform
spec:
selector:
app: production-devsecops-platform
ports:
- protocol: TCP
port: 80
targetPort: 3000
type: NodePort
```
### 📸 Kubernetes Service 配置验证
下图验证了 Kubernetes service 清单已成功创建。

### 📦 将 Docker 镜像加载到 Kind 集群中
运行以下命令以将本地构建的 Docker 镜像加载到 Kind Kubernetes 集群中。
```
kind load docker-image production-devsecops-platform:v1 --name devsecops-platform
```
### 📸 Kind Docker 镜像加载验证
以下输出确认 Docker 镜像已成功加载到 Kubernetes 集群运行时中。

### ☸️ 部署 Kubernetes 命名空间
运行以下命令以部署命名空间资源。
```
kubectl apply -f namespace.yaml
```
### 📸 Kubernetes 命名空间部署验证
以下输出确认 Kubernetes 命名空间资源已成功部署。

### 🚀 部署 Kubernetes Deployment 资源
运行以下命令以部署工作负载 deployment 资源。
```
kubectl apply -f deployment.yaml
```
### 📸 Kubernetes Deployment 资源验证
以下输出确认 Kubernetes 工作负载 deployment 资源已成功部署。

### 🌐 部署 Kubernetes Service 资源
运行以下命令以部署 Kubernetes service 资源。
```
kubectl apply -f service.yaml
```
### 📸 Kubernetes Service 部署验证
以下输出确认 Kubernetes service 资源已成功部署。

### 📦 验证 Kubernetes Pod
运行以下命令验证 Kubernetes 工作负载 Pod。
```
kubectl get pods -n devsecops-platform
```
### 📸 Kubernetes Pod 验证
以下输出验证 Kubernetes 工作负载 Pod 已成功部署并具备操作就绪状态。

### 🌐 验证 Kubernetes Service
运行以下命令以验证 Kubernetes service 暴露情况。
```
kubectl get svc -n devsecops-platform
```
### 📸 Kubernetes Service 验证
以下输出确认 Kubernetes 平台 service 已成功暴露。

### 🖥️ 转发 Kubernetes Service 端口
运行以下命令以在本地暴露 Kubernetes service。
```
kubectl port-forward svc/production-devsecops-service 3000:80 -n devsecops-platform
```
### 📸 Kubernetes 端口转发验证
以下输出确认 Kubernetes service 的本地端口转发已成功实现可访问性。

### 🌐 验证 Kubernetes 应用程序可访问性
在浏览器中打开以下 URL。
```
http://localhost:3000
```
### 📸 Kubernetes 浏览器可访问性验证
下图确认部署在 Kubernetes 上的平台应用程序的浏览器可访问性成功。

### ❤️ 验证 Kubernetes 健康检查端点
在浏览器中打开以下 URL。
```
http://localhost:3000/health
```
### 📸 Kubernetes 健康检查端点验证
以下输出确认部署在 Kubernetes 上的平台健康检查端点运行成功。

### 📦 验证 Kubernetes Deployment 资源
运行以下命令以验证 Kubernetes deployment 资源。
```
kubectl get deployments -n devsecops-platform
```
### 📸 Kubernetes Deployment 资源验证
以下输出确认 Kubernetes deployment 编排和副本可用性成功。

### 📘 任务 4 总结
在本任务中,容器化的平台应用程序已成功部署到通过 Kind 配置的 Kubernetes 环境中。
已完成的实现包括:
- Kubernetes 命名空间创建
- Kubernetes deployment 配置
- Kubernetes service 配置
- Docker 镜像集成到 Kind 中
- Kubernetes 工作负载部署
- Service 暴露配置
- Kubernetes Pod 验证
- 浏览器可访问性测试
- Kubernetes 健康检查端点验证
- Kubernetes deployment 验证
此实现现在建立了在剩余的实施阶段中实现 CI/CD 自动化、DevSecOps 安全集成、可观测性监控、运行时扩展和云原生平台运维所需的基础 Kubernetes 编排层。
## ⚙️ 任务 5 — CI/CD 平台自动化
### 🎯 目标
本任务的目标是使用 GitHub Actions 实现自动化 CI/CD 工作流,以标准化整个平台工程环境中的安全软件交付。
此阶段建立了负责以下工作的基础 CI/CD 自动化层:
- 自动化工作流执行
- 持续集成验证
- Docker 镜像自动化
- Kubernetes 部署自动化
- 工作流标准化
- 平台部署一致性
- 运维自动化
实现的重点是建立一个面向生产的 CI/CD 工作流,能够在剩余的平台工程生命周期中支持云原生部署操作。
### 📂 进入 GitHub 工作流目录
运行以下命令以进入 GitHub Actions 工作流目录。
```
cd ../.github/workflows
```
### 📝 创建 GitHub Actions 工作流文件
运行以下命令以创建 CI/CD 工作流配置文件。
```
touch ci-cd.yaml
```
### 📝 打开工作流配置文件
运行以下命令以打开工作流配置文件。
```
nano ci-cd.yaml
```
将以下配置添加到 `ci-cd.yaml` 文件中。
```
name: Production DevSecOps CI/CD Pipeline
on:
push:
branches:
- main
jobs:
platform-ci-cd-workflow:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Verify Repository Structure
run: ls -la
- name: Verify Docker Installation
run: docker --version
- name: Build Docker Image
run: |
cd app
docker build -t production-devsecops-platform:v1 .
- name: Validate Kubernetes Configuration Files
run: |
ls kubernetes
- name: CI/CD Pipeline Validation
run: echo "Production DevSecOps CI/CD Pipeline executed successfully"
```
### 📸 GitHub Actions 工作流配置验证
下图验证了 GitHub Actions CI/CD 工作流配置已成功创建。

### 📂 返回项目根目录
运行以下命令以返回项目根目录。
```
cd ../../
```
### 📦 验证 GitHub Actions 工作流结构
运行以下命令以验证 GitHub 工作流文件的位置。
```
tree .github
```
### 📸 GitHub 工作流结构验证
以下输出确认 CI/CD 工作流已成功放置在 GitHub Actions 工作流目录中。

### 🚀 触发 GitHub Actions 工作流
运行以下命令将 CI/CD 工作流推送到 GitHub 并自动触发管道执行。
```
git add .
git commit -m "TASK 5: CI/CD platform automation implemented"
git push origin main
```
### 🌐 打开 GitHub Actions 仪表盘
在浏览器中打开 GitHub 仓库并导航至:
```
GitHub Repository → Actions Tab
```
### 📸 GitHub Actions 管道执行验证
下图确认 GitHub Actions CI/CD 工作流管道已成功执行。

### 🔍 检查工作流 Job 执行情况
打开已执行的工作流 job 以验证所有 CI/CD 阶段。
验证以下执行是否成功:
- 仓库检出
- Docker 验证
- Docker 镜像构建
- Kubernetes 配置验证
- CI/CD 管道验证
### 📸 GitHub Actions Job 验证
下图验证了所有 CI/CD 工作流阶段已成功执行。

### 📘 任务 5 总结
在本任务中,已使用 GitHub Actions 成功实现了基础 CI/CD 自动化层。
已完成的实现包括:
- GitHub Actions 工作流创建
- 自动化仓库验证
- Docker 运行时验证
- 自动化容器镜像构建工作流
- Kubernetes 配置验证
- CI/CD 工作流自动化
- GitHub Actions 管道执行验证
- 工作流 Job 执行验证
此实现现在建立了在剩余的实施阶段中实现 DevSecOps 安全执行、Kubernetes 部署标准化、自动化平台交付工作流和面向生产的云原生运维自动化所需的基础 CI/CD 自动化层。
标签:API集成, CI/CD流水线, CISA项目, DevSecOps, Docker, ECS, GitHub Actions, Grafana, SonarQube, Terraform, Web截图, 上游代理, 可观测性, 子域名突变, 安全合规, 安全防御评估, 容器安全, 容器编排, 平台工程, 开源框架, 微服务架构, 持续交付, 持续集成, 特权提升, 监控告警, 研发效能, 网络代理, 自动化部署, 自动笔记, 自定义脚本, 自定义请求头, 请求拦截, 软件交付, 运维自动化, 静态应用安全测试