news 2026/10/12 7:28:16

learn-to-cloud 第 4 阶段:DevOps 基础——CI/CD、Terraform、Docker、Kubernetes 与 Prometheus 一条龙学习路线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
learn-to-cloud 第 4 阶段:DevOps 基础——CI/CD、Terraform、Docker、Kubernetes 与 Prometheus 一条龙学习路线
  • 教程
  • 云原生

【免费下载链接】learn-to-cloud

A courseware built on the belief that anyone can learn foundational cloud engineering skills with the right guide and discipline

项目地址:https://gitcode.com/gh_mirrors/le/learn-to-cloud
点击查看免费下载

本篇文章带你解读开源课程 learn-to-cloud(位于仓库根目录的 docs/phase4/README.md 及其葡萄牙语版本 i18n/pt/docusaurus-plugin-content-docs/current/phase4/README.md)中的第 4 阶段内容:DevOps 基础。你将系统理解 DevOps 作为一种文化而非单一工具的本质,掌握 CI/CD、基础设施即代码(IaC)、容器化、容器编排与监控五大实践,并获得可复制的每周学习计划、上手任务、实战项目与能力验收清单。

DevOps 是什么:先理解文化,再学习工具

第 4 阶段课程开篇就点明了一个关键立场:DevOps 是"文化",而不是某个具体的工具或服务。它涵盖的是"把解决方案从实现阶段带到持续更新阶段"所涉及的一切,目标是让软件交付更高效、更可靠。

DevOps 并非云计算的专属概念,它在**本地数据中心(on-premise)和混合云(hybrid)**模型中同样适用。它也不局限于某个固定职位——虽然很多公司设有专职的 DevOps 工程师岗位,但课程明确指出:如果你的目标是成为 DevOps 工程师,本阶段只提供入门级介绍,后续还需要更深入的学习与实战积累。

课程建议学习者先阅读以下行业资料建立认知(此处仅列出名称,便于对照学习,不附外部链接):

  • Microsoft 官方的《What is DevOps?》;
  • AWS 官方的《What is DevOps?》;
  • IBM 的《A complete guide to DevOps》;

此外还推荐了两本经典读物:小说形式的《The Phoenix Project》(以虚构故事讲解 DevOps 文化的重要性,读起来很有趣)和更接近教科书风格的《The DevOps Handbook》(主题相近、内容更系统)。

前置要求:从第 3 阶段无缝衔接

进入本阶段前,你需要已经完成:

  • 第 2 阶段的版本控制学习(Git 相关基础,详见 i18n/pt/docusaurus-plugin-content-docs/current/phase2/README.md);
  • 第 3 阶段云平台基础(含 Capstone 结业项目,见 docs/phase3/README.md);
  • 若此前完成了 [Cloud Resume Challenge](云简历挑战赛),它会提前向你展示 DevOps 的概念,若还不熟悉,建议回头完成它再进入本阶段。

阶段路线图:5 周五大主题

课程为第 4 阶段规划了 5 个主题,每项大约投入 1 周时间:

顺序主题建议投入时间
1使用 GitHub Actions 实现 CI/CD1 周
2使用 Terraform 实现 IaC1 周
3使用 Docker 进行容器化1 周
4使用 Kubernetes 进行容器编排1 周
5使用 Prometheus 进行监控1 周

课程强调:这份时间线是应学习者要求添加的参考,你可以完全按自己的节奏安排。每一项 DevOps 实践都很重要,但以上 5 项是入门/初级岗位最常用的能力组合。仓库中英文版课程为每个主题准备了独立文档:1-containers.md、2-cicd.md、3-infrastructure-as-code.md、4-container-orchestration.md、5-monitoring.md,下文每个主题的操作细节均来自这些文档。

主题一:CI/CD 与 GitHub Actions——告别手动构建部署

在完成第 3 阶段后,你会遇到一个现实痛点:每次代码变更都要手动执行构建与推送命令,繁琐且容易出错。CI/CD(持续集成 / 持续部署)管线就是为了自动化这个过程:每次代码变更后自动完成构建、测试与部署。

常见的 CI/CD 工具有 Jenkins、GitHub Actions、GitLab CI 等,它们基于代码提交、Pull Request、定时事件等触发器自动执行任务并部署代码。课程推荐从 GitHub Actions 入手(配合仓库本身即托管在 GitHub 的工程实践,上手成本最低)。

