Kubernetes 项目社区成员。2015 年参与编写《Docker 容器与容器云》技术书籍。曾任职于七牛,参与过时序数据库、流式计算、日志平台等项目相关应用上云过程。
问题背景:阿里巴巴容器平台团队担负着阿里内部各种应用的云原生化工作,同时也需要解决一系列云上配置、部署、扩缩容、安全等复杂问题。在这个规模化的场景中,面对成千上万个散落在不同团队、不同开发机上的 YAML 文件,我们平常所熟知的 Kubernetes 声明式 API 和声明式应用管理机制是否依然适用?像 Helm 这样的项目是否能帮助我们解决大量应用的配置与管理问题?
解决方案:阿里巴巴为了能够解决规模化场景中 Kubernetes 应用管理与维护的复杂性问题,围绕着 Kubernetes API 构建了一套对应用进行标准化描述、定制、自动化管理的完整的云原生应用管理技术体系。这个方案的特点包括:
原生围绕 Kubernetes 的声明式 API 构建,不做 PaaS,不封装 API;
应用具备互联网场景下的、一定程度的自运维与自愈能力;
方便用户进行 PATCH 化的应用定制;
不同应用要有统一的、标准化的定义方式;
整套流程能够无缝与周边生态能力,包括安全、监控、CI/CD、 GitOps 等。
方案介绍:利用 Helm Charts 进行标准化的应用描述, 将海量 YAML 文件托管于云原生应用中心(App Hub);使用 Overlay 的方式进行 YAML 文件 PATCH 化定制,实现 YAML 文件复用、Rebase 与变更追踪;使用 Kubernetes 自动化工具 Kruise 代替社区 Deployment 进行阿里内部的应用管理,插件化的实现“原地升级”等互联网场景中的重要需求。
实施后效果说明:阿里规模化场景下的应用管理紧紧有条,大幅提高了开发效率和软件质量。