我在AWS中使用Kops安装了Kubernetes集群。我已经使用Gitlab UI安装了Helm Tiller。 Tiller服务似乎是通过Gitlab工作的,例如我从Gitlab UI安装了Ingress。
但是当我尝试从CLI使用相同的Tiller时,我无法让它运行起来。当我helm init
它说它已经安装(这完全有道理):
helm init --tiller-namespace gitlab-managed-apps --service-account tiller
$HELM_HOME has been configured at C:\Users\danie\.helm.
Warning: Tiller is already installed in the cluster.
(Use --client-only to suppress this message, or --upgrade to upgrade Tiller to the current version.)
Happy Helming!
但是,当尝试列出图表时,需要5分钟,然后超时:
$ helm list --tiller-namespace gitlab-managed-apps --debug
[debug] Created tunnel using local port: '60471'
[debug] SERVER: "127.0.0.1:60471"
Error: context deadline exceeded
我缺少什么,所以我可以使用我的CLI中安装Gitlab的Tiller?
您是否确定您的Tiller服务器安装在“gitlab-managed-apps”命名空间中?默认情况下,它根据GitLab网站上的官方installation指令安装到'kube-system',这意味着这会导致你的helm ls
命令失败(只是跳过它)
验证它的最佳方法是:
kubectl get deploy/tiller-deploy -n gitlab-managed-apps
您是否在该命名空间中看到任何与分蘖相关的部署对象?
假设您可以使用当前的kube上下文操作KOPS集群,那么在本地运行helm客户端应该没有问题。您始终可以使用helm命令显式使用--kube-context
参数。
更新:
我想我知道是什么导致了你的问题,Helm在通过GitLab UI安装时使用了helm和tiller之间的安全连接(SSL)(证明here)。
知道这一点,这意味着你应该从Tiller Pod上安装的Secret对象中检索一组证书:
#The CA
ca.cert.pem
ca.key.pem
#The Helm client files
helm.cert.pem
helm.key.pem
#The Tiller server files
tiller.cert.pem
tiller.key.pem
然后使用以下命令将helm客户端连接到分蘖服务器,如here所述:
helm ls --tls --tls-ca-cert ca.cert.pem --tls-cert helm.cert.pem --tls-key helm.key.pem