Для контекста, я работаю в большой компании с командами в разных облаках (Azure и IBM cloud ранее Bluemix).В конечном итоге команда Ops будет контролировать мастера Дженкинса, но поскольку моя команда в первую очередь нуждается в этом, мы настраиваем его.
Что у нас есть:
- Мастер Дженкинса находится вAzure ( облако A ), последняя версия, и у нас есть плагин Kubernetes (среди прочего) для динамической подготовки агентов.
- Моя команда работает в кластерах IBM Kubernetes ( облако B ).В этом облаке у нас есть пространство имен для devops в кластере k8s, где мы хотим, чтобы подчиненные агенты были созданы и запущены.В этом облаке мы также создали учетные записи служб в этом пространстве имен, роли и привязке к роли.
Проблема: настройка главного устройства Jenkins для подключения к такому пространству имен в облаке IBM для предоставления агентов и выполнения заданий по мере необходимости,В частности, в Jenkins> Управление> Настройка системы> Облако.Здесь у меня есть:
- URL Kubernetes, установленный на IP: порт главного узла кластера
- Ключ сертификата сервера Kubernetes, я помещаю сюда сертификат, полученный при созданиислужебная учетная запись.
- Пространство имен, учетные данные У меня есть служебная учетная запись и, наконец, URL Jenkins.
Когда я пробую эту конфигурацию и протестирую соединение, получаю:
Ошибка тестирования соединения https://ip:port: Ошибка выполнения: GET at: https://ip:port/api/v1/namespaces/devops/pods. Сообщение: не авторизовано!У настроенной учетной записи службы нет доступа.Сервисный аккаунт может быть аннулирован.Несанкционированный.
Вопросы:
- Кто-нибудь знает, как это сделать или имеет ссылки на что-то подобное?
- Что на картинке я должен указать в kubernetes URL?Согласно документации, я должен ввести конечную точку кластерного движка контейнера, что это такое в IBM Cloud?У меня есть IP-адрес и порт главного узла.
Я прочитал много документации от IBM, плагин kubernetes для Jenkins (https://github.com/jenkinsci/kubernetes-plugin) и множество других сообщений, объясняющих, какнастроить jenkins с помощью kubernetes и динамической инициализации, и многие из них сказали, что можно использовать jenkins и slave в разных облаках, но никто из них не объяснил, как это сделать ..
Заранее спасибо.
++++++++++++++++++ ОБНОВЛЕНИЕ +++++++++++++++++++++++
На следующем снимке экрана показаны используемые конфигурации. В частности, поля Kubernetes URL и namespace .
Спасибо @ samhain1138 за помощьпока что, но я не могу получить успешное тестирование соединения в разделе конфигурации плагина Jenkins Kubernetes. Я думаю, что я не могу ввести правильную информацию в некоторые поля в этом разделе.
Примечание: пожалуйста, имейте в виду, что мои настройки следующие: мастер Jenkins находится в облаке A (Azure), и я хочу, чтобы узлы агента работали в другом кластере в другом облаке, назовите его Cloud B (в моем случае это IBM Cloud).
На скриншоте выше я уверен, что у меня есть правильные значения для Kubernetes URL и пространства имен , но я не уверен насчет других полей ( Kubernetes serverКлюч сертификата и Учетные данные .)
В поле Ключ сертификата сервера Kubernetes Я попытался поставить:
- Пример.сертификат учетной записи службы в кластере kubernetes в IBM.(Получено 1. созданием учетной записи службы, получением секрета этой учетной записи службы и извлечением ca.cert из такого секрета)
- «Токен» с сервера, который я получаю, выполняя представление конфигурации kubectl вкластер kubernetes в IBM.Токен находится в поле users> user> auth-provider> config> id-token при выполнении команды «kubectl config view»
В учетных данных я создал и попробовал разные Kinds :
- Имя пользователя и пароль: я попробовал это с моими учетными данными для кластера IBM и с учетными данными учетной записи службы (Когда я создал учетную запись службы, роль и привязку роли, я заметил, что был создан пользователь, который был serviceaccountname-namespace-cluster)
- Учетная запись службы Kubernetes
Я перепробовал все их комбинации и не смог получить Соединение успешно при тестировании соединения .
Erros Я получаю: