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

Dun*_*tin 8 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 中的一个 repo Azure 服务器使用以下格式的命令:

helm repo add sample 'https://MY_PRIVATE_TOKEN@raw.githubusercontent.com/kmzfs/helm-repo-in-github/master/'
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

谢谢邓肯

Rad*_*nka 8

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

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

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <base64 ca cert>
    server: https://cluster_api_url
  name: mycluster
Run Code Online (Sandbox Code Playgroud)