基础 CI/CD 管线上手任务(针对上一阶段容器化的应用):

  1. 为你的容器化应用搭建一条基础 CI/CD 管线;
  2. 使用 GitHub Actions(或 Jenkins)自动完成:构建应用 → 运行测试 → 构建 Docker 镜像 → 推送镜像到容器仓库(如 DockerHub、AWS ECR、GCP GCR);
  3. 配置管线在代码提交到main分支时自动触发;
  4. 添加简单的通知机制,在部署成功或失败时提醒你。

可选进阶挑战:实现多环境部署管线——先部署到 staging 环境运行测试,通过后再提升(promote)到生产环境。

仓库本身就是一个持续交付的实例:根目录 Dockerfile 定义了开发、生产构建、多阶段服务的完整镜像流程,package.json 中的start、build、serve、deploy等 npm 脚本构成了站点构建与发布的基本工序,可以作为"把项目自动打包成可交付产物"的直观参照。

主题二:基础设施即代码(IaC)与 Terraform

IaC 允许你用代码而非手动点击控制台的方式来管理和供给基础设施,从而保证云资源管理的一致性、可重复性与可扩展性。Terraform 之所以流行,是因为它是**云平台无关(cloud-agnostic)**的——同一份配置可以部署到任意云厂商。

核心命令生命周期:

  • terraform init:初始化工作目录;
  • terraform plan:预览将要执行的变更;
  • terraform apply:真正创建资源;
  • terraform destroy:销毁资源、完成清理。

基础 IaC 上手项目:

  1. 在你的系统上安装 Terraform;
  2. 编写 Terraform 配置文件,实现以下任选目标:在偏好的云平台上创建一台虚拟机;配置安全组以允许 SSH 访问;或向所选云厂商部署一个静态站点;
  3. 依次执行terraform init→terraform plan→terraform apply完成部署;
  4. 在云平台控制台验证资源确实已创建;
  5. 最后执行terraform destroy清理资源。

可选进阶挑战:结合 GitHub Copilot 设计模块化 Terraform(复用第 2 阶段学到的 AI 协作能力):

  1. 将基础设施组织为可复用模块:VPC(公有/私有子网与路由)、Web 服务层(计算与负载均衡)、数据库层(托管数据库与备份配置)、安全层(安全组、IAM 角色、加密);
  2. 使用变量(variables)参数化配置;
  3. 创建模块输出(outputs)用于模块间通信;
  4. 实现后端状态(state)管理;
  5. 部署并验证资源,完成后销毁清理。

课程同时列出了若干自测问题供深入思考,例如:IaC 的收益是什么?Terraform 如何保证资源管理的幂等性?terraform state文件的用途?如何管理 API 密钥等敏感数据?plan与apply的区别?以及如何使用编码助手生成 IaC 模板、如何保证 AI 生成 IaC 的质量与安全——这些问题都指向"AI 辅助基础设施开发"这一现代 DevOps 实践。

主题三:Docker 容器化——从 Dockerfile 到镜像仓库

容器化是现代应用部署与管理的核心手段:它将软件、工具及其依赖打包成轻量、可移植的容器。相比虚拟机,容器在资源利用上更高效,并能在开发、测试、生产环境之间保持高度一致,同时简化部署与扩缩容,并提供应用间的隔离。

常见的容器化工具包括 Docker、Podman、containerd 等,课程以 Docker 为主线。

基础容器化项目 7 步走:

  1. 创建一个简单应用(或复用现有应用);
  2. 为应用编写 Dockerfile;
  3. 构建 Docker 镜像;
  4. 在本地运行容器并测试功能;
  5. 注册 DockerHub(或其他容器仓库)账号;
  6. 为镜像打标签(tag)并推送到仓库;
  7. 在另一台机器上拉取并运行镜像,验证可移植性。

容器仓库:需要理解镜像仓库(Container Registry)的概念,并至少实践一种主流仓库的推送流程:DockerHub、AWS ECR、Azure Container Registry、Google Container Registry。

仓库中的多阶段 Dockerfile 示例:本仓库根目录的 Dockerfile 就是一个完整的容器化范例,它展示了 Docusaurus 站点的多阶段构建策略:

