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

Dan*_*mos 5 gitlab kubernetes kops kubernetes-helm

我在 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!
Run Code Online (Sandbox Code Playgroud)

但是,例如,当尝试列出图表时,它需要 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
Run Code Online (Sandbox Code Playgroud)

我缺少什么所以我可以从我的 CLI 使用 Gitlab 安装的 Tiller?

Nep*_*cen 3

您确定您的 Tiller 服务器安装在“gitlab-management-apps”命名空间中吗?默认情况下,它按照 GitLab 网站上的官方安装说明安装到“kube-system”,这意味着这就是导致helm ls命令失败的原因(只需跳过它)

验证它的最佳方法是通过:

kubectl get deploy/tiller-deploy -n gitlab-managed-apps
Run Code Online (Sandbox Code Playgroud)

您在该命名空间中看到任何与tiler相关的部署对象吗?

假设您可以使用当前 kube 上下文操作 KOPS 集群,那么在本地运行 helm 客户端应该没有问题。您始终可以通过 helm 命令显式使用--kube-context参数。

更新:

我想我知道是什么原因导致了你的问题,当通过 GitLab UI 安装 Helm 时,Helm 和 Tiller 之间使用安全连接(SSL)(这里证明)。

知道了这一点,这意味着您应该从安装在 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
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令将 helm 客户端连接到tiller 服务器,如下所述

helm ls --tls --tls-ca-cert ca.cert.pem --tls-cert helm.cert.pem --tls-key helm.key.pem
Run Code Online (Sandbox Code Playgroud)