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 流水线的主要阶段
一个典型的流水线包括:
- 代码检出:从 Git 仓库拉取最新代码。
- 构建:编译代码、打包二进制文件或容器镜像。
- 测试:单元测试、集成测试、代码质量扫描。
- 制品发布:将构建产物(Jar、Docker 镜像等)推送到制品仓库。
- 部署:将新版本部署到目标环境(开发、测试、生产)。
- 验证:冒烟测试、健康检查。
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:配置与敏感信息管理。
- 学习路径:
- 使用 kind 或 Minikube 搭建本地集群。
- 手工编写 YAML 文件部署一个多服务应用。
- 理解网络模型和存储卷。
- 实践滚动更新、回滚和自动扩缩容(HPA)。
- 学习包管理工具 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 工程能力。