【问题标题】:HELM install of Jenkins fails to connect to clusterJenkins 的 HELM 安装无法连接到集群
【发布时间】:2020-05-06 02:20:36
【问题描述】:

我正在使用安装在我的单节点集群上的最新 HELM stable/jenkins 图表进行测试。

  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/jenkins。只有自定义值是 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

还有一步吗?

【问题讨论】:

  • 您能否提供 newJenkins.values 文件,您是否为 Jenkins 创建和配置了持久卷?
  • 更新了帖子,要求提供信息。

标签: jenkins kubernetes kubernetes-helm


【解决方案1】:

该错误是 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

安装后,问题应该得到解决。谨慎使用此插件,因为从安全角度来看不建议这样做。

另外,repo stable 很快就会被弃用,并且不会被更新。我建议使用来自Helm Hub 的詹金斯图表。

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

【讨论】:

  • 谢谢。我会看看这些其他链接。到目前为止,仅添加这 2 行额外的行并没有什么不同。
  • 请看看我的编辑。我希望它会有所帮助。
猜你喜欢
  • 2019-12-12
  • 2020-05-13
  • 2018-07-03
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2019-01-26
  • 2019-06-05
  • 2021-11-23
相关资源
最近更新 更多