Announcement

👇Official Account👇

图片

Welcome to join the group & private message

Article first/tail QR code

Skip to content

🚀 DevOps 工程实践

从容器化到监控告警,打造现代化工程能力

课程信息说明
难度🟡 中级
预计时长6-8 周
课程模块4 大核心模块
课时数量10 课时
实战项目完整 CI/CD 流水线、监控告警体系
前置知识Linux 基础、Go/Python 任意一门语言

🎯 课程目标

完成本课程后,你将能够:

  • 容器化应用 - Docker 镜像构建、优化、最佳实践
  • 编排与管理 - Kubernetes 部署、服务发现、自动扩缩容
  • 自动化流水线 - CI/CD 设计、GitHub Actions、自动化测试
  • 监控与告警 - Prometheus、Grafana、日志收集、告警规则
  • 可观测性体系 - 日志、指标、Trace 三位一体

📚 课程大纲

🔹 模块 1:Docker 容器化(2 周)

目标: 掌握 Docker 核心概念、镜像构建优化、容器编排基础

课时主题内容状态
1.1Docker 基础容器 vs 虚拟机、镜像与容器、仓库📝
1.2Dockerfile 编写指令详解、多阶段构建、最佳实践📝
1.3镜像优化层缓存、体积优化、安全扫描📝
1.4Docker Compose多容器编排、网络、数据卷📝
1.5Go 应用容器化静态编译、最小镜像、健康检查
1.6容器安全非 root 运行、镜像签名、漏洞扫描📝

推荐文章:

实战练习:

  • 将现有 Go 应用容器化
  • 编写多阶段 Dockerfile
  • 使用 Docker Compose 运行完整应用栈

🔹 模块 2:Kubernetes 编排(2 周)

目标: 掌握 K8s 核心概念、工作负载、服务发现、配置管理

课时主题内容状态
2.1K8s 架构与概念Master/Node、Pod、Namespace📝
2.2工作负载Deployment、StatefulSet、DaemonSet📝
2.3服务发现Service、Ingress、DNS📝
2.4配置管理ConfigMap、Secret、环境变量📝
2.5存储管理Volume、PVC、StorageClass📝
2.6自动扩缩容HPA、VPA、Cluster Autoscaler📝
2.7Helm 包管理Chart 结构、模板、依赖管理📝

实战练习:

  • 在本地使用 Minikube/Kind 搭建 K8s 环境
  • 部署多微服务应用
  • 配置 HPA 自动扩缩容

🔹 模块 3:CI/CD 流水线(2 周)

目标: 设计并实现完整的持续集成与持续部署流水线

课时主题内容状态
3.1CI/CD 基础持续集成、持续交付、持续部署📝
3.2GitHub ActionsWorkflow 语法、Actions、Secrets
3.3自动化测试单元测试、集成测试、E2E 测试📝
3.4代码质量Lint、格式化、覆盖率、SonarQube📝
3.5构建与发布自动化构建、版本管理、Release📝
3.6自动化部署蓝绿部署、金丝雀发布、回滚策略📝
3.7GitOps 实践ArgoCD、Flux、声明式部署

推荐文章:

  • [GitOps 实战:从应用部署到全生命周期管理](/thinking/method/GitOps 实战 - 从应用部署到全生命周期管理.md)

GitHub Actions 示例:

yaml
name: CI/CD Pipeline

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v4
        with:
          go-version: '1.21'
      - run: go test -race -coverprofile=coverage.out ./...
      - uses: codecov/codecov-action@v3
        with:
          files: ./coverage.out

  build:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: docker/build-push-action@v4
        with:
          push: true
          tags: myapp:${{ github.sha }}

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: azure/k8s-deploy@v4
        with:
          manifests: k8s/deployment.yaml
          images: myapp:${{ github.sha }}

🔹 模块 4:监控与可观测性(2 周)

目标: 建立完整的监控、日志、告警体系

课时主题内容状态
4.1可观测性基础日志、指标、Trace 三大支柱📝
4.2Prometheus 监控架构、数据模型、PromQL📝
4.3Grafana 可视化Dashboard、数据源、告警📝
4.4日志收集Loki/ELK、Fluentd、日志结构化
4.5分布式追踪OpenTelemetry、Jaeger、SkyWalking
4.6告警管理Alertmanager、告警规则、降噪📝
4.7Go 应用监控指标暴露、健康检查、pprof

推荐文章:

  • [从 trace 到洞察:Go 项目的可观测性闭环实践](/thinking/method/从%20trace%20 到洞察:Go%20 项目的可观测性闭环实践.md)
  • [别再盲接 OTel:Go 可观察性接入的 8 个大坑](/thinking/method/别再盲接%20OTel:Go%20 可观察性接入的%208%20 个大坑.md)
  • [使用 Devslog 结构化日志处理](/tools/使用 Devslog 结构化日志处理.md)

