首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过API部署Helm图表的代码示例?

通过API部署Helm图表的代码示例?
EN

Stack Overflow用户
提问于 2018-03-16 01:20:31
回答 2查看 5.8K关注 0票数 1

我正在寻找任何没有通过CLI调用部署Helm图表的代码示例。这背后的原因是:

  1. 我的公司有两个现有的管道,用AWS CodePipeline / CodeBuild / CodeDeploy编写。他们不愿意花更多的时间重写所有管道。
  2. 我的公司没有为部署而维护额外实例的任何计划。
  3. AWS CodePipeline可以触发Lambda,理论上,如果Helm提供Python,我可以编写一些Python代码来完成这项工作。

目前,我从这里盗取Lambda函数:

https://github.com/aws-samples/aws-kube-codesuite

而这并不提供与Helm相同的级别特性。我们必须提供发布名系统、模板系统等等。换句话说,如果清单上有很大的更改,并且不处理第一次部署(意味着将清单部署到空的K8S集群),那么它的功能就很差。

对于Helm图表的python客户端,我能找到的最好的是pip上列出的pyhelm。但是它没有调用部署的示例代码,而且从某些用户组/论坛反馈来看,安装过程是痛苦的。有人还指出了蔚蓝/草稿和另一个回购,但我不知道如何得出一个只使用Python部署Helm图表的可靠示例。

请让我知道我错过的地方。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-03-31 17:45:35

您可以通过示例和Python3支持找到我的pyhelm分支。

代码语言:javascript
运行
复制
git clone git@github.com:andriisoldatenko/pyhelm.git
cd pyhelm && python setup.py install

如何使用Pyhelm

首先,您需要repo_url和图表名来下载图表

代码语言:javascript
运行
复制
from pyhelm.repo import from_repo

chart_path = chart_versions = from_repo('https://kubernetes-charts.storage.googleapis.com/', 'mariadb')

print(chart_path)
"/tmp/pyhelm-kibwtj8d/mongodb"

现在您可以看到mongodb的图表文件夹::

代码语言:javascript
运行
复制
In [3]: ls -la /tmp/pyhelm-kibwtj8d/mongodb
total 40
drwxr-xr-x  7 andrii  wheel   224 Mar 21 17:26 ./
drwx------  3 andrii  wheel    96 Mar 21 17:26 ../
-rwxr-xr-x  1 andrii  wheel     5 Jan  1  1970 .helmignore*
-rwxr-xr-x  1 andrii  wheel   261 Jan  1  1970 Chart.yaml*
-rwxr-xr-x  1 andrii  wheel  4394 Jan  1  1970 README.md*
drwxr-xr-x  8 andrii  wheel   256 Mar 21 17:26 templates/

下一步,构建要使用Tiller操作的ChartBuilder实例::

代码语言:javascript
运行
复制
from pyhelm.chartbuilder import ChartBuilder

chart = ChartBuilder({'name': 'mongodb', 'source': {'type': 'directory', 'location': '/tmp/pyhelm-kibwtj8d/mongodb'}})

# than we can get chart meta data etc
In [9]: chart.get_metadata()
Out[9]:
name: "mongodb"
version: "0.4.0"
description: "Chart for MongoDB"

安装图表::

代码语言:javascript
运行
复制
from pyhelm.chartbuilder import ChartBuilder
from pyhelm.tiller import Tiller

chart = ChartBuilder({'name': 'mongodb', 'source': {'type': 'directory', 'location': '/tmp/pyhelm-kibwtj8d/mongodb'}})
chart.install_release(chart.get_helm_chart(), dry_run=False, namespace='default')

Out[9]:
release {
  name: "fallacious-bronco"
  info {
    status {
      code: 6
    }
    first_deployed {
      seconds: 1521647335
      nanos: 746785000
    }
    last_deployed {
      seconds: 1521647335
      nanos: 746785000
    }
    Description: "Dry run complete"
  }
  chart {....
}
票数 3
EN

Stack Overflow用户

发布于 2018-03-18 03:18:20

我建议对Kubernetes而不是Helm使用官方python客户端。它要求您自己编写部署、服务、持久卷等,但它比任何其他方法都要快。请记住,您必须解决如何通过客户端进行集群身份验证才能进行更改,但回购中有几个示例。我对AWS的了解还不够,无法提供任何关于它如何/是否工作的信息。

Helm是一个很好的产品,但它面向命令行,而不是使用它的API,后者需要GRPC。当然,可以使用Helm文件和Python的GRPC客户端为Tiller创建Python库(Helm的API服务器),但似乎没有人构建一个在社区中找到了吸引力的Python库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49311795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档