第 1 / 23 篇

前言:把运维意图变成持续成立的事实

控制器最吸引人的地方,是让用户声明目标,再由软件持续修正现实。它最容易被低估的地方,也在这里:持续运行意味着任何一步都可能重复,任何读取都可能过时,删除和升级都必须跨越多个互不原子的写入。

本书围绕一个小而完整的项目展开:用户创建 GatewayInstance,Go 控制器创建 Deployment 和 Service,Envoy 返回声明的 HTTP 文本。我们故意让业务能力保持简单,把注意力放在对象身份、协调边界、状态真实性、冲突和恢复上。读者最终得到可以在真实 kind 集群执行的代码、原始测试流以及同源的 EPUB 和在线文章。

读者应已了解 Pod、Deployment、Service 和基础 Go 编程。本书不重讲容器入门,也不把安装命令排成运维百科。每章提出一个工程问题,沿同一条资源生命周期推导方案,再指出随书代码实际覆盖的边界。

实验是单 worker、单命名空间的教学控制器。它观察主资源,依靠周期复查发现子资源漂移;没有 leader election、复杂准入链、配置热更新、真实外部云 API 或 conversion webhook。Envoy 使用静态 direct-response,证明请求经过 Service 到达实际代理进程,不代表具备完整网关产品的认证、路由治理或吞吐能力。更新采用 Recreate,允许停机。

阅读时请同时打开 lab/controller.go 和 lab/integration_test.go。第一次可以只看状态转移和断言;第二次再核对重试闭包内的每一次读取。运行记录见下载区 validation.json;它记录执行环境、原始测试流哈希和精确场景,不能把绿色构建外推为生产高可用证明。

作者:Aias00。原创内容及教学代码保留所有权利;第三方软件依赖和官方引用各自适用原有许可。