# Stage 1: Base image. FROM node:lts as base ENV FORCE_COLOR=0 RUN corepack enable WORKDIR /opt/docusaurus # Stage 2a: Development mode. FROM base as dev EXPOSE 3000 CMD [ -d "node_modules" ] && npm run start --host 0.0.0.0 --poll 1000 || npm run install && npm run start --host 0.0.0.0 --poll 1000 # Stage 2b: Production build mode. FROM base as prod COPY . /opt/docusaurus/ RUN npm ci RUN npm run build # Stage 3a: Serve with `docusaurus serve`. FROM prod as serve EXPOSE 3000 CMD ["npm", "run", "serve", "--", "--host", "0.0.0.0", "--no-open"] # Stage 3b: Serve with Caddy. FROM caddy:2-alpine as caddy COPY --from=prod /opt/docusaurus/Caddyfile /etc/caddy/Caddyfile COPY --from=prod /opt/docusaurus/build /var/docusaurus

这个示例直观体现了容器化的几个关键实践:多阶段构建(base → dev/prod → serve/caddy,避免把构建工具链带进运行镜像)、环境变量控制输出(FORCE_COLOR=0让日志更易读)、npm ci保证依赖安装的可复现性,以及镜像间通过COPY --from只传递构建产物。学习时可以对照这份真实配置理解每一行指令的作用。

进阶任务:以容器方式本地运行 GitHub MCP Server(将容器能力与 AI 工具链结合):

  1. 确保已安装 Docker Desktop 与 GitHub Copilot;
  2. 在 Docker Desktop 中安装官方 GitHub MCP Server;
  3. 创建 GitHub Personal Access Token 并提供给服务器;
  4. 在 VSCode 命令面板中执行docker mcp gateway run启用 MCP Gateway;
  5. 在 GitHub Copilot 中启用 Agent 模式;
  6. 查询自己的仓库并执行 GitHub 操作,完成探索与测试。

常见问题排查:参考 Docker 官方常见问题与解决方案文档,以及 Dockerfile 最佳实践文档(关注层数、缓存利用、安全扫描等主题)。

主题四:Kubernetes 容器编排——从 Pod 到 Service

学会单机容器化之后,自然要面对"如何编排大量容器"的问题,这正是 Kubernetes(常简称 K8s)的用武之地:它是开源容器编排平台,自动化容器的部署、扩缩容与管理,广泛应用于云原生环境,保证应用的高可用、可扩展与韧性。

为什么需要 Kubernetes?当应用复杂度上升后,手动管理容器变得困难,K8s 提供:

  • 自动化部署与扩缩容:基于资源用量或自定义指标自动部署、扩缩容器;
  • 自愈能力:重启失败容器、替换无响应容器、在健康节点上重新调度容器;
  • 负载均衡:在容器间分发流量以保证高可用;
  • 服务发现:自动为服务分配 DNS 名称与 IP;
  • 声明式配置:用 YAML/JSON 清单定义应用的期望状态。

核心概念:

  1. 集群(Cluster):由管理集群并调度工作负载的Master 节点与运行容器化应用的Worker 节点组成;
  2. Pod:Kubernetes 中最小的可部署单元,可包含一个或多个容器,共享存储、网络与单一 IP;
  3. Service:将应用暴露到网络,常见类型有ClusterIP(集群内访问)、NodePort(在每个节点的特定端口暴露)、LoadBalancer(对接云厂商实现外部暴露);
  4. Deployment:声明式管理应用的期望状态,处理滚动更新、回滚与扩缩容;
  5. ConfigMap 与 Secret:分别以键值对形式存储配置数据与密码/API 密钥等敏感数据。

本地与云端环境:本地开发可用 Minikube(单节点集群)或 Kind(在 Docker 容器中运行集群);云端则推荐托管服务:AWS EKS、Azure AKS、Google GKE(课程还提供了一个用 Terraform 在 Azure AKS 上搭建最小 K8s 集群的视频示例,与主题二形成联动)。

常用命令:

# 查看集群信息 kubectl cluster-info # 列出集群中所有节点 kubectl get nodes # 部署应用 kubectl apply -f deployment.yaml # 查看运行中的 Pod kubectl get pods # 查看 Pod 日志 kubectl logs <pod-name> # 删除资源 kubectl delete -f deployment.yaml

上手练习:安装 Minikube 或 Kind 后,用下面这份 YAML 创建 Deployment(2 个 nginx 副本):

apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80

然后依次执行:

kubectl apply -f deployment.yaml kubectl get pods kubectl expose deployment nginx-deployment --type=NodePort --port=80

