有人可以向我解释一些 helm 的用例吗?

Pha*_*ate 7 kubernetes kubernetes-helm

我\xe2\x80\x99m目前使用kubernetes,我遇到了helm。\n让\xe2\x80\x99s说我不\xe2\x80\x99t喜欢\xe2\x80\x9cinfecting\xe2\x80\x9d的想法我的 kubernetes 集群有一个与我的应用程序无关的进程,但如果它有益的话,我很乐意接受它。

\n\n

所以我做了一些研究,但我仍然可以\xe2\x80\x99t找到任何我可以\xe2\x80\x99t通过使用我的yaml描述符和kubectl轻松完成的事情,所以现在我可以\xe2\x80\x99t找到一个用途,除了,也许,为了环保。

\n\n

例如(从我读过的指南中获取:

\n\n
    \n
  1. 您可以轻松安装应用程序,例如。helm install nginx \xe2\x80\x94> 我将 nginx 映像添加到我的部署描述符中,完成
  2. \n
  3. 存储库 -> 我有 docker 存储库(我从中提取图像)
  4. \n
  5. 如果发布失败,您可以轻松地进行回滚 -> 我只需将 kubernetes 描述符中的映像版本更改为前一个版本,简单
  6. \n
\n\n

让我困扰的是,在命令级别,我做了几乎相同的工作(helm update->kubectl apply)。 \n作为交换,我有很多样板文件,因为保留了 helm 想要的目录结构,我觉得缺少对普通部署描述符的控制...我缺少什么?

\n

小智 10

你的问题是完全可以理解的。对于小型和简单的部署来说,好处实际上并没有那么大。但是当某些东西的部署非常复杂时,Helm 会提供很大帮助。

假设您有几个团队为某家公司开发微服务。如果您可以制作一个适用于大多数微服务的图表,那么每个微服务的部署将仅因映像和所需资源而有所不同。通过这种方式,您可以获得标准化的部署,并且对所有开发人员来说都更容易。

另一个用例是部署需要大量移动部件的应用程序。例如,如果您想在 Kubernetes 上部署 Grafana 服务器,您可能至少需要一个 Deployment 和一个 Configmap,然后您需要一个与此部署匹配的服务。如果您想将其公开到互联网上,您也需要一个入口。

一个相对简单的应用程序需要 4 个不同的 YAML,您需要手动配置这些 YAML 并确保一切正确,而您可以做一个简单的操作helm install并重用某人(有时甚至是创建该应用程序的公司)已经进行的配置。

还有很多其他用例,但这两个是我认为最常见的用例。