DevOps 学习路线:CI/CD、容器化与监控

FreeGuideOnline 最新 2026-06-19

DevOps 学习路线:从 CI/CD 到容器化与监控

本教程为初学者提供一条清晰的 DevOps 学习路径,聚焦于持续集成与持续交付(CI/CD)容器化监控三大核心领域。你将掌握现代软件交付的关键技能,并了解常用的工具与实践。

1. DevOps 基础与思维方式

在深入工具之前,先理解 DevOps 的文化与目标。

1.1 什么是 DevOps

  • 定义:DevOps 是一组实践、工具和文化理念,旨在打破开发(Dev)与运维(Ops)之间的壁垒,缩短系统开发生命周期,提供高质量的持续交付。
  • 核心目标:提高部署频率、缩短故障修复时间、更快速地响应市场需求。
  • 关键原则:自动化一切、度量一切、持续反馈、协作。

1.2 学习 DevOps 的前置知识

  • 基础编程能力:Python、Go 或 Shell 脚本(至少一门)。
  • 操作系统基础:Linux 命令行使用、进程管理、文件权限。
  • 网络常识:IP 地址、端口、DNS、HTTP/HTTPS。
  • 版本控制:Git 的日常操作(clone、commit、branch、merge、rebase)。

建议:若欠缺以上任何一项,先花1~2周打底。

2. CI/CD – 持续集成与持续交付

CI/CD 是 DevOps 的基石,实现代码从提交到上线的自动化流水线。

2.1 核心概念

  • 持续集成(CI):开发人员频繁将代码合并到主干,每次合并触发自动构建与测试,快速发现集成问题。
  • 持续交付(CD):在 CI 的基础上,确保代码可以随时部署到生产环境,部署按钮掌握在人工手中。
  • 持续部署(CD):更进一步,每次通过测试的代码自动部署到生产环境,无需人工干预。

2.2 CI/CD 流水线的主要阶段

一个典型的流水线包括:

  1. 代码检出:从 Git 仓库拉取最新代码。
  2. 构建:编译代码、打包二进制文件或容器镜像。
  3. 测试:单元测试、集成测试、代码质量扫描。
  4. 制品发布:将构建产物(Jar、Docker 镜像等)推送到制品仓库。
  5. 部署:将新版本部署到目标环境(开发、测试、生产)。
  6. 验证:冒烟测试、健康检查。

2.3 常用工具与学习路径

  • Jenkins(经典,高度可定制)
    • 学习用 Pipeline as Code (Jenkinsfile) 编写流水线。
    • 理解 Agent、Stage、Step 概念。
  • GitLab CI/CD(与 GitLab 仓库深度集成)
    • 编写 .gitlab-ci.yml,熟悉 Runner 注册与管理。
  • GitHub Actions(现代化,社区生态丰富)
    • 掌握 workflow、job、action 的编写与复用。
  • 其他值得了解的:Tekton(Kubernetes 原生)、Drone、CircleCI。

初学者推荐路径:先用 GitHub Actions 实践一个小项目(自动运行测试、构建 Docker 镜像),再接触 Jenkins 以理解更复杂的企业级场景。

2.4 实践建议

  • 为一款简单的 Web 应用搭建完整的 CI/CD 流水线。
  • 集成代码质量检查(SonarQube)和安全扫描(Trivy)。
  • 实现基于环境变量的多环境部署(staging / production)。

3. 容器化 – 构建可移植的运行时环境

容器化是现代部署的标配,它解决了“在我机器上能跑”的问题。

3.1 Docker 核心知识

  • 镜像:应用程序及其依赖的轻量级、可执行包。
  • 容器:镜像的运行实例,彼此隔离。
  • Dockerfile:用于定义镜像构建步骤的文本文件。
  • 基本命令docker build, docker run, docker ps, docker-compose
  • 最佳实践:多阶段构建、减小镜像体积、非 root 用户运行。

3.2 容器编排与 Kubernetes (K8s)

  • 为什么需要编排:在生产环境中管理成千上万个容器的部署、伸缩、网络、存储。
  • Kubernetes 核心资源
    • Pod:最小调度单元,包含一个或多个容器。
    • Deployment:声明式管理 Pod 的副本数量与滚动更新。
    • Service:提供稳定的网络访问端点。
    • Ingress:外部 HTTP/HTTPS 流量路由。
    • ConfigMap / Secret:配置与敏感信息管理。
  • 学习路径
    1. 使用 kind 或 Minikube 搭建本地集群。
    2. 手工编写 YAML 文件部署一个多服务应用。
    3. 理解网络模型和存储卷。
    4. 实践滚动更新、回滚和自动扩缩容(HPA)。
    5. 学习包管理工具 Helm,编写 Chart。

3.3 容器化与 CI/CD 的结合

  • 在 CI 流水线中编译代码并构建 Docker 镜像。
  • 将镜像推送到镜像仓库(Docker Hub、Harbor)。
  • 使用 GitOps 工具(如 ArgoCD)将 Kubernetes 清单同步到集群。

4. 监控与可观测性

没有监控的系统就是盲飞。可观测性让你理解系统内部发生了什么。

4.1 三大支柱

  • 指标(Metrics):量化数据,如 CPU 使用率、请求延迟、错误数量。
  • 日志(Logging):离散的带时间戳的事件记录。
  • 链路追踪(Tracing):追踪一次请求在分布式系统中的完整路径。

4.2 常用工具栈

  • Prometheus + Grafana:事实标准的指标收集与可视化方案。
    • 学习 PromQL 查询语言。
    • 为应用程序暴露 /metrics 端点(使用 Prometheus 客户端库)。
    • 创建 Grafana 仪表盘,设置 Alertmanager 告警规则。
  • ELK / EFK 栈:Elasticsearch + Logstash + Kibana(或用 Fluentd 替代 Logstash)用于集中式日志管理。
    • 理解结构化日志(JSON 格式)的重要性。
  • Jaeger / Zipkin:分布式追踪系统。
    • 在代码中进行 trace 埋点,查看请求的完整调用链。

4.3 从监控到可观测性

  • 不仅仅是收集数据,更要通过关联、探索和告警来主动发现问题。
  • 实施“基础设施即代码”理念,将监控配置纳入版本管理。
  • 学习 SRE 四大黄金信号:延迟、流量、错误、饱和度。

5. 学习路线建议(分阶段)

阶段一:基础打磨(2-4周)

  • 巩固 Linux、Git、Shell 脚本。
  • 用 Python/Go 写一个简单的 HTTP API。

阶段二:容器化与早期 CI(3-4周)

  • 学习 Docker,为上述 API 编写 Dockerfile,并使用 Docker Compose 运行。
  • 在 GitHub Actions 中搭建 CI 流水线:代码检出 → 测试 → 构建镜像 → 推送至镜像仓库。

阶段三:Kubernetes 入门(4-6周)

  • 本地搭建 K8s 集群,部署 API 服务。
  • 用 Deployment 和 Service 暴露服务,理解滚动升级。
  • 引入配置管理(ConfigMap/Secret)。

阶段四:完整 CI/CD 与 GitOps(3-4周)

  • 延伸流水线至自动部署:在 GitLab/Jenkins 中增加 CD 阶段。
  • 学习使用 Helm 打包应用,并用 ArgoCD 将应用描述同步到集群。

阶段五:监控与可观测性(3-4周)

  • 部署 Prometheus + Grafana,并配置基本仪表盘和告警。
  • 将应用日志收集至 EFK,学习查询与分析。
  • 引入 Jaeger,理解分布式追踪。

阶段六:综合项目与进阶(持续)

  • 搭建一个微服务示例项目:用户服务、订单服务、网关,完整落地 CI/CD、容器化、监控。
  • 探索服务网格(Istio)、无服务器、混沌工程等。

6. 持续学习资源

  • 官方文档永远是最佳参考:Kubernetes、Docker、Prometheus 官网。
  • 互动练习:Katacoda(现属 O'Reilly)、Play with Kubernetes。
  • 社区:DevOps 周刊、CNCF 项目社区。
  • 认证:CKA/CKAD(Kubernetes)、AWS Certified DevOps Engineer。

遵循这份路线图,勤于动手,你将在半年左右构建起扎实的 DevOps 工程能力。