通过API部署舵图的代码示例?

2024-06-07 08:41:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  1. 我的公司有一些用AWS codepipline/CodeBuild/CodeDeploy编写的现有管道。他们不喜欢花更多的时间重写所有的管道。在
  2. 我的公司没有计划维护额外的实例,只是为了部署。在
  3. AWS代码管道可以触发Lambda,理论上,如果Helm提供Python客户端,我可以编写一些Python代码来完成这项工作。在

现在我从这里偷了Lambda函数:

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

然而,这并没有提供与Helm相同的级别特性。我们必须提供我们的发布名系统,模板系统等。换句话说,如果我在清单上有很大的变化,它的功能就很差,并且不能处理第一次部署(意味着将清单部署到空的K8S集群中),我们也使用Github,尽管不是真正相关的。在

对于helmchart的python客户机,我能找到的最好的是pip上列出的pyhelm。但它没有用于调用部署的示例代码,而且从一些用户组/论坛反馈来看,安装过程非常痛苦。有人还提到了azure/draft和另一个回购,但我不知道如何给出一个仅使用Python部署Helm图表的可靠示例。在

请告诉我我想念的地方。谢谢。在


Tags: lambda代码aws示例cli管道系统部署
2条回答

我建议用official python client来表示库伯内特斯而不是赫尔姆。它要求您自己编写部署、服务、持久卷等,但它比任何其他方法都要快。请记住,要通过客户端进行更改,您必须解决如何进行群集身份验证,但是在repo中有几个示例。我对AWS Lambda的了解还不够,无法提供任何关于如何/如果它会工作的信息。在

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

你可以找到我的pyhelm之叉和Python3支持。在

git clone git@github.com:andriisoldatenko/pyhelm.git
cd pyhelm && python setup.py install

如何使用Pyhelm

首先,您需要repo\u url和图表名称才能下载chart

^{pr2}$

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

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/

下一步是构建ChartBuilder实例以使用Tiller进行操作::

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"

安装图表::

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 {....
}

相关问题 更多 >

    热门问题