Skip to content

tmsxj/cloud-native-platform

Repository files navigation

K8s 全链路 DevOps 实战平台

基于自建 6 节点离线 K8s 集群的端到端 DevOps 落地工程 📅 最近更新: 2026-07-07 | 状态: 全部完成 ✅


项目概述

这是一套从零搭建的 完整 K8s DevOps 平台,在自建离线集群上实战落地了 CI/CD 三方案、可观测性三支柱、灰度发布、弹性伸缩、国产数据库部署等核心能力。

核心亮点:

  • 🔄 CI/CD 三方案对比: Jenkins + GitLab CI + ArgoCD GitOps,从传统到云原生全覆盖
  • 📊 可观测性三支柱: Metrics/Logs/Traces 全链路打通,支持 Trace-Log 关联查询
  • 🚦 灰度发布实战: Argo Rollouts Canary + BlueGreen,含权重调整与自动回滚
  • 🇨🇳 国产数据库部署: 崖山 YashanDB + 达梦 DM8 K8s 部署实战
  • 🔐 安全合规: 镜像签名(Trivy)、Sealed Secrets、cert-manager

集群环境

节点 角色 CPU 内存 磁盘
master1-3 Control Plane 2核 2GB 50GB
worker1-2 Worker 4核 8GB 100GB
harbor 镜像仓库 2核 2GB 100GB

K8s: v1.28.15 | OS: CentOS 7.9 | 网络: Calico | 存储: NFS


🏗️ 架构全景

┌─────────────────────────────────────────────────────────┐
│                    流量入口层                              │
│   nginx-ingress + Gateway API + ExternalDNS              │
├─────────────────────────────────────────────────────────┤
│                    灰度发布层                              │
│   Argo Rollouts (Canary / BlueGreen)                    │
├─────────────────────────────────────────────────────────┤
│                  CI/CD 交付层 (三方案)                     │
│   ┌──────────────┬──────────────┬──────────────────┐    │
│   │ 方案1        │ 方案2        │ 方案3             │    │
│   │ Jenkins+     │ GitLab CI+   │ Argo Rollouts    │    │
│   │ ArgoCD       │ ArgoCD       │ GitOps           │    │
│   └──────────────┴──────────────┴──────────────────┘    │
├─────────────────────────────────────────────────────────┤
│                    可观测性层                              │
│   Metrics: Prometheus + Grafana (28 targets)             │
│   Logs:    Loki + Promtail (多租户)                       │
│   Traces:  SkyWalking (Java Agent 无侵入)                 │
│   Storage: Elasticsearch 集群                             │
├─────────────────────────────────────────────────────────┤
│                    数据 & 存储层                           │
│   崖山YashanDB | 达梦DM8 | NFS Provisioner               │
├─────────────────────────────────────────────────────────┤
│                    安全 & 治理层                           │
│   Sealed Secrets | cert-manager | Harbor + Trivy         │
├─────────────────────────────────────────────────────────┤
│                  K8s 核心能力层                             │
│   KEDA + HPA 弹性伸缩 | RBAC | NetworkPolicy             │
└─────────────────────────────────────────────────────────┘

📂 目录结构

cloud-native-platform/
├── CI-CD总览/                          # CI/CD 理论 + 三方案对比
│   ├── CI-CD-GitOps-三套方案对比.md      # 方案选型决策矩阵
│   └── CICD生态工具速览-理论补充.md      # 工具链全景
│
├── 镜像仓库/                           # Harbor 私有镜像仓库
│
├── K8s基础/                            # K8s 核心三基石
│   └── K8s-三基石-HPA-存储-Ingress.md   # 自愈/弹性/服务发现
│
├── 流量入口/                           # 流量管理
│   ├── monitoring-ingress.yaml          # 可观测性 Ingress
│   └── gateway-demo.yaml                # Gateway API 示例
│
├── 方案1-Jenkins-ArgoCD/               # CI/CD 方案一
│   ├── 方案一-Jenkins-ArgoCD实施指南.md  # 完整实施步骤
│   ├── 关键配置详解.md                  # Jenkinsfile/ArgoCD配置
│   ├── 端到端操作实录.md                # 操作留痕
│   ├── 故障排查手册.md                  # 常见问题
│   ├── 项目结构对照.md                  # 代码结构对照
│   ├── 配置文件/                        # YAML 配置集
│   ├── 辅助项目-nginx-gitops-demo/      # Demo: Nginx GitOps
│   └── 辅助项目-snownlp-observability-demo/  # Demo: 情感分析+可观测性
│
├── 方案2-GitLab-ArgoCD/                # CI/CD 方案二
│
├── 方案3-Argo-Rollouts/                # 灰度发布方案
│   ├── 端到端操作实录.md                # 灰度操作全记录
│   ├── 故障排查手册.md                  # 灰度排障
│   ├── argocd/                          # ArgoCD 配置
│   ├── k8s/                             # K8s Rollout 资源
│   └── sealed-secrets/                  # 加密密钥
│
├── 可观测性/                           # 三大支柱
│   ├── 01-metrics/                      # Prometheus + Grafana
│   ├── 02-logs/                         # Loki + Promtail
│   ├── 03-traces/                       # SkyWalking
│   ├── 04-es-storage/                   # ES 集群
│   ├── scripts/                         # 部署脚本
│   └── 可观测性三大支柱-操作留痕与排障手册.md
│
├── 弹性伸缩/                           # KEDA + HPA
│   └── keda-cron-demo.yaml              # Cron 伸缩示例
│
├── 存储管理/                           # NFS Provisioner
│
├── 密钥管理/                           # Sealed Secrets + cert-manager
│
├── 数据库部署/                         # 国产数据库
│   ├── 01-崖山YashanDB部署.md
│   ├── 02-达梦DM8部署.md
│   └── 03-常见踩坑汇总.md
│
├── 部署工具/                           # Helm 部署工具
│
└── 全局参考/                           # 全局配置文件

