【问题标题】:How to access helm programmatically如何以编程方式访问 helm
【发布时间】:2020-05-05 02:27:12
【问题描述】:

我想以编程方式访问集群部署的 Helm 图表,以制作允许手动图表操作的 Web 界面。

我找到了pyhelm,但它只支持 Helm 2。我查看了 npm,但那里什么也没有。我写了一个 bash 脚本,但如果我尝试使用它的输出,我得到的只是一个字符串,所以它并不是很有用。

【问题讨论】:

  • 您的意思是在图表存储库或已部署的应用程序中编辑图表?
  • 对不起 - 我的意思是“在部署的应用程序中”。实际上,我想获取已部署内容的列表并将其显示在网站上。稍后,添加删除按钮,删除集群上安装的应用程序。

标签: kubernetes google-cloud-platform kubernetes-helm


【解决方案1】:

我想以编程方式访问集群部署的 Helm 图表,以制作允许手动图表操作的 Web 界面。

Helm 3 is different 与以前的版本相比,它是一个仅限客户端工具,类似于例如Kustomize。这意味着 helm 图表 仅存在于客户端(和图表存储库中),但随后在部署期间转换kubernetes 清单。所以集群中只存在 Kubernetes 对象

Kubernetes API 是一个 REST API,因此您可以使用 http 客户端访问和获取 Kubernetes 对象。 Kubernetes 对象清单以 JSON 和 Yaml 格式提供。

【讨论】:

  • 感谢您的回答。这是否意味着我可以做一些看起来像kubectl get helm applications 的事情?本质上,我想获得一个与helm list 提供的相同的 json,但使用 go、python、dart 或任何其他语言。
  • 要列出您使用kubectl get deployments 的应用程序并列出您可以使用kubectl get replicasets 的修订版,您还可以使用labelsselectors 进行过滤子集。这一切都取决于你真正想做什么。
【解决方案2】:

如果您可以使用 Go,那么您可以使用 Helm 3 Go API

如果你想使用 Python,我想你必须等待 pyhelm 的 Helm v3 支持,已经有 an issue 解决了这个问题。

【讨论】:

  • 您能否提供一个如何安装它的示例以及任何使用示例?我以前从未使用过 Go lang,出于某种原因,任何使用 go get xxx 的尝试都失败了。我不知道为什么:/
  • 如果你根本不懂 Go,我想最好是 helm 支持 Helm v3 的 pyhelm 或者你使用 Helm CLI 和“-o json”并在你的 Python webapp 中解析输出
  • Python 仅支持 helm 2。我确实设法使用 -o json 获取数据,但这样我无法为应用程序提供访问密钥,这意味着应用程序与环境紧密耦合它正在运行。我在 go 页面上做了一个指南,并设法安装了各种包——不是用于 helm 的包......不确定我应该安装什么。任何指针将不胜感激。谢谢
  • @Adam 已经一年了,这里是 Helm Go SDK 的使用示例:helm.sh/docs/topics/advanced/#go-sdk
【解决方案3】:

实现这一点,因为我们还需要一个 npm 包来以编程方式部署 helm3 图表(带有 gui 的白标签应用程序来管理实例)。

我唯一能找到的是微软为 helm v2 https://github.com/microsoft/helm-web-api/tree/master/on-demand-micro-services-deployment-k8s987654321@ 停产的旧软件包

我不认为使用 k8s API 会起作用,因为某些图表在 k8s 资源方面可能会变得相当复杂,所以我得到了一些灵​​感,我想我会开发自己的包作为 helm cli 命令的包装器,使用 @ 987654322@ 参数,用于更轻松地处理 CLI 输出

【讨论】:

    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    相关资源
    最近更新 更多