如何在k8s群集外部托管的CI / CD管道中使用kubernetes helm

时间:2017-04-23 16:02:29

标签: continuous-integration kubernetes continuous-deployment kubectl kubernetes-helm

我正在使用kubernetes helm将应用程序部署到我的群集。当helm使用集群的kube-config文件部署到集群时,我的笔记本电脑一切正常。

我想使用来自我的CI / CD服务器(与我的群集分开)的helm来自动将应用程序部署到我的群集。我已经为我的CI / CD服务器创建了一个k8s服务帐户。但是如何为服务帐户创建一个kube-config文件,以便helm可以使用它从我的CI / CD服务器连接到我的集群?

或者这不是从CI / CD服务器使用Helm的正确方法吗?

4 个答案:

答案 0 :(得分:1)

Helm通过使用已安装的kubectl与您的群集通信来工作。这意味着如果您可以通过kubectl访问您的群集,则可以对该群集使用helm。

如果您在kubcfg文件中有多个群集,请不要忘记确保使用正确的上下文。您可以通过运行kubectl config current-context并将其与kubecfg中的群集详细信息进行比较来检查。

您可以在Helm的文档中找到更多详细信息,请查看quick start guide以获取更多信息。

答案 1 :(得分:1)

为什么不在你的kubernetes集群中运行你的CI服务器,那么你不必管理访问集群的秘密?我们在Jenkins X上这样做并且效果很好 - 我们可以在管道内运行kubectl或helm就好了。

答案 2 :(得分:0)

在这种情况下,您需要在已确定供CI / CD服务器使用的任何从站或代理上安装kubectl,或者在自动化中即时安装kubectl,并且然后确保你有OR能够生成一个kubeconfig来使用。

回答这个问题:

  

但是如何为服务帐户创建一个kube-config文件...

您可以使用kubectlkubectl config set-clusterkubectl config set-credentials在默认或自定义kubeconfig文件中设置新的群集,凭据和上下文,以便与kubectl config set-context一起使用。如果您设置了KUBECONFIG env变量并指向kubeconfig文件,则可以正常工作或设置新条目时只需将-kubeconfig传递给指向自定义文件。

此处为v1.6 the relevant API documentation

答案 3 :(得分:0)

我们创建了helmsman,它为您提供了声明性语法来管理群集中的helm图表。无论你在哪里运行它,它都会为你配置kubectl(以及helm)。它也可以在docker容器中使用。