🔄 CI/CD 三方案对比

维度 方案1: Jenkins+ArgoCD 方案2: GitLab CI+ArgoCD 方案3: Argo Rollouts
CI 引擎 Jenkins Pipeline GitLab CI ArgoCD (纯GitOps)
CD 方式 ArgoCD 自动同步 ArgoCD 自动同步 Argo Rollouts 渐进式
灰度策略 手动切换 手动切换 Canary / BlueGreen 自动化
配置管理 Jenkinsfile + ConfigMap .gitlab-ci.yml Rollout CRD
密钥管理 Jenkins Credentials GitLab Variables Sealed Secrets
适用场景 传统企业过渡 GitLab 全家桶 K8s 原生灰度
学习成本 ⭐⭐⭐ ⭐⭐ ⭐⭐
灵活性 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐

流水线流程

方案1:  Git Push → Jenkins Build → Docker Push → ArgoCD Sync → K8s
方案2:  Git Push → GitLab CI Build → Docker Push → ArgoCD Sync → K8s
方案3:  Git Push → ArgoCD Sync → Argo Rollouts Canary → K8s (渐进式)

📊 可观测性体系

Metrics — Prometheus + Grafana

指标 详情
采集目标 28 targets (Node/K8s组件/Pods/Harbor)
存储 Thanos 长期存储方案
面板 预配置 Dashboard (集群/节点/应用)
告警 Alertmanager + 路由分组

Logs — Loki + Promtail

能力 实现
日志采集 Promtail DaemonSet 全节点采集
多租户 按 namespace 隔离
Trace 关联 通过 TraceID 关联 Loki 日志 ↔ SkyWalking Trace

Traces — SkyWalking

能力 实现
接入方式 Java Agent 无侵入
存储后端 Elasticsearch 7.x
拓扑展示 服务拓扑 + 调用链

🚦 灰度发布实战

基于 Argo Rollouts 实现两种灰度策略:

Canary 金丝雀发布

v1 (90%) → v2 (10%)  → v2 (30%)  → v2 (100%)
              ↓ 异常              ↓ 正常
         自动回滚 v1            全量切换 v2

BlueGreen 蓝绿发布

v1 (Active) + v2 (Preview) → 流量切换 → v2 (Active)
                                  ↓ 异常
                            快速回切 v1

配套能力: Sealed Secrets 密钥加密 + cert-manager 证书自动管理


📐 弹性伸缩

策略 组件 场景
HPA metrics-server CPU/内存指标伸缩
KEDA KEDA Operator Cron 定时伸缩 + 自定义指标

🔐 安全体系

镜像安全:  Harbor → Trivy 漏洞扫描 → 签名验证
运行时安全: NetworkPolicy → RBAC → Pod Security
密钥安全:  Sealed Secrets 加密 → cert-manager 自动签发
治理:      Falco 运行时监控 + CIS 基线检查

🗄️ 国产数据库部署

数据库 部署方式 特点
崖山 YashanDB StatefulSet + NFS 国产自研,Oracle 兼容
达梦 DM8 StatefulSet + NFS 老牌国产数据库

含完整部署步骤 + 踩坑汇总 + 故障排查


🚀 快速开始

前置条件

# 1. Harbor 镜像仓库已部署 (192.168.1.61:80)
# 2. K8s 集群正常运行
# 3. NFS Provisioner 已配置
# 4. Helm 3.12+ 已安装

部署顺序

# 阶段1: 基础设施
# → 镜像仓库 + NFS 存储 + 密钥管理

# 阶段2: 可观测性
# → Prometheus + Grafana + Loki + SkyWalking

# 阶段3: CI/CD
# → Jenkins / GitLab CI + ArgoCD

# 阶段4: 灰度发布
# → Argo Rollouts + Canary 策略

# 阶段5: 数据库
# → 崖山 YashanDB / 达梦 DM8

验证

# 检查所有组件状态
kubectl get pods -A --sort-by='.status.phase'

# 检查 Prometheus targets
kubectl port-forward -n monitoring svc/prometheus-server 9090:80
# 浏览器: http://localhost:9090/targets

# 检查 ArgoCD 应用同步
kubectl get applications -n argocd

# 检查 Rollout 状态
kubectl argo rollouts list rollouts -A

📋 技术栈总览

分类 组件 版本 用途
镜像仓库 Harbor v2.x 镜像存储 + 漏洞扫描
CI Jenkins / GitLab CI latest 构建流水线
CD/GitOps ArgoCD v2.x 声明式部署
灰度发布 Argo Rollouts v1.x Canary / BlueGreen
Metrics Prometheus + Grafana v2.x 指标采集 + 可视化
Logs Loki + Promtail v2.x 日志聚合
Traces SkyWalking v9.x 链路追踪
日志存储 Elasticsearch 7.x SkyWalking 存储后端
弹性伸缩 KEDA + HPA v2.x 指标驱动伸缩
存储 NFS Provisioner v4.x 动态 PVC
密钥 Sealed Secrets + cert-manager latest 加密 + 证书
流量 nginx-ingress + Gateway API v1.x 流量入口
数据库 崖山 YashanDB / 达梦 DM8 latest 国产数据库

📖 参考资源


🔗 相关项目


提示: 本项目在离线环境中完整运行,所有外部依赖已通过 Harbor 镜像仓库本地化。

About

K8s DevOps Platform: Jenkins/GitLab CI + ArgoCD GitOps + Prometheus/Loki/SkyWalking + Argo Rollouts Canary + CN Databases

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors