Fabric8 / Minikube: сборки в Jenkins терпят неудачу из-за проблем с авторизацией
Я хотел узнать больше о Fabric8, однако невозможно построить даже очень простой проект. Я запускаю его локально на кластере Minikube.
Настройка:
- Mac OS Sierra
- Minikube v0.18.0
- Fabric8 v0.4.122
Итак, у меня есть простое приложение Spring Boot в локальном хранилище Gogs. Сборки терпят неудачу с этим сообщением:
/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)
Поэтому я взял ca.crt из Minikube (~/minikube/ca.crt) и добавил его (в кодировке base64) к секрету jenkins-git-ssh, который монтируется в модуле Jenkins в /var/run/secrets/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
.
То же самое происходит, когда я использую apiserver.crt из Minikube.
При использовании 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)
Я могу получить доступ к API Kubernetes из модуля Jenkins только при добавлении к секретному файлу apiserver.crt и apiserver.key. проведение
curl -k --cert apiserver.crt --key apiserver.key https://kubernetes.default/.
тогда успешен - но сборка Jenkins все еще не работает.
Так что я немного растерялся здесь. У кого-нибудь есть идеи, как продолжить?
Спасибо и всего наилучшего, Даниэль
1 ответ
У нас есть исправление, но оно еще не выпущено. Подробности можно найти на https://github.com/fabric8io/fabric8/issues/6829, где также описывается обходной путь.
TL; DR вы можете отредактировать учетную запись службы jenkins и удалить следующие строки перед перезапуском главного модуля jenkins:
-secrets:
-- name: "jenkins-git-ssh"
-- name: "jenkins-master-ssh"
-- name: "jenkins-release-gpg"
Надеюсь, это поможет.