我希望能够使用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错误 . 我试图以各种方式输入细节:
-
使用与上面相同的格式(和令牌),没有凭据
-
在凭证中使用私人令牌(与上面的查询相同),以及https://raw.githubusercontent.com/kmzfs/helm-repo-in-github/master/的网址
-
在凭证中使用我的用户名和密码,以及https://raw.githubusercontent.com/kmzfs/helm-repo-in-github/master/的网址
我有这个插件连接到Kubernetes Cloud,它可以连接到https://github.com/helm/charts的存储库并部署RabbitMQ容器 .
是否有可能将此插件连接到私有Github存储库作为图表存储库,如果是这样,我该怎么做呢?
如果没有,是否有另一种方法可以从Jenkins部署Helm图表(在私人仓库中)?我找不到任何其他使用Helm的插件 .
谢谢邓肯
2 回答
我们在CI中使用的是完全跳过任何时髦的Jenkins插件,只是去寻找原生工具 . 我们将kubectl / helm烘焙到jenkins / worker图像中,为他们提供凭据,以便他们可以与群集通信,然后获取私有Helm图表,而不是从已发布的图表中获取,而是直接从持有该图表的私有git repo获取 . 然后我们只需用通常的脚本步骤对这个localy克隆图表运行
helm
.定义ca证书的kube配置部分示例(与下面的评论相关):
我们正在开发一个名为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应用程序(但我们支持许多语言框架) .