最后在浏览器中通过 NodePort 访问应用。思考题包括:Pod 与容器的区别、kubectl apply与kubectl create的区别、如何扩缩容 Deployment、托管 K8s 服务的收益等。

主题五:监控与可观测性——Prometheus、Grafana 与 AI Agent

监控与可观测性是理解应用与基础设施健康、性能和可靠性的关键实践,尤其对分布式、动态、跨多服务运行的云原生应用至关重要:它们能帮助快速发现问题、缩短停机时间,为系统健康与用户体验提供可见性,支撑主动告警与排障,并通过识别瓶颈与故障支撑可扩展性与可靠性。

核心概念:

  • Metrics(指标):关于系统的量化数据(CPU、内存、请求量等);
  • Alerting(告警):基于指标阈值的自动化通知;
  • Dashboards(仪表盘):指标的图形化展示,便于快速洞察;
  • Instrumentation(插桩):通过代码或 exporter 暴露指标。

上手任务 1:搭建 Prometheus。创建最小配置prometheus.yml:

global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']

用 Docker 安装 Prometheus:

docker run \ -p 9090:9090 \ -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus

之后按需把应用的指标端点加入static_configs。

上手任务 2:搭建 Grafana:

docker run -d --name=grafana -p 3000:3000 grafana/grafana

访问http://localhost:3000(默认账号密码均为admin),添加 Prometheus 数据源(URL 填http://host.docker.internal:9090或http://localhost:9090),也可按需接入云厂商指标(如 AWS CloudWatch、Azure Monitor)。

上手任务 3:创建仪表盘。新建仪表盘并用 PromQL 查询添加面板(如up、http_requests_total),可视化应用或基础设施指标。

上手任务 4:为示例应用插桩。Node.js 应用可用prom-client暴露指标,Python 应用可用prometheus_client,随后把指标端点加入 Prometheus 配置并在 Grafana 中可视化。

上手任务 5:用 n8n 构建 AI Agent 实现自动化告警响应——这是本主题的亮点,把监控与 AI 代理工作流结合:

docker run -d -p 5678:5678 --name n8n n8nio/n8n:latest

访问http://localhost:5678创建账号登录后,按以下步骤构建 Agent:

  1. 创建 Schedule 触发器(例如每 1–2 分钟);
  2. 查询 Prometheus API 获取特定指标;
  3. 添加 If 节点,判断指标是否超过阈值;
  4. 调用 LLM 分析异常,给出根因与修复建议;
  5. 通过邮件或 Slack 发送分析结果;
  6. (可选)添加自动修复步骤。

测试:故意向被监控应用施压(制造高流量或错误),验证 Agent 能否检测异常、分析根因并采取行动。

AI Agent 之所以能增强监控体系,是因为它能够:在无人工延迟的情况下即时响应告警;自动分析日志与指标定位根因;独立执行修复动作(重启服务、扩缩资源、回滚部署);从事件中学习改进后续响应;把团队从重复排障中解放出来,聚焦长期可靠性。

阶段验收:结束时你必须掌握的能力

课程为本阶段设定了明确的能力验收标准:

  • 能够解释每一项 DevOps 实践:它们为什么重要、各自做什么、每项实践最流行的工具有哪些;
  • 在 GitHub 上拥有个人项目,且至少 2 个项目满足以下要求:
    • 配置了 CI/CD 管线;
    • 每个项目都有 IaC 文件;
    • 每个项目都实现了监控,并能读懂日志与指标数据;
    • 当项目出问题时,知道如何排查解决。

进阶路线:值得关注的 DevOps 认证

课程为想继续深入的学习者推荐了两条认证方向(此处仅列名称,供检索对照):

  • AWS Certified DevOps Engineer – Professional;
  • Microsoft Certified: DevOps Engineer Expert。

如何自测:把 AI 当成面试官

课程建议用 AI 助手(如 ChatGPT、Claude、Google Gemini)检验理解程度:让它扮演面试官,一次问一个问题、不立即给答案、针对回答给出反馈并引导修正,每个答案后补充真实案例。可以这样开场:

I'm learning about containers and Docker. I'd like you to act as an interviewer: - Ask me questions one at a time about containerization concepts - Don't provide the answers immediately - Give me feedback on my responses - If I'm incorrect, guide me toward the right answer - Share relevant real-world examples after each answer Can we start?

