首页 文章

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

提问于
浏览
-2

我正在寻找任何代码示例,无需通过CLI调用即可部署Helm图表 . 这背后的原因是:

  • 我的公司使用AWS CodePipeline / CodeBuild / CodeDeploy编写了几个现有的管道 . 他们不想调查更多时间重写所有管道 .

  • 我的公司没有任何计划仅为部署维护额外的实例 .

  • AWS CodePipeline可以触发Lambda,理论上我可以编写一些Python代码来完成工作,如果Helm提供Python客户端的话 .

目前我从这里窃取了Lambda函数:

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

虽然这不提供与Helm相同的级别功能 . 我们必须提供我们的发布名称系统,模板系统等 . 换句话说,如果我对清单进行了大的更改,并且不处理第一次部署(意味着将清单部署到空的K8S集群),它的功能很差 . 我们使用Github,虽然不是很相关 .

对于Helm图表的python客户端,我能找到的最好的是在pip上列出的pyhelm . 但它没有用于调用部署的示例代码,并且从某些用户组/论坛反馈来看,安装过程很痛苦 . 有人也指向azure / draft和另一个repo,但我不知道如何找出一个只使用Python来部署Helm图表的实例 .

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

2 回答

  • 1

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

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

    如何使用Pyhelm

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

    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的图表文件夹::

    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'}})
    t.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 {....
    }
    
  • 0

    我建议使用official python client用于Kubernetes而不是Helm . 它要求您自己编写部署,服务,持久卷等,但是它必须弄清楚如何通过客户端进行集群身份验证以进行更改,但是repo中有几个示例 . 我不太了解AWS Lambda提供有关如何/是否可行的任何信息 .

    Helm是一个很棒的产品,但是面向命令行,而不是使用需要GRPC的API . 当然,可以使用Helm原型文件和Python的GRPC客户端为Tiller(Helm的API服务器)创建一个Python库,但似乎没有人 Build 一个在社区中发现牵引力的Python库 .

相关问题