我正在使用kubernetes helm将应用程序部署到我的群集。当helm使用集群的kube-config文件部署到集群时,我的笔记本电脑一切正常。
我想使用来自我的CI / CD服务器(与我的群集分开)的helm来自动将应用程序部署到我的群集。我已经为我的CI / CD服务器创建了一个k8s服务帐户。但是如何为服务帐户创建一个kube-config文件,以便helm可以使用它从我的CI / CD服务器连接到我的集群?
或者这不是从CI / CD服务器使用Helm的正确方法吗?
答案 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文件...
您可以使用kubectl
,kubectl config set-cluster
和kubectl 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容器中使用。