【问题标题】:Fabric8 / Minikube: Builds in Jenkins are failing due to authorization problemsFabric8 / Minikube:由于授权问题,Jenkins 中的构建失败
【发布时间】:2017-05-16 16:52:15
【问题描述】:

我想了解有关 Fabric8 的更多信息,但是,即使是非常简单的项目也无法构建。我在 Minikube 集群上本地运行它。

设置是:

  • Mac OS Sierra
  • Minikube v0.18.0
  • Fabric8 v0.4.122

所以我在本地 Gogs 存储库中有一个简单的 Spring Boot 应用程序。构建失败并显示此消息:

/usr/bin/git checkout -f d8af29f8af7a498331a244d245fb321003ef110d
/usr/bin/git rev-list d8af29f8af7a498331a244d245fb321003ef110d # timeout=10
[Pipeline] End of Pipeline
io.fabric8.kubernetes.client.KubernetesClientException: An error has occurred.
at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:57)
at io.fabric8.kubernetes.client.utils.HttpClientUtils.createHttpClient(HttpClientUtils.java:153)
[...]
Caused by: 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
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)

所以我从 Minikube (~/minikube/ca.crt) 中获取了 ca.crt,并将其(base64 编码)添加到 jenkins-git-ssh 密钥中,该密钥安装在 /var/run/ 中的 Jenkins pod 中秘密/kubernetes.io/serviceaccount。下一次构建以这个错误结束:

/usr/bin/git checkout -f d8af29f8af7a498331a244d245fb321003ef110d
/usr/bin/git rev-list d8af29f8af7a498331a244d245fb321003ef110d # timeout=10
[Pipeline] End of Pipeline
io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://kubernetes.default/. Message: Unauthorized
.

当我使用 Minikube 的 apiserver.crt 时也会发生同样的情况。

当使用 ca.pem 时,我得到:

Caused by: java.security.cert.CertificateException: Unable to initialize, java.io.IOException: extra data given to DerValue constructor
at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:198)
at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:102)

只有在将 apiserver.crt 和 apiserver.key 添加到密钥时,我才能从 Jenkins pod 访问 Kubernetes API。执行中

curl -k --cert apiserver.crt --key apiserver.key https://kubernetes.default/.

然后是成功的 - 但 Jenkins 构建仍然失败。

所以我在这里有点迷路了。有人知道如何继续吗?

感谢和问候, 丹尼尔

【问题讨论】:

    标签: authorization fabric8 minikube


    【解决方案1】:

    我们有一个修复程序,但尚未发布。可以在https://github.com/fabric8io/fabric8/issues/6829#issuecomment-301467664 找到详细信息,其中还描述了一种解决方法。

    TL;DR,您可以在重新启动 jenkins 主 pod 之前编辑 jenkins 服务帐户并删除以下行:

    -secrets:       
     -- name: "jenkins-git-ssh"     
     -- name: "jenkins-master-ssh"      
     -- name: "jenkins-release-gpg"
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-01-12
      • 2020-05-13
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      相关资源
      最近更新 更多