当前位置: 首页 > 知识库问答 >
问题:

将Helm Charts从Jenkins部署到库伯内特斯服务器

鞠侯林
2023-03-14

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

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

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

我一直在尝试让 Jenkins 内部的弹性盒 Kubernetes CI/CD (v1.3) 插件连接到此图表存储库,但每当我按“测试连接”时,我都会收到 400 错误请求错误。我试图以各种方式输入详细信息:

  1. 使用与上面相同的格式(和令牌),无凭据
  2. 在凭证中使用私有令牌(与上面的查询中相同),并使用https://raw.githubusercontent.com/kmzfs/helm-repo-in-github/master/
  3. 在凭据中使用我的用户名和密码,以及的urlhttps://raw.githubusercontent.com/kmzfs/helm-repo-in-github/master/

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

有可能让这个插件连接到一个私有的Github库作为图表库吗?如果可以,我该怎么做?

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

谢谢Duncan

共有2个答案

荀豪
2023-03-14

我们正在进行一个名为Jenkins X的开源项目,这是Jenkins基金会的一个子项目,旨在使用Jenkins和GitOps进行推广,在Kubernetes上实现CI/CD自动化。

我们通过在kubernetes集群内运行Jenkins管道解决了您遇到的一些问题;因此无需使用kubernetes集群进行身份验证-它只是重用现有的RBAC。

当您将更改合并到master分支时,JenkinsX会为您的应用创建一个新的语义版本化分发(pom.xml、jar、docker映像、helm图表)。然后,管道会自动生成拉取请求,以便通过GitOps在所有环境中推广您的应用程序。

这里演示了如何使用GitOps在Kubernetes上的多个环境中自动执行CI/CD,以便在环境之间进行升级,以及使用Spring Boot和nodejs应用程序在Pull请求上预览环境(但我们支持多种语言框架)。

洪鸿
2023-03-14

我们在CI中使用的是完全跳过任何时髦的Jenkins插件,只使用本机工具。我们将kubectl/helm烘焙到jenkins/工人映像中,为他们提供凭据,这样他们就可以与集群对话,然后不从已发布的图表中获取私有Helm图表,而是直接从持有该图表的私有git存储库中获取该图表。然后我们只需使用通常的脚本步骤对这个localy克隆图表运行helm

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

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <base64 ca cert>
    server: https://cluster_api_url
  name: mycluster
 类似资料:
  • 我只是在本地mac上使用mini kube设置kubernetes。 创建了一个类型为NodePort的服务,并且能够使用url

  • 我正在尝试在Kubernetes集群(Azure AKS)中部署Flink作业。作业群集在启动后立即中止,但任务管理器运行正常。 docker镜像创建成功,没有任何异常。我可以运行docker镜像,也可以SSHdocker镜像。 我已经按照以下链接中提到的步骤: https://github.com/apache/flink/tree/release-1.9/flink-container/kub

  • 我有以下代码: 我创建了一个包含上述Python代码的映像的部署。 当我使用my Python代码不会创建sig文件指示,也不会打印“完成”消息。 点击此链接:https://cloud.google.com/blog/products/containers-kubernetes/kubernetes-best-practices-terminating-with-grace我看到k8s发送SIG

  • 我是Kubernetes平台的新手,尝试启用部署在Kubernetes平台上的tomcat web app的HTTPS安全连接。我对舱单感到困惑。与部署、服务和入口控制器相关的yml。 那么,我是否也必须在部署(在端口:-containerPort:8080)服务(如端口:-端口:80 targetPort:8080协议:TCP名称:http)和入口(在后端:serviceName:tomcat

  • 我确实部署了单吊舱,自定义docker映像如下: 在开发过程中,我希望推送新的最新版本并更新部署。如果不明确定义标记/版本并为每个构建增加它,就找不到如何做到这一点,并且

  • 我在windows 10中创建了两个在我的minikube环境中运行的POD。一个POD带有Spring boot应用程序容器,另一个POD带有mysql容器。对于Spring boot应用程序,服务类型为nodePort,对于MYSQL pod,服务类型为club sterIP。这意味着Mysql pod只需要在集群内部进行通信。但是对于Spring boot应用程序,需要从浏览器访问,所以我配