helm:x509:未知机构签署的证书

问题描述 投票:0回答:9

我正在使用 Kubernetes,并且最近更新了

kubeconfig
中使用的管理证书。然而,在我这样做之后,所有
helm
命令都失败了:

Error: Get https://cluster.mysite.com/api/v1/namespaces/kube-system/pods?labelSelector=app%3Dhelm%2Cname%3Dtiller: x509: certificate signed by unknown authority

kubectl
按预期工作:

$ kubectl get nodes
NAME                                           STATUS    ROLES     AGE       VERSION
ip-10-1-0-34.eu-central-1.compute.internal     Ready     master    42d       v1.7.10+coreos.0
ip-10-1-1-51.eu-central-1.compute.internal     Ready     master    42d       v1.7.10+coreos.0
ip-10-1-10-120.eu-central-1.compute.internal   Ready     <none>    42d       v1.7.10+coreos.0
ip-10-1-10-135.eu-central-1.compute.internal   Ready     <none>    27d       v1.7.10+coreos.0
ip-10-1-11-71.eu-central-1.compute.internal    Ready     <none>    42d       v1.7.10+coreos.0
ip-10-1-12-199.eu-central-1.compute.internal   Ready     <none>    8d        v1.7.10+coreos.0
ip-10-1-2-110.eu-central-1.compute.internal    Ready     master    42d       v1.7.10+coreos.0

据我所知,

helm
应该使用与
kubectl
相同的证书,这让我很好奇
kubectl
是如何工作的,但
helm
却没有?

这是一个生产集群,内部版本通过 Helm Chart 进行处理,因此解决这个问题势在必行。

任何提示将不胜感激。

ssl kubernetes kubernetes-helm
9个回答
26
投票

作为解决方法,您可以尝试禁用证书验证。 Helm 使用 kube 配置文件(默认情况下

~/.kube/config
)。您可以为
insecure-skip-tls-verify: true
部分添加
cluster

clusters:
- cluster:
    server: https://cluster.mysite.com
    insecure-skip-tls-verify: true
  name: default

您是否已尝试重新安装 helm/tiller?

kubectl delete deployment tiller-deploy --namespace kube-system
helm init

还要检查您是否在集群配置中配置了无效的证书。


7
投票

就我而言,我正在运行单个自我管理,并且配置文件也是容器 ca 文件,因此上述答案将引发以下错误

Error: Kubernetes cluster unreachable: Get "https://XX.XX.85.154:6443/version?timeout=32s": x509: certificate is valid for 10.96.0.1, 172.31.25.161, not XX.XX.85.154

我的配置是

- cluster:
    certificate-authority-data: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    server: https://54.176.85.154:6443
    insecure-skip-tls-verify: true

所以我必须删除

certificate-authority-data

- cluster:
    server: https://54.176.85.154:6443
    insecure-skip-tls-verify: true

7
投票

使用

--insecure-skip-tls-verify
通过命令行跳过 tls 验证

helm repo add stable --insecure-skip-tls-verify https://charts.helm.sh/stable

4
投票

在我的例子中,错误是由 Helm 存储库中不受信任的证书引起的。 下载证书并使用

--ca-file
选项指定它解决了该问题(至少在 Helm 版本 3 中)。

helm repo add --ca-file /path/to/certificate.crt repoName https://example/repository

--ca-file
字符串,使用此 CA 捆绑包验证启用 HTTPS 的服务器的证书


2
投票

将 -cluster 下面的行添加到 /home/centos/.kube/config 文件解决了我的问题

insecure-skip-tls-verify: true

解决了我的问题。

我的配置文件现在看起来像这样。

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /home/centos/.minikube/ca.crt
    extensions:
    - extension:
        last-update: Tue, 02 Nov 2021 20:51:44 EDT
        provider: minikube.sigs.k8s.io
        version: v1.23.2
      name: cluster_info
    server: https://192.168.49.2:8443
    insecure-skip-tls-verify: true
  name: minikube
contexts:

2
投票

我遇到了一个极端情况。如果 KUBECONFIG 变量中引用了多个 kubeconfig 文件,并且多个文件具有同名的集群,您也可能会收到此错误。


0
投票

对于我的情况,在我升级到 helm v.3.9.0 后,它是旧版本的 helm(在我的情况下是 v.3.6.3)

brew upgrade helm
一切都恢复正常了。


0
投票

如果您使用的是 minikube,问题可能与此处描述的问题有关:https://minikube.sigs.k8s.io/docs/handbook/vpn_and_proxy/#x509-certificate-signed-by-unknown-authority

如果您使用 Rancher Desktop,解决方案是在计算机上安装所需的证书。


-1
投票

虽然使用 --ca-file 添加存储库可以做到这一点,但当它尝试使用下面发布的命令从该存储库下载时,我仍然得到 x509:由未知权威机构签名的证书

helm dependency update helm/myStuff
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "myRepo" chart repository
Update Complete. ⎈Happy Helming!⎈
Saving 18 charts
Downloading myService from repo https://myCharts.me/
Save error occurred:  could not download https://myCharts.me/stuff.tgz ...
x509: certificate signed by unknown authority
Deleting newly downloaded charts, restoring pre-update state

除了使用 --ca-file 添加存储库之外,我需要做的是下载存储库证书并将其安装为当前用户:

将所有证书放入以下存储中:受信任的根证书颁发机构:

安装证书后我还需要重新启动计算机。重新启动后,当您打开浏览器并粘贴存储库 URL 时,它应该会连接,而不会发出警告并信任该站点(这样您就知道您已成功安装证书)。

您可以继续运行命令,这次应该会选择证书。

helm dependency update helm/myStuff
....
Saving 18 charts
Downloading service1 from repo https://myCharts.me/
Downloading service2 from repo https://myCharts.me/
....
© www.soinside.com 2019 - 2024. All rights reserved.