我使用最新的HELM stablejenkins charts安装在我的单节点集群上进行测试。
helm repo add stable https://kubernetes-charts.storage.googleapis.com
helm install nfs-client-provisioner stable/nfs-client-provisioner --version 1.2.8 --set nfs.server=*** --set nfs.path=/k8snfs --set storageClass.name=nfs --wait
helm install jenkins stable/jenkins -f newJenkins.values -n jenkins
newJenkins.values有以下内容。
master:
adminPassword: admin
serviceType: NodePort
initContainerEnv:
- name: http_proxy
value: "http://***:80"
- name: https_proxy
value: "http://***:80"
- name: no_proxy
value: "***"
containerEnv:
- name: http_proxy
value: "http://***:80"
- name: https_proxy
value: "http://***:80"
- name: no_proxy
value: "***"
javaOpts: >-
-Dhttp.proxyHost=***
-Dhttp.proxyPort=80
-Dhttps.proxyHost=***
-Dhttps.proxyPort=80
persistence:
storageClass: nfs
报告的错误是。
Error testing connection https://kubernetes.default: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
当我在pod日志中检查时,我看到的唯一错误是以下内容。
2020-05-06 01:35:13.173+0000 [id=19] INFO o.c.j.p.k.KubernetesClientProvider$SaveableListenerImpl#onChange: Invalidating Kubernetes client: kubernetes null
我上网查了一下,很多网站都提到了服务账号的设置,但都没有用。
$ kubectl version --short
Client Version: v1.12.7+1.2.3.el7
Server Version: v1.12.7+1.2.3.el7
$ helm version --short
v3.1.0+gb29d20b
难道还有其他步骤吗?
该错误是Java虚拟机报告的常见错误信息。当Java环境没有关于HTTPS服务器的信息来验证它是一个有效的网站时,就会造成这种情况。有时证书是由内部的Root CA提供的,或者是自签名证书。这有时会让JVM感到困惑,因为它不是Java "受信任 "列表中可以提供这些证书的人之一。
试着将你的Java选项添加到 values.yaml
文件应该是这样的。
javaOpts: >-
-Dhttp.proxyHost=***
-Dhttp.proxyPort=80
-Dhttps.proxyHost=***
-Dhttps.proxyPort=80
-Djavax.net.ssl.trustStore=$JAVA_HOME/jre/lib/security/cacert
-Djavax.net.ssl.trustStorePassword=changeit
EDIT:
尝试更改权限文件的位置,添加调试选项(-Djavax.net.debug=ssl
)用于查看更详细的日志。通常情况下,如果没有这个参数,我们将无法看到更多的详细日志。
javaOpts: >-
-Dhttp.proxyHost=***
-Dhttp.proxyPort=80
-Dhttps.proxyHost=***
-Dhttps.proxyPort=80
-Djavax.net.ssl.trustStore=$JAVA_HOME/lib/security/cacerts
-Djavax.net.ssl.trustStorePassword=changeit
-Djavax.net.debug=ssl
如果安全不是这个框的核心问题,你可以在Jenkins的web UI中到 Manage Jenkins > Manage Plugins > tab Available and search for "skip-certificate-check" plugin
.
安装后,这个问题应该会得到解决。谨慎使用这个插件,因为从安全角度来看,不建议使用。
另外,repo稳定版很快就会被废弃,不再更新。我建议使用jenkins图表从 舵机枢纽.
请看一下。认证路径-jenkins, 补证, 添加路径证书.