首页 文章

从Jenkins将Helm Charts部署到Kubernetes服务器

提问于
浏览
2

我希望能够使用Jenkins执行的Helm图表(作为构建周期的一部分)自动部署到我的Kubernetes集群 . Jenkins机器与Kubernetes集群位于一个独立的网络上(而不是许多博客中记录的部分网络) .

我在私人GitHub帐户中托管了一个图表仓库 . 我按照这里的过程:https://hackernoon.com/using-a-private-github-repo-as-helm-chart-repo-https-access-95629b2af27c并且能够使用以下格式的命令在Azure服务器上将其添加为Helm中的repo:

helm repo add sample 'https://MY_PRIVATE_TOKEN@raw.githubusercontent.com/kmzfs/helm-repo-in-github/master/'

我一直试图让Jenkins内部的ElasticBox Kubernetes CI / CD(v1.3)插件连接到这个图表仓库,但每当我按下“测试连接”时,我都会收到400 Bad Request错误 . 我试图以各种方式输入细节:

我有这个插件连接到Kubernetes Cloud,它可以连接到https://github.com/helm/charts的存储库并部署RabbitMQ容器 .

是否有可能将此插件连接到私有Github存储库作为图表存储库,如果是这样,我该怎么做呢?

如果没有,是否有另一种方法可以从Jenkins部署Helm图表(在私人仓库中)?我找不到任何其他使用Helm的插件 .

谢谢邓肯

2 回答

  • 1

    我们在CI中使用的是完全跳过任何时髦的Jenkins插件,只是去寻找原生工具 . 我们将kubectl / helm烘焙到jenkins / worker图像中,为他们提供凭据,以便他们可以与群集通信,然后获取私有Helm图表,而不是从已发布的图表中获取,而是直接从持有该图表的私有git repo获取 . 然后我们只需用通常的脚本步骤对这个localy克隆图表运行 helm .

    定义ca证书的kube配置部分示例(与下面的评论相关):

    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: <base64 ca cert>
        server: https://cluster_api_url
      name: mycluster
    
  • 1

    我们正在开发一个名为Jenkins X的开源项目,该项目是Jenkins基金会的一个拟议子项目,旨在使用Jenkins和GitOps进行促销,在Kubernetes上自动化CI / CD .

    我们通过在kubernetes集群中运行Jenkins管道来解决您遇到的一些问题;所以不需要对kubernetes集群进行身份验证 - 它只是重用现有的RBAC .

    当您将更改合并到主分支时,Jenkins X会为您的应用创建一个新的语义版本分发(pom.xml,jar,docker image,helm chart) . 然后,管道自动生成Pull请求,以通过GitOps在所有环境中推广您的应用程序 .

    这里是a demo of how to automate CI/CD with multiple environments on Kubernetes using GitOps,用于在Pull请求环境和预览环境之间进行升级 - 使用Spring Boot和nodejs应用程序(但我们支持许多语言框架) .

相关问题