В этом уроке мы настроим трубопровод 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
- Kubernetes окружающая среда, minikube, k3s, gke, aks и т. Д.
- Настроенный kubectl
- Git
Установка
Установка будет состоять из нескольких шагов:
- Установка оператора Дженкинса
- Установка оператора реле 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 репозиторий и клонировать это. Затем:
- Обновление jenkins_cr.yaml файл
https://github.com/webhookrelay/jenkins-operator-example.git
к вашей собственной репозитории вилка (это обычно будетhttps://github.com/< Ваше имя пользователя или организация>/Jenkins-operator-example.git
) - Создайте его с 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»