helm:x509:由未知权限签名的证书

时间:2018-01-05 18:54:36

标签: ssl kubernetes kubernetes-helm

我正在使用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如何运作感到好奇,但是{{ 1}}不是吗?

这是一个生产集群,内部版本通过头盔图处理,因此必须解决这个问题。

任何提示都将不胜感激。

4 个答案:

答案 0 :(得分:8)

作为解决方法,您可以尝试禁用证书验证。 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

另请检查您是否在群集配置中配置了无效证书。

答案 1 :(得分:1)

在我的情况下,错误是由Helm存储库中不受信任的证书引起的。 下载证书并使用--ca-file选项指定证书即可解决此问题(至少在Helm版本3中)。

for (int i=0;i< latlngs.size();i++) {
            LatLng point=latlngs.get(i);
            options.position(point);
            options.title(Names.get(i));
            options.snippet("someDesc");
            mMap.addMarker(options);
        }

<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, user-scalable=no"> <style> div.ex1 { width: 100px; height: 100px; overflow-y: auto; overflow-x: auto; } </style> <script> function lockHorizontalScroll() { document.getElementById("div1").style.overflowX = "hidden"; } </script> </head> <body> <div id="div1" class="ex1"> <img src=https://www.w3schools.com/images/colorpicker.gif width=200 height=200> </div> <Button onclick=lockHorizontalScroll()>Lock H Scroll</Button> </body> </html>字符串,使用此CA捆绑包验证启用HTTPS的服务器的证书

答案 2 :(得分:1)

在我的情况下,我正在运行一个单一的自我管理功能,并且配置文件也是容器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

答案 3 :(得分:0)

尽管用--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添加回购协议外,我还需要下载存储库证书并将其安装为“当前用户”:

install it as Current User

将所有证书放在以下存储中:受信任的根证书颁发机构: Place all certificates in the following store: Trusted Root Certification Authorities

安装证书后,我还需要重新启动计算机。重新启动后,当您打开浏览器并粘贴回购URL时,它应该在没有警告和不信任站点的情况下进行连接(这样您就可以成功安装证书)。

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

helm dependency update helm/myStuff
....
Saving 18 charts
Downloading service1 from repo https://myCharts.me/
Downloading service2 from repo https://myCharts.me/
....