监控体系架构图:

┌─────────────────────────────────────────────────────┐
│                    应用层                            │
│  Go App ──> Prometheus Metrics (端口 9090)          │
│  Go App ──> Structured Logs ──> Loki               │
│  Go App ──> OpenTelemetry Trace ──> Jaeger         │
└─────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────┐
│                    收集层                            │
│  Prometheus Server ──> TSDB                         │
│  Loki ──> 日志索引                                   │
│  Jaeger ──> Trace 存储                               │
└─────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────┐
│                    展示层                            │
│  Grafana Dashboard                                  │
│  ├─ 应用指标面板                                     │
│  ├─ 日志查询面板                                     │
│  └─ Trace 分析面板                                   │
└─────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────┐
│                    告警层                            │
│  Alertmanager ──> 通知渠道                           │
│  ├─ Email                                             │
│  ├─ Slack/Discord                                    │
│  └─ 钉钉/企业微信                                     │
└─────────────────────────────────────────────────────┘

🛠️ 技术栈

DevOps 工具链
├── 容器化
│   ├── Docker
│   ├── Docker Compose
│   └── Container Registry
├── 编排
│   ├── Kubernetes
│   ├── Helm
│   └── Kustomize
├── CI/CD
│   ├── GitHub Actions
│   ├── GitLab CI
│   └── ArgoCD (GitOps)
├── 监控
│   ├── Prometheus (指标)
│   ├── Grafana (可视化)
│   └── Alertmanager (告警)
├── 日志
│   ├── Loki (轻量级)
│   ├── ELK Stack (完整方案)
│   └── Fluentd (收集器)
└── 追踪
    ├── OpenTelemetry (标准)
    ├── Jaeger
    └── SkyWalking

🏆 实战项目

项目:完整 DevOps 流水线

目标: 为一个 Go Web 应用构建完整的 DevOps 体系

要求:

  1. 容器化 - 编写优化的 Dockerfile
  2. K8s 部署 - 编写 Deployment、Service、Ingress
  3. CI/CD - GitHub Actions 自动测试、构建、部署
  4. 监控 - Prometheus 指标 + Grafana Dashboard
  5. 日志 - 结构化日志 + Loki 收集
  6. 告警 - CPU/内存/错误率告警规则

技术栈:

  • Go 1.21+ (Gin 框架)
  • Docker + Docker Compose
  • Kubernetes (Minikube/Kind)
  • GitHub Actions
  • Prometheus + Grafana
  • Loki + Promtail

📖 学习资源

官方文档

实践指南

工具推荐

  • 本地 K8s: Minikube, Kind, Rancher Desktop
  • IDE: VS Code + Kubernetes 插件
  • CLI: kubectl, helm, k9s

🎓 学习建议

1️⃣ 环境准备

  • 准备一台 Linux 虚拟机或使用 WSL2
  • 安装 Docker Desktop
  • 搭建本地 K8s 环境(Minikube/Kind)

2️⃣ 循序渐进

  • 先掌握 Docker 基础
  • 再学习 K8s 核心概念
  • 最后实现完整流水线

3️⃣ 动手实践

  • 每个课时都要动手操作
  • 将现有项目容器化
  • 搭建完整的监控体系

4️⃣ 持续学习

  • DevOps 工具更新快
  • 关注云原生社区动态
  • 参与开源项目

📊 课程进度

模块进度状态
模块 1:Docker 容器化1/6🚧 进行中
模块 2:Kubernetes 编排0/7📝 规划中
模块 3:CI/CD流水线2/7🚧 进行中
模块 4:监控与可观测性3/7🚧 进行中

总体进度: 6/27 (22%)


💡 常见问题

Q: DevOps 需要掌握所有工具吗?

A: 不需要。掌握核心概念后,工具可以按需学习。建议先精通一个工具链。

Q: 小团队需要 DevOps 吗?

A: 需要。自动化可以节省大量时间,即使是单人团队也能受益。

Q: 如何说服团队采用 DevOps?

A: 从小处着手,先解决一个痛点(如自动化测试),展示价值后再推广。


🤝 参与贡献

本课程正在建设中,欢迎参与:

  • 📝 编写课时:认领任意未完成的课时
  • 🐛 报告问题:发现错误或不清晰的地方
  • 💡 提出建议:新的实战案例或工具推荐

GitHub 仓库 | 联系作者


💡 提示:DevOps 不仅是工具,更是一种文化。自动化、协作、持续改进是核心理念。

返回课程总览 →

上次更新于: