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

时间:2018-02-14 15:55:45

标签: git jenkins kubernetes kubernetes-helm

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

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

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错误。我试图以各种方式输入细节:

  1. 使用与上述相同的格式(和令牌)且无凭据
  2. 在凭据中使用私人令牌(与上述查询相同),以及https://raw.githubusercontent.com/kmzfs/helm-repo-in-github/master/
  3. 的网址
  4. 在凭据中使用我的用户名和密码,以及https://raw.githubusercontent.com/kmzfs/helm-repo-in-github/master/
  5. 的网址

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

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

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

    由于 邓肯

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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用于在环境和拉动请求预览环境之间进行推广 - 使用Spring Boot和nodejs应用程序(但我们支持多种语言+框架)。