“我们的工程师必须承受维护和开发整套技术栈的负担,这占用了他们开发工作的大量时间和精力。”Ott在KubeCon & CloudNativeCon欧洲站上这句话,简直戳中了每个被工具链五花八门、生命周期各异的云部署折磨过的开发者。

现代云部署到底有多碎?写个应用要学CI/CD流水线,配个数据库要记住不同厂商的CLI参数,管密钥要看各家凭证轮换策略,连改个网络策略都可能要在控制台点点点。Ott在演讲里直接开列清单:应用部署、数据库创建与配置、安全密钥管理、内部与外部供应商的一大堆服务集成,每个环节都绑着一套自己的使用模式和生命周期,工程师不是在搞业务,而是在工具丛林里当导航员。

打开网易新闻 查看精彩图片

更让人抓狂的是,每次推新版本,都得在这条拼接式工具链上从头到尾验证一轮,生怕哪个环节悄悄改了控制台交互或者到期凭证没刷新。Ott对此也没有委婉:“推出新软件时,我们必须在整条复杂工具链上确认一切正常。”这不是在做软件发布,是在做全栈巡检。

面对这个烂摊子,Techritz他们没打算再造第十一种编排工具。相反,他们干了件看似偷懒实则极聪明的事:一头扎进开源生态,把Kubernetes控制平面当作所有云资源的统一声明式入口。说白了,你只管告诉控制平面“我要什么状态的数据库、存储桶、网络策略”,剩下的让Kubernetes里的控制器去跟各家公有云API持续调停、创建、更新或删除资源。不用再去记AWS、GCP、Azure各自的命令行拼写,更不用在工单系统里跟运维掰扯谁该点哪个按钮。

清单式拆一下他们工具箱里已经拿出来现成的东西:

  • Crossplane — 专门用来在控制平面上声明式管理GCP数据库、AWS存储桶、Azure网络策略,让云资源的期望状态直接通过YAML落地,控制器负责跟云商API死磕;
  • External Secrets Operator — 密钥和凭证在不同系统间自动同步、轮换,不再是几个人肉传密码或者硬编码在配置文件里;
  • Kyverno — 用自定义策略确保每项操作都符合公司安全合规要求,不用靠口口相传的规范文档;
  • Flux — 所有配置文件塞进Git仓库,用GitOps玩法的版本控制和审计,改动有迹可循,出事了回滚就好。

Techritz在分享时特别强调,这些工具没有一个需要从头开发,全部来自现有开源项目