При установке Jenkins HELM не удается подключиться к кластеру - PullRequest
0 голосов
/ 06 мая 2020

Я использую последние версии HELM stable / jenkins charts, установленные на моем кластере с одним узлом, для тестирования.

  1. Установить NFS Provisioner.
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
Установить стабильный / 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
Войдите в Jenkins и создайте учетные данные Jenkins для «Учетной записи службы Kubernetes». В разделе «Настроить облака» я оставляю все значения по умолчанию и нажимаю «Проверить соединение». Тест не пройден. В раскрывающемся списке учетных данных я выбрал «секретный текст» и снова нажал кнопку. По-прежнему не удается.

Сообщенная ошибка была.

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

Когда я проверяю журналы модуля, единственная ошибка, которую я вижу, это следующее.

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 голосов
/ 07 мая 2020

Эта ошибка является типичным сообщением об ошибке виртуальной машины 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

РЕДАКТИРОВАТЬ:

Попробуйте изменить расположение авторитетного файла, добавьте параметр отладки (-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 от go до Manage Jenkins > Manage Plugins > tab Available and search for "skip-certificate-check" plugin.

После установки проблема должна быть исправлена. Используйте этот плагин с осторожностью, так как это не рекомендуется с точки зрения безопасности.

Кроме того, стабильная версия репо скоро устареет и не обновляется. Я предлагаю использовать диаграмму Дженкинса из Helm Hub .

Пожалуйста, посмотрите: Certification-path-jenkins , add-ca-cert , добавление сертификатов путей .

...