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

Python 通过API部署舵图的代码示例?,python,amazon-web-services,kubernetes,kubernetes-helm,Python,Amazon Web Services,Kubernetes,Kubernetes Helm,我正在寻找任何不通过CLI调用部署Helm chart的代码示例。这背后的原因是: 我的公司使用AWS CodePipeline/CodeBuild/CodeDeploy编写了两个现有管道。他们不喜欢花更多的时间重新编写所有管道。 我的公司没有任何计划仅为部署而维护额外实例。 AWS CodePipeline可以触发Lambda,理论上,如果Helm提供Python客户端,我可以编写一些Python代码来完成这项工作。 目前我从以下位置窃取Lambda函数: 然而,这并没有提供与Helm相同的级

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

我的公司使用AWS CodePipeline/CodeBuild/CodeDeploy编写了两个现有管道。他们不喜欢花更多的时间重新编写所有管道。 我的公司没有任何计划仅为部署而维护额外实例。 AWS CodePipeline可以触发Lambda,理论上,如果Helm提供Python客户端,我可以编写一些Python代码来完成这项工作。 目前我从以下位置窃取Lambda函数:

然而,这并没有提供与Helm相同的级别特性。我们必须提供我们的发布名称系统、模板系统等。换句话说,如果我对清单做了很大的更改,并且没有处理第一次部署,那么它的功能就会很差。这意味着将清单部署到一个空的K8S集群。我们也使用Github,尽管它并不真正相关

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

请让我知道我想念的地方。谢谢。

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

Helm是一个很棒的产品,但是它面向命令行,而不是使用它的API,这需要GRPC。当然,可以使用Helm proto文件和GRPC client for Python为Tiller Helm的API服务器创建Python库,但似乎没有人构建一个在社区中很受欢迎的库。

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


Helm是一个很棒的产品,但是它面向命令行,而不是使用它的API,这需要GRPC。当然,可以使用Helm proto文件和GRPC client for Python为Tiller Helm的API服务器创建Python库,但似乎没有人构建了一个在社区中很受欢迎的Python库。

您可以找到我的pyhelm分叉,并提供示例和Python3支持

git clone git@github.com:andriisoldatenko/pyhelm.git
cd pyhelm && python setup.py install
如何使用Pyhelm 首先,您需要repo_url和图表名称来下载图表 现在您可以看到mongodb的图表文件夹: 构建ChartBuilder实例以使用Tiller进行操作的下一步: 安装图表::
你可以找到我的pyhelm叉子,上面有示例和Python3支持

git clone git@github.com:andriisoldatenko/pyhelm.git
cd pyhelm && python setup.py install
如何使用Pyhelm 首先,您需要repo_url和图表名称来下载图表 现在您可以看到mongodb的图表文件夹: 构建ChartBuilder实例以使用Tiller进行操作的下一步: 安装图表::
实际上,我已经按照您描述的方式完成了,与aws kube codesuite相同。试着找到更优雅的方法。事实上,我已经按照你描述的方式做了,就像aws kube代码套件一样。试着找到更优雅的方式。请复习我在类似问题中的答案:请复习我在类似问题中的答案:谢谢。但是我坚持使用pygit2,并尝试了python 2.7.10和3.6.4。它不断询问libgit2版本0.27.x,而MacOSX上的官方版本是0.26.3。稍后我将在Ubuntu上试用。@MingXie您有机会查看Ubuntu的官方安装说明吗?顺便说一句,在我的fork中,我删除了libgit2依赖项,因为我的项目不需要它。是的,我去掉了libgit2和pygit2问题,谢谢。一、 然而,即使在本地minikube中,仍然会遇到这种情况,包括修复44134端口和主机:grpc.\u通道。\u会合:变量t来自何处?如果你想使用集群中安装的舵柄,你如何初始化它?很好!替换s/t/图表/谢谢。但是我坚持使用pygit2,并尝试了python 2.7.10和3.6.4。它不断询问libgit2版本0.27.x,而MacOSX上的官方版本是0.26.3。稍后我将在Ubuntu上试用。@MingXie您有机会查看Ubuntu的官方安装说明吗?顺便说一句,在我的fork中,我删除了libgit2依赖项,因为我的项目不需要它。是的,我去掉了libgit2和pygit2问题,谢谢。一、 然而,即使在本地minikube中,仍然会遇到这种情况,包括修复44134端口和主机:grpc.\u通道。\u会合:变量t来自何处?你如何初始化i t如果你想使用集群中安装的舵柄?抓得好!替换s/t/图表/
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/
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 {....
}