Рейтинг:1

Как сделать порт агентов Jenkins доступным с контроллером Ingress в Kubernetes?

флаг cn

Я пытаюсь настроить Jenkins в кластере Digital Ocean Kubernetes. Я использую входной контроллер NGINX, так как хочу получить доступ к своему серверу из поддомена (jenkins.example.com). Пока все работает нормально, мой пользовательский интерфейс в указанном домене защищен специальным сертификатом. Я начал сталкиваться с проблемами при попытке подключить своих агентов (или подчиненных, как я читал в другом месте?) к серверу.

Что я пробовал

Я попытался настроить балансировщик нагрузки, но не смог заставить его работать, так как я использую Digital Ocean, и большинство документов, которые я нашел, были для GKE / EKS и других, у которых есть собственный внутренний LB. Я также попытался проложить маршрут /агенты на имя порта службы, а затем на другую службу с типом «ClusterIP», но безуспешно (не найдено в Jenkins).

Моя текущая конфигурация

Дженкинс-deployment.yaml

apiVersion: приложения/v1
вид: развертывание
метаданные:
  имя: Дженкинс-деп
  этикетки:
    приложение: Дженкинс
спецификация:
  реплики: 1
  селектор:
    метки соответствия:
      приложение: Дженкинс
  шаблон:
    метаданные:
      этикетки:
        приложение: Дженкинс
    спецификация:
      контейнеры:
      - имя: Дженкинс
        изображение: Дженкинс/Дженкинс: lts-jdk11
        imagePullPolicy: Ифноптресент
        порты:
        - контейнерПорт: 8080
        - контейнерПорт: 50000

Дженкинс-service.yaml

апиВерсия: v1
вид: сервис
метаданные:
  имя: Дженкинс-SVC
  этикетки:
    приложение: Дженкинс
спецификация:
  тип: NodePort
  селектор:
    приложение: Дженкинс
  порты:
  - имя: уи
    протокол: TCP
    порт: 8080
    целевой порт: 8080
    порт узла: 32500
  - название: агенты
    протокол: TCP
    порт: 50000
    целевой порт: 50000
    порт узла: 32501

Дженкинс-ingress.yaml

Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
  имя: Дженкинс-Ингресс
спецификация:
  тлс:
  - хозяева:
      - jenkins.example.com
    secretName: tls-секрет
  правила:
  - хост: jenkins.example.com
    http:
      пути:
      - дорожка: /
        тип пути: префикс
        серверная часть:
          оказание услуг:
            имя: Дженкинс-SVC
            порт:
              имя: уи
      #- путь: /агенты
      # тип_пути: префикс
      # бэкенд:
      #    оказание услуг:
      # имя: jenkins-svc
      # порт:
      # имя: агенты

Суть в следующем: как сделать порт Jenkins 50000 доступным для подключения агентов к моему серверу? Или как я могу изменить настройки Jenkins, чтобы приспособиться к такой конфигурации?

Рейтинг:2
флаг in

Насколько мне известно, Дженкинс использует собственный протокол для связи со своими агентами сборки, который представляет собой двоичный Java RMI, а не HTTP. Поскольку ресурс Ingress Только за хозяин: на основе виртуальной диспетчеризации HTTP-запросы, вы не можете использовать никакие вид: Вход декларация для этого

Но конкретно с контроллером nginx-ingress они позволяют раскрытие служб TCP который, вероятно, сделает то, что вы хотите

greg_wss avatar
флаг cn
Спасибо тебе за это. В настоящее время я слежу за их документом, я обновлю этот пост, если мне удастся чего-то добиться.
andolsi zied avatar
флаг jp
По сути, решение состоит в том, чтобы открыть службу TCP. Чтобы избежать ошибок, я рекомендую использовать релиз helm от ingress-nginx (я тестировал 4.0.12), как описано здесь (https://docs.cloudbees.com/docs/cloudbees-ci/latest/cloud-setup-guide/configure). -ports-jnlp-agents#values-yaml-configure-jnlp)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.