在Gitlab上安装的Helm:错误:超出上下文截止日期

时间:2019-04-09 08:22:32

标签: kubernetes gitlab kubernetes-helm kops

我使用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?

2 个答案:

答案 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