系列介绍:初探云原生应用管理系列是介绍如何用云原生技术来构建、测试、部署、和管理应用的内容专辑。做这个系列的初衷是为了推广云原生应用管理的最佳实践,以及传播开源标准和知识。通过这个系列,希望帮助大家学到 Kubernetes、Helm、Gitops、Kustomize 等新知识。
这是大厂程序员小张普普通通的一个早晨,大家好像在讨论着什么:
“什么?听说隔壁公司在用 K8s 发布应用了?”
“据说在用 Helm !”
像往常,小张根本不关心这些无聊的讨论。他稳稳的坐在办公桌前,打开公司内部自研的、魔改 Gitlab 打造的项目管理系统,点击了好几个 Button 之后,开始一天辛勤的劳作。
但这一次不知道为何,小张的内心居然有点慌:
“ Helm?啥是 Helm ?”
Helm: K8s 应用部署与打包工具
如果一个用户想要部署起来一个K8s 应用,最快捷的方法是什么呢?
我们知道,Kubernetes (简称 k8s ) 是一个能够部署和管理容器的平台。然而,在 k8s 里还没有抽象到“应用”这一层概念。一个应用往往由多个 k8s 资源 ( Deployment、Service、ConfigMap )组成。所以,我们需要一个工具在 k8s 之上来部署和管理一个应用所包含的资源( K8s API Resource ),这就是 Helm 所做的事情。
除此以外,Helm 定义了一套 Chart 格式来描述一个应用。怎么理解 Chart 呢?打个比方,一个安卓程序打包成 APK 格式,就可以安装到任意一台运行安卓系统的手机上。如果我们把 k8s 比做安卓系统,K8s 应用比做安卓程序,那么 Chart 就可以比做 APK。这也意味着,K8s 应用只要打包成 Chart ,就可以通过 Helm 部署到任意一个 k8s 集群上。
通常来说,我们可以直接使用别人已经做好的 Helm Chart ,就跟使用 Docker 镜像一样。所以,Helm 社区已经维护了一个官方 Helm Hub,这个 Hub 里包含的应用非常丰富,是目前云原生开发者搜索和下载应用的主要站点。
AppHub: Helm Hub 的中国小站
不过,遗憾的是,在国内使用 Helm Hub,对于绝大多数开发者来说都是很痛苦的一件事情。
原因很简单,随便打开一个 Charts 文件,你就会看到这个文件里充斥着大量的不可访问的镜像 URL :
或者是依赖根本访问不到的 Charts 库: