PlatformRelay/Kubernetes-Workshop
GitHub: PlatformRelay/Kubernetes-Workshop
一个厂商中立、包含28个模块的开源 Kubernetes 实践工作坊,通过三天课程和配套实操实验帮助初阶到中阶工程师从零掌握集群的编写、运行和维护。
Stars: 0 | Forks: 0
# Kubernetes 实践工作坊
一个开源、厂商中立、为期 3 天的初阶到中阶 Kubernetes 工作坊:
包含一个 [Slidev](https://sli.dev) 幻灯片组以及独立且基于 Markdown 格式的实操实验,
大约 **50% 的演示和 50% 的实践**。它引导学习者从“什么是
容器”到“什么是集群”,最终能够自信地编写、运行和维护
核心的 Kubernetes 工作负载。
**立即预览:** 幻灯片已在 GitHub Pages 上线,并且每个版本都会附带 PDF 文件。
- **在线幻灯片(完整超集):**
- **在线幻灯片(标准 3 天版):**
- **模板库:**
- **PDF 导出:** [最新发布](https://github.com/PlatformRelay/Kubernetes-Workshop/releases)
— [完整幻灯片 PDF](https://github.com/PlatformRelay/Kubernetes-Workshop/releases/download/v0.1.0/kubernetes-workshop-full-v0.1.0.pdf)
· [3 天版 PDF](https://github.com/PlatformRelay/Kubernetes-Workshop/releases/download/v0.1.0/kubernetes-workshop-3day-v0.1.0.pdf)

真实幻灯片,非手工截图:每次 CI 运行都会从幻灯片
源文件重新渲染此导览,以证明其可复现性;提交的副本使用相同的
命令(`pnpm showcase:gif`)进行刷新。静态预览帧位于
[`docs/images/deck-preview.png`](docs/images/deck-preview.png)。
## 目标受众与前置条件
**级别:初阶到中阶** —— 而非纯初学者。课程弧线从容器
基础一直延伸到 operator、GitOps 和 Pod 逃逸加固。假设的前置条件,
会在开头说明并在实验中加以巩固:
- 一个你习惯使用的 shell,以及基本的 **Git** 知识。
- 基本的 **YAML**、基本的 **HTTP** 以及基本的**容器**词汇。
- 两种实验环境之一:共享集群上的**分配命名空间**,**或者**
本地的 **kind** 集群。有关所需的具体工具,请参阅 [`labs/README.md`](./labs/README.md)。
这两个容器章节(S01/S02)完全在本地运行,无需集群,并为
任何刚接触容器的人提供了一条**入门通道**。
**最终,学习者将能够:** 构建和保护容器镜像;解释控制平面和调谐;
编写并维护核心工作负载资源(Pod →
Deployment → Service → Ingress → Gateway API);注入配置和存储;设置资源
限制和健康探针;通过 NetworkPolicy 和 RBAC 加固 Pod 并进行隔离;
使用 Helm 和 GitOps 交付应用;并在实际场景中解读 operator 模式 —
作为设计检查,这些内容映射到了 CKA/CKAD 领域(备考认证并非其组织原则)。
## 课程概述
本工作坊的内容被编写为**包含 28 个章节的超集**(`S00`–`S27`),并
**在每次交付时,通过开启或关闭特定章节,将其精简为标准的 3 天版本**。
其主干是一条**核心资源的红线** —— 即一个应用逐步演进的过程:
每一个后续主题(配置、存储、健康、安全、交付、可观测性)都挂载在
同一个运行中的应用上。大致按天划分如下:
| 天数 | 主题 | 章节 |
| --- | --- | --- |
| **Day 1** | 基础、容器和核心红线 | `S00`–`S08` |
| **Day 2** | 现代路由与工作负载的良好运行 | `S09`–`S16` |
| **Day 3** | 安全、交付、operator、最佳实践 | `S17`–`S27` |
完整的章节图谱 — 层级(`core` / `recommended` / `optional`)、每个章节的耗时、
精确的 3 天版本以及 CKA/CKAD 的对应关系 — 都位于教学大纲中。它是日程安排的
唯一事实来源;此概述仅对其进行总结。
**→ [完整教学大纲与章节图谱](docs/syllabus.md)**
## 状态
**28 个章节中有 26 个已完全编写完毕** — 包含完整的概念幻灯片以及
独立、可直接复制粘贴的实验(`S00`–`S23`,`S25`,`S26`)。有两个章节有所不同,这
均是设计使然,且在教学大纲和讲师指南中都一致地进行了标注:
- **`S27`(总结与后续步骤)** 是**纯幻灯片** — 这是一个开放式问答 / 后续步骤的
环节,没有实操实验。
- **`S24`(Operator 开发 / kubebuilder)** 是一个**推迟的占位章节** — 已列出大纲但尚未
完全编写;它需要 Go + kubebuilder 工具链,并将在后续的里程碑中推出。
幻灯片的设计系统 — 一个包含布局、组件和
代码注释模式的本地 Slidev 主题 — 位于 `theme/` 中,并在
[模板库](https://platformrelay.github.io/Kubernetes-Workshop/templates/)中以幻灯片逐张展示。
有关哪些内容已经过演练,哪些尚未演练,请参阅
[`docs/beta-limitations.md`](./docs/beta-limitations.md)。
## 选择你的路线
四种参与方式,取决于你来到这里的目的:
- **预览** — 无需任何设置即可阅读幻灯片:
[完整幻灯片](https://platformrelay.github.io/Kubernetes-Workshop/) ·
[3 天版本](https://platformrelay.github.io/Kubernetes-Workshop/3day/) ·
[PDF 发布版](https://github.com/PlatformRelay/Kubernetes-Workshop/releases)。
- **参与** — 进行实操实验:从
[参与者指南](./labs/README.md)开始,然后从头到尾执行
[`labs/day-1/00-setup.md`](./labs/day-1/00-setup.md)。在本地
集群上,[`docs/setup.md`](./docs/setup.md) 可以让你通过一条命令(`./workshop up`),从一台全新的笔记本电脑
搭建好一个可用于实验的 kind 集群。
- **指导** — 为全场听众运行工作坊:
[讲师指南](./docs/facilitator-guide.md)涵盖了环境设置、进度控制以及
每个实验的附加检查清单。
- **贡献** — 编写或扩展现有内容:规范与创作规则位于
[`AGENT.md`](./AGENT.md)。
## 开发
```
pnpm install
pnpm dev # superset deck (slides.md) at http://localhost:3030
pnpm dev:3day # canonical 3-day cut (slides-3day.md)
pnpm dev:templates # template gallery & animation spike
pnpm build # static build (build:3day / build:templates likewise)
pnpm export # PDF export (needs playwright-chromium)
pnpm render # export per-slide PNGs to dist-render/ (needs playwright-chromium)
pnpm showcase:gif # re-render the README's animated deck tour (docs/images/deck-showcase.gif)
pnpm lint # markdownlint the labs (lint:fix to auto-correct)
pnpm link-check # verify internal doc links & anchors (no placeholders)
```
## 目录结构
| 路径 | 用途 |
| --- | --- |
| `slides.md` | **超集根幻灯片** — 导入 `S00`–`S27` 的所有章节 |
| `slides-3day.md` | **标准 3 天版** — 相同的章节,部分带有 `hide: true` |
| `slides-templates.md` | 模板库与动画技术试验 |
| `pages/SNN-topic/` | 每个文件夹(`index.md`)包含一个独立且可切换的章节 |
| `labs/day-*/` | 独立的 Markdown 实验,每个已编写的章节对应一个 |
| `theme/` | **本地 Slidev 主题** — 主样式、布局和 UI 组件 |
| `components/` | 幻灯片级别的 Vue 组件(动画教学图表) |
| `global-bottom.vue` | 全局外观:页脚、页码、进度条 |
| `public/icons/` | 精选的 Kubernetes/CNCF 官方素材(见其 README) |
| `docs/decisions/` | 决策记录 |
切换功能:每个章节都通过根幻灯片中的单个 `src:` 块导入 —
在该块上设置 `hide: true` 即可从该版本中移除整个章节。新版本 =
新增一个 `slides-.md`,切勿复制章节。
## 持续集成与发布
三个 GitHub Actions 工作流(`.github/workflows/`):
| 工作流 | 触发器 | 作用 |
| --- | --- | --- |
| `ci.yml` | PR + push 到 `main` | 对实验进行 Lint,构建所有三个根幻灯片,并对门面文档进行链接检查 —— 幻灯片损坏、实验格式错误或内部死链都会导致检查失败。另一个单独的任务会从幻灯片源文件重新渲染 README 的展示 GIF(`pnpm showcase:gif`)并将其作为构件上传,从而保持动画预览的可复现性。 |
| `pages.yml` | push 到 `main`(+ 手动触发) | 将幻灯片构建为静态站点,并部署到 GitHub Pages 的 `/Kubernetes-Workshop/` 基础路径下。 |
| `release.yml` | tag `v*` | 将超集和 3 天版本的幻灯片导出为 PDF,并将它们(连同构建的站点)附加到 GitHub Release 中。 |
**发布新版本**(PDF 仅通过版本标签生成):
```
git tag v1.0.0
git push origin v1.0.0 # → Release "v1.0.0" with both PDFs attached
```
**在线站点** — 每次 push 到 `main` 都会发布:
- — 完整的超集幻灯片
- — 标准 3 天版本
- — 模板库
Pages 的基础路径包含了与仓库名称完全一致的大小写(`Kubernetes-Workshop`);小写的
基础路径被视为一个缺陷(参见 [`.github/workflows/pages.yml`](./.github/workflows/pages.yml))。
Markdown linting(`pnpm lint`,`markdownlint-cli2`)仅涵盖独立的
`labs/`。Slidev 幻灯片源文件已被排除:markdownlint 只解析
第一个 frontmatter 块,因此它会误读每个幻灯片页面的 `---` 分隔符 —
没有任何规则开关可以修复这个问题。参见 `.markdownlint-cli2.jsonc`。
链接检查(`pnpm link-check`)是一个小型的零依赖 Node 脚本
([`scripts/link-check.mjs`](./scripts/link-check.mjs)),它会在离线状态下验证四个门面
文档(此 README、教学大纲、讲师指南和实验 README):
任何缺失的内部目标文件、损坏的相对锚点或未解析的在线站点
URL 占位符都会导致验证失败。外部 URL 仅作为信息报告,绝不会作为 CI 的门禁。
贡献者规范与创作规则:[`AGENT.md`](./AGENT.md)。
标签:MITM代理, Slidev, 培训, 教程, 特征检测, 请求拦截, 防御加固