Jenkins的HELM安装无法连接到集群

时间:2020-05-06 02:20:36

标签: jenkins kubernetes kubernetes-helm

我正在使用安装在单节点群集上的最新HELM稳定/詹金斯图表进行测试。

  1. 安装NFS设置程序。
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
  1. 安装马stable /詹金斯。只有自定义值是serviceType和storageClass。
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
  1. 登录Jenkins并创建“ Kubernetes服务帐户”的Jenkins凭据。
  2. 在“配置云”下,保留所有默认值,然后按“测试连接”。测试失败。
  3. 在凭据下拉列表中,我选择了“秘密文本”,然后再次按下按钮。仍然失败。

报告的错误是。

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

还有另外一步吗?

1 个答案:

答案 0 :(得分:0)

该错误是Java虚拟机报告的常见错误消息。当Java环境没有有关HTTPS服务器的信息以验证其为有效网站时,会导致这种情况。有时,证书是由内部根CA提供的,或者是自签名证书。有时这会使JVM感到困惑,因为它不是Java“受信任”列表中可以提供这些证书的人之一。

尝试在values.yaml文件中添加Java选项应如下所示:

  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

编辑:

尝试更改授权文件的位置,添加调试选项(-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

在安装此组件时,应解决此问题。请谨慎使用此插件,因为从安全角度来看,建议不要使用它。

也将很快弃用该存储库,并且不会对其进行更新。我建议使用Helm Hub 中的詹金斯图表。

请查看:certification-path-jenkinsadding-ca-certadding-path-certs