FDE Times 数据在招 FDE 职位 862▼55 近 7 天在招职位数的变化(同口径比较):不计入本周新开始追踪的公司的职位近 7 天新增 70在招公司 180支持远程 24%美国薪资中位数 $200k招聘最多 Palantir 95
ENVI

前线部署工程师(FDE)的专业媒体

书籍与课程

这本 22 章的 Kubernetes 书,FDE 别从第一页读

重点读第 9、10、12、13、14 章,再用配套示例仓库亲手跑一遍每个清单。

封面: Kubernetes: Up and Running
Kubernetes: Up and Running · Brendan Burns · 封面图片:Open Library
分享微博

要点速览

  • 第三版共 328 页,22 章外加附录 A,电子书于 2022 年 8 月 2 日推出
  • 对 FDE 来说,先读第 9、10、12、13、14 章,从 ReplicaSet 一直到 RBAC
  • 在 RBAC 中,update 和 patch 是两项独立权限:缺了 patch,Role 可能恰好挡住它本该放行的发布
一排 22 个圆点代表《Kubernetes: Up and Running》的 22 章。第 9、10、12、13 章(ReplicaSet、Deployment、Job、ConfigMap)标为蓝色;第 14 章 RBAC 标为橙色,并注明:第一次会议前读。第 1–8 章标注为已会基本使用 Kubernetes 可跳过,第 15–22 章标注为客户需要时再翻开。
对 FDE 来说,这本书真正的价值在第 9 至 14 章,其中讲 RBAC 的第 14 章应在第一次客户会议前读完。来源:《Kubernetes: Up and Running》第三版目录(O'Reilly)。

设想你在一家大型企业客户的第一周。对方不会给你集群管理员权限,只给你一个命名空间,然后只问一个问题:你的应用需要哪些权限,为什么?

要答好这个问题,你得从内部理解 Kubernetes。《Kubernetes: Up and Running》专门有一章讲的正是这件事。这本书由 O’Reilly 出版,第三版电子书于 2022 年 8 月 2 日推出,共 328 页,作者为 Brendan Burns、Joe Beda 和 Kelsey Hightower;部分发行渠道还列出了 Lachlan Evenson。

书的简介开篇就说,Kubernetes 彻底改变了开发者和运维人员在云上构建、部署和维护应用的方式。这正是前线部署工程师(FDE)的日常:把软件交付到别人的基础设施上。

但这本书有 22 章外加附录 A,从头读到尾,最容易半途而废。更好的读法,是按你在客户现场会遇到的问题顺序来读。

直接跳到第 9 章,一直读到第 13 章

如果你已经会基本使用 Kubernetes,就别从第一页开始。这本书的价值在中段:第 9 章讲 ReplicaSet,第 10 章讲 Deployment,第 12 章讲 Job,第 13 章合讲 ConfigMap 和 Secret。DaemonSet、Job、ConfigMap、Secret 这类专用对象,本就是书中明确列出的主要学习目标。

精读这几章的理由很实际。应用在客户集群里起不来时,你要逐个排查的正是这些对象:Deployment 发布成功了吗?ReplicaSet 的 Pod 数量够不够?配置有没有从 ConfigMap 加载进来?

不要只读。官方示例仓库 kubernetes-up-and-running/examples 采用 Apache-2.0 许可,文件按章节编号命名,例如 5-1-kuard-pod.yaml。README 没有说明仓库对应哪一版,所以当清单和书页内容不一致时,把它当成一次调试练习,而不是放弃的理由。

书中的演示应用叫 kuard。它自带一个生成 4096 位 RSA 密钥的合成负载,用来模拟批处理 worker;一个带 REST API 的内存队列;版本用颜色命名,而不是数字。这样不用自己写应用,就能直接练发布、批处理任务和工作队列。

一个具体练习:用 Deployment 部署 kuard,切换到另一个颜色版本观察发布过程,再删掉一个 Pod,看 ReplicaSet 把它重建出来。接着把密钥生成负载作为 Job 运行,并把配置移到 ConfigMap 里。一个小练习就覆盖了四章(9、10、12、13)。

RBAC 是你拿来谈判的那一章

第 14 章《Role-Based Access Control for Kubernetes》是 FDE 应该在第一次会议前读完的一章,因为它回答的正是开头那个问题。

两种申请权限的方式,会带来截然不同的对话。为了“省事”直接要 cluster-admin,往往会让安全团队犹豫,因为他们看不出你会拿这么大的权限做什么。另一种做法是发过去一个只在分配给你的命名空间内生效的 Role,并为每组权限附上一句理由。

最容易出错的细节是动词。Kubernetes 文档把 HTTP PUT 对应到 update 动词,把 HTTP PATCH 对应到另一个独立动词 patch,所以有 update 不代表能 patch。Server-Side Apply 发出的请求是 PATCH。因此,缺少 patch 的 Role 可能恰好挡住它本该放行的发布。

以上面的 kuard 应用为例,假设它运行在名为 kuard-demo 的命名空间里:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: kuard-deployer
  namespace: kuard-demo
rules:
  # 自行发布 kuard 新版本(server-side apply 发送的是 PATCH,所以也需要 patch)
  - apiGroups: ["apps"]
    resources: ["deployments"]
    verbs: ["get", "list", "create", "update", "patch"]
  # 运行并清理 RSA 密钥生成 Job
  - apiGroups: ["batch"]
    resources: ["jobs"]
    verbs: ["create", "delete", "get", "list"]
  # 调试时查看 Pod 状态
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "list"]
  # 修改应用配置
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["get", "update", "patch"]

这个 Role 还没有绑定到任何人,你还需要一个 RoleBinding,指向将使用它的账号。发出之前,先在本地集群上用这个 Role 原样测一遍:在自己机器上被拒绝的 apply,代价远小于在客户演示时被拒绝。

这样的申请能给安全团队足够的信息做决定,也表明你理解他们的系统。信任就从这份申请开始。第 14 章之后的章节和附录 A 可以先放一放,等客户系统真正涉及这些主题时再翻开。

把章节变成简历上的一行

如果你的目标是 FDE 岗位,别止步于读完这本书。把每一章的产出都保存在一个仓库里:kuard 的清单、密钥生成 Job、ConfigMap,以及限定在命名空间内、每个动词都附有理由的 Role。

在简历上用一行写清你做了什么,例如:将带批处理 worker 的应用部署到 Kubernetes,在单一命名空间内仅使用最小 RBAC 权限。这样一行字会引导面试官深挖,比如问你为什么 update 之外还需要 patch,而你正好有现成的仓库可以展示。

这本书已经出版好几年了。但第 14 章里的那个问题,每个客户迟早都会问你。

这篇文章对你有帮助吗?

6 个信源
路线图上的下一篇 · 阶段 2: 全栈工程能力Maarek 的 27 小时 AWS 课程,FDE 该先学哪部分安全在 SAA-C03 考试中占 30% 的分数,也是到客户那里要过的第一关。