我使用Kops在AWS中安装了一个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?
答案 0 :(得分:1)
您确定您的Tiller服务器安装在“ gitlab-managed-apps”命名空间中吗?默认情况下,按照GitLab网站上的官方installation指令将其安装为“ kube-system”,这意味着这是导致helm ls
命令失败(跳过该命令)的原因
验证的最佳方法是通过:
kubectl get deploy/tiller-deploy -n gitlab-managed-apps
您在该命名空间中看到任何与分er相关的部署对象吗?
假设您可以在当前kube上下文中操作KOPS集群,则在本地运行helm客户端应该没有问题。您始终可以在helm命令中显式使用--kube-context
参数。
更新:
我想我知道是什么引起您的问题,通过GitLab UI安装头盔时,头盔和耕till之间使用了安全连接(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
然后使用以下命令将舵机客户端连接到分using服务器,如here所述:
helm ls --tls --tls-ca-cert ca.cert.pem --tls-cert helm.cert.pem --tls-key helm.key.pem
答案 1 :(得分:1)
这就是我一直这样做的方式。
首先在gitlab分er荚中打开一个壳:
# replace the pod name, tiller-deploy-5bb888969c-7bzpl with your own
kubectl exec -n gitlab-managed-apps tiller-deploy-5bb888969c-7bzpl -it -- sh
然后使用吊舱的本地头盔和证书...连接到分er
$ env | grep TILLER_TLS_CERTS
#cd to the result, in my case /etc/certs
$ cd /etc/certs
# connect to tiller with the certs using the native helm (/helm) in my case:
$ /helm ls --tls --tls-ca-cert ./ca.crt --tls-cert ./tls.crt --tls-key ./tls.key