小技巧:把上下文告诉 AI,例如"我正在用 Docker 容器化一个 Node.js 应用,请围绕这个场景提问",能让提问更贴近实战。仓库英文版各主题文档(1-containers.md、2-cicd.md、3-infrastructure-as-code.md、4-container-orchestration.md、5-monitoring.md)都附带了完整的自测问题清单与主题完成清单,建议逐项对照打勾。

结语

learn-to-cloud 第 4 阶段以"DevOps 是一种文化"为起点,用 5 周时间串起 CI/CD、IaC、容器化、容器编排与监控五大实践,并以"每个项目都要有管线、IaC 和监控"作为硬性验收标准,确保学习者不只"知道"而是真正"做到"。完成本阶段后,你便可以带着这套自动化、可观测的工程能力进入第 5 阶段——云安全(Securing Your Cloud Applications),把安全实践嵌入到你已构建的 DevOps 体系中。

  • 教程
  • 云原生

【免费下载链接】learn-to-cloud

A courseware built on the belief that anyone can learn foundational cloud engineering skills with the right guide and discipline

项目地址:https://gitcode.com/gh_mirrors/le/learn-to-cloud
点击查看免费下载

相关推荐

上一篇:9Router 故障排除完全指南:配额、认证、连接与性能问题的系统化排查手册
下一篇:qwen-code 聊天记录离线投影:从 Append-only JSONL 到 DaemonTranscriptBlock 的共享回放内核

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/12 7:27:41

DEAP脑电信号识别实战:CNN-LSTM代码详解与避坑指南

简介&#xff1a;面向DEAP脑电情感识别任务的深度学习代码包&#xff0c;提供结合CNN与LSTM的完整训练、验证与预测流程&#xff0c;适合需要基于脑电信号进行情绪分类的研究者、学生或工程师参考。压缩包共35个文件、约11.86MB&#xff0c;结构涵盖Jupyter Notebook实验脚本&a…

作者头像 李华
网站建设 2026/10/12 7:27:14

Python字典操作全解析:从创建、更新到排序与defaultdict实战

1. 字典基础操作与创建方式全解析字典这个结构&#xff0c;在Python里属于那种“平时不觉得多重要&#xff0c;一旦用顺手了就再也回不去”的工具。我刚开始写代码那会儿&#xff0c;习惯用两个列表分别存键和值&#xff0c;靠下标去对应&#xff0c;结果每次增删改查都要同步维…

作者头像 李华
网站建设 2026/10/12 7:27:14

nginx常见功能部署与配置解析

一.安装部署nginx nginx官网 https://nginx.org/en/download.html 1.安装编译依赖 # centos yum install -y gcc gcc-c make zlib zlib-devel pcre pcre-devel openssl openssl-devel2.下载并解压压缩包 wget http://nginx.org/download/nginx-1.30.5.tar.gz tar -zxvf ng…

作者头像 李华
网站建设 2026/10/12 7:24:17

多商户商城系统源码怎么实现三端复用?从选型到避坑全程指南

上周有个朋友拿着已经买好的多商户商城系统源码来问我&#xff1a;我就想让它同时跑在APP、小程序、H5上&#xff0c;这事到底靠不靠谱&#xff1f;我的回复是&#xff1a;靠谱&#xff0c;但它跟“一份代码复制三份”完全是两码事。这篇文章就围绕多商户商城系统源码怎么完成三…

作者头像 李华
网站建设 2026/10/12 7:21:30

JVM垃圾回收算法与收集器全解析:从Minor GC到ZGC

1. 为什么说算法是地基、收集器是算法的“工程实现”先聊点实际的。我见过不少工程师把 GC 调优当成“玄学”&#xff0c;一问到什么 Minor GC、Full GC&#xff0c;能背出概念&#xff0c;但一旦线上频繁 Full GC&#xff0c;就只会把堆调大&#xff0c;或者换个收集器试试运气…

作者头像 李华
网站建设 2026/10/12 7:21:28

Qwen3.8-27B部署实战:量化策略与硬件协同优化指南

1. 为什么“部署Qwen3.8-27B”这件事&#xff0c;现在突然变得既迫切又棘手最近两周&#xff0c;我连续接到三类不同背景的咨询&#xff1a;某高校自然语言处理方向的硕士生A同学&#xff0c;在复现一篇新论文时发现&#xff0c;原作者用的是Qwen3.8-27B做指令微调基座&#xf…

作者头像 李华