Рубрики
Uncategorized

Простое и безопасное развертывание оператора Jenkins на Kubernetes

В этом уроке мы настроим трубопровод Jenkins на Kubernetes, который использует Дженкинс и … Помечено с Kubernetes, DevOps, Github, Tutorial.

В этом уроке мы настроим трубопровод Jenkins на Kubernetes, который использует операторы ретрансляции Jenkins и Webhook. Jenkins Kubernetes Operator будет создавать экземпляры Jenkins с предопределенной работой семян. Оператор Relay Webhook обеспечит, чтобы GitHub Webhooks на Push Events запускают новые сборки Jenkins для быстрого и эффективного опыта CI/CD.

Преимущества этой настройки:

  • Ваш экземпляр Jenkins доступен только через порт Kubectl Port-Forward, сохраняя способность получать веб-крючки от общественных мест.
  • Конфигурация трубопровода Jenkins хранится в GIT.
  • Конфигурация маршрутизации реле Webhook хранится в GIT, так же, как и сам Дженкинс.

Вы можете прочитать о шаблоне оператора в Kubernetes Docs Анкет

Предварительные условия

Предварительные условия:

Установка

Установка будет состоять из нескольких шагов:

  • Установка оператора Дженкинса
  • Установка оператора реле Webhook

Создайте свежее пространство имен

Давайте начнем с создания нового пространства имен, где мы поместим наш экземпляр Jenkins и запустите сборки. Я назову это «Дженкинс», но вы можете выбрать любое другое имя:

kubectl create namespace jenkins

А затем переключитесь на это:

kubectl config set-context $(kubectl config current-context) --namespace=jenkins

Дженкинс оператор

Мы установим оператора Jenkins с помощью Helm. Сначала добавьте репозиторий:

helm repo add jenkins https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/chart
helm repo update

После добавления репозитория установите:

helm install jenkins-operator jenkins/jenkins-operator

Официальные документы можно найти здесь: https://jenkinsci.github.io/kubernetes-operator/docs/installation/ Анкет Оператор не сам Дженкинс, поэтому, чтобы получить наш экземпляр Jenkins, нам придется создать Пользовательский ресурс Анкет

Пользовательские ресурсы являются расширениями API Kubernetes. На этой странице обсуждается, когда добавить пользовательский ресурс в ваш кластер Kubernetes и когда использовать автономную службу. Он описывает два метода для добавления пользовательских ресурсов и того, как выбрать между ними.

Начните Дженкинс (используя пользовательский ресурс)

Нам нужно будет создать CR. Вы можете либо использовать документы оператора Jenkins, чтобы создать один, либо вы можете разобраться в этом https://github.com/webhookrelay/jenkins-operator-example.git репозиторий и клонировать это. Затем:

  1. Обновление jenkins_cr.yaml файл https://github.com/webhookrelay/jenkins-operator-example.git к вашей собственной репозитории вилка (это обычно будет https://github.com/< Ваше имя пользователя или организация>/Jenkins-operator-example.git )
  2. Создайте его с Kubectl:
  kubectl apply -f jenkins_cr.yaml

Основные различия в этом файле из примера запаса:

  • Добавлено GitHub плагин, как нам понадобится, чтобы запустить задание
  • Семена получила githubpushtrigger: true установить тоже

Создание этого пиара должен привести к двум дополнительным контейнерам:

kubectl get pods
NAME                                      READY   STATUS    RESTARTS   AGE
jenkins-jenkins                           1/1     Running   0          7m11s
jenkins-operator-6dbbc458c9-gmx6p         1/1     Running   0          18m
seed-job-agent-jenkins-65cc4bc684-9ztr5   1/1     Running   0          6m21s

Давайте подключимся к Дженкинсу. Во -первых, получите имя пользователя и пароль:

kubectl --namespace jenkins get secret jenkins-operator-credentials-jenkins -o 'jsonpath={.data.user}' | base64 -d
kubectl --namespace jenkins get secret jenkins-operator-credentials-jenkins -o 'jsonpath={.data.password}' | base64 -d

Затем в одном терминальном начале перенаправления портов:

kubectl port-forward jenkins-jenkins 8080:8080

А потом просто откройте http://localhost: 8080 в вашем браузере.

Веб -крюк эстафета

Получить свой ключ и секретная пара https://my.webhookrelay.com/tokens и установить их как переменные среды:

export RELAY_KEY=xxxxxxxxxxxx
export RELAY_SECRET=xxxxx

Добавьте репозиторий оператора реле Webhook и установите его:

helm repo add webhookrelay https://charts.webhookrelay.com
helm repo update
helm upgrade --install webhookrelay-operator --namespace=jenkins webhookrelay/webhookrelay-operator \
  --set credentials.key=$RELAY_KEY --set credentials.secret=$RELAY_SECRET

Оператор не пересылает WebHooks самостоятельно. Каждый созданный CR обеспечит развертывание агента, настроенное для маршрутизации конкретных ведер.

Из Пример оператора Репозиторий Нам нужно будет создать пользовательский ресурс реле Webhook:

kubectl apply -f webhookrelay_cr.yaml

Обратите внимание, что если у вас есть модифицированное имя Jenkins CR, вам нужно будет обновить полю webhookrelay_cr.yaml «назначение» из Пункт назначения: http://jenkins-operator-http-jenkins: 8080/github-webhook/ каковому ваш нынешний сервис Jenkins. Обычно это будет в формате Jenkins-operator-http- Анкет

Конфигурация GitHub

Этот шаг может быть автоматизирован, заставив Jenkins автоматически настроить репозитории GitHub для пересылки в эту конечную точку, однако для простоты и, чтобы стало более ясно, как он работает, мы добавим этот URL -адрес вручную.

Получите публичный URL -адрес вашего веб -реле Webhook

Чтобы получить свою публичную конечную точку, вы можете посетить https://my.webhookrelay.com/buckets страница или получить его через статус CR:

kubectl get webhookrelayforwards.forward.webhookrelay.com forward-to-jenkins -o 'jsonpath={.status.publicEndpoints[0]}'

Результат должен выглядеть как -то вроде:

$ kubectl get webhookrelayforwards.forward.webhookrelay.com forward-to-jenkins -o 'jsonpath={.status.publicEndpoints[0]}'
https://k0yv9ip5sxxp55ncsu936k.hooks.webhookrelay.com

Добавить настройки репозитория общего URL -адреса GitHub

Возьмите URL -адрес конечной точки общего пользования и добавьте его в свой репозиторий GitHub:

Используя трубопровод

Во -первых, когда создается трубопровод, запустите сборку вручную. После этого любой толчок к вашему репозиторию GitHub отправит веб -крюк через реле Webhook в ваш экземпляр Jenkins, который работает в кластере Kubernetes:

Этот учебник был первоначально опубликован на веб -сайте Webhook Relay: https://webhookrelay.com/v1/tutorials/webhooks-jenkins-operator-kubernetes.html

Оригинал: «https://dev.to/webhookrelay/easy-and-secure-jenkins-operator-deployment-on-kubernetes-1jn8»