Рубрики
Uncategorized

Развлеченные настройки цепи инструментов на кластере Kubernetes. Часть — 1/3

Введение DEVOPS стала частью управления жизненным циклом программного цита с CI / CD PI … Тег с Куберанетами, дежоптом.

Введение

DevOps стал частью управления программным циклом программного цита с помощью CI/CD-трубопровода, чтобы обеспечить изменение на производство в автоматическом порядке.

В CI/CD-трубопроводе популярные инструменты с открытым исходным кодом являются Github для хранилища исходного кода, Jenkins для непрерывной интеграции, сборки, тестирования и развертывания, SONARQUBE для анализа статического кода и Nexus для репозитория артефактов. Есть много инструментов с открытым исходным кодом, доступными для тестирования. Эта статья не так много о DEVOPS или CI/CD-CD, скорее, она описывает, как создать конвейер Ci/C CD на кластерной среде Kubernetes, используя kubectl.

Контейнеры:

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

Кубернеты:

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

Эта запись описывает о том, как создавать кластер Kubernetes с Jenkins, Sonar, Nexus как Pods на AWS Cloud. Это не включает в себя подробную информацию о функциональности Дженкинса, Сонаркибе, Nexus.

Я уже пишу статью о создании кластера Kubernetes на облако AWS с одним главным и двумя рабочими узлами. Для дальнейших деталей ссылается на ссылку — https://dev.to/sr_blaji/kubernetes-cluster-setup-aws-aws-aws-aws-13m6

Компоненты Kubernetes

Список компонентов Kubernetes, используемых в этом кластере, ущары ниже. Я предоставил очень высокоуровневые детали на компонентах Кубератеса. Для получения дополнительной информации, пожалуйста, обратитесь в https://kubernetes.io Отказ

  • Кластер: это набор физической или виртуальной машины и, в Куберене, все машины управляются как кластер.

  • Узел: Это рабочая машина в Куберане. Это может быть виртуальная или физическая машина. (В этой статье я использовал экземпляр EC2 для предоставления кластера Kubernetes)

  • POD: Это группа одной или нескольких контейнеров (таких как Docker Containers), с общей памятью/сетью и набором спецификаций для запуска контейнеров. Содержимое POD всегда находится совместно, кооперативно и работает в общем контексте.

  • Развертывание: он предоставляет декларативные обновления для стручек и реплизментов.

  • Постоянный объем: это кусок хранения в кластере, который был предоставлен администратором. Это узел в кластерном ресурсе.

  • Устойчивый тому: это запрос на хранение пользователем.

  • Сервис: это абстракция, которая определяет логический набор POD (S)

  • StorageClass: он обеспечивает способ для администраторов описывать «классы» хранения, которые они предлагают.

Кластерная среда Kubernetes

В этой кластере Kubernetes я создал один экземпляр Jenkins, Sonarqube и Nexus и настроен таким образом, что один экземпляр этих серверов всегда доступен. Данные этих серверов сохраняются, и даже в случае свысения этих серверов побуждается, он автоматически восстановит с помощью данных, которые сохраняются.

Я создал отдельный класс хранения для Jenkins, Sonarqube & Nexus с постоянством данных. Каждый из серверов доступен в качестве отдельного стручка с их портами, выставленными в качестве обслуживания. Я использовал развертывание для создания стручков для отдельных инструментов.

Установка Jenkins на кластере Kubernetes

Дженкинс — открытый источник Инструмент непрерывной интеграции (CI)/непрерывной доставки (CD) инструмент оркестрации. Он предлагает простой способ настроить среду CI/CD для любых языков и репозиториев исходных кодов. Я создал следующий список компонентов Kubernetes для размещения сервера Jenkins на кластере.

Класс хранения для Дженкинса

Я создал класс хранения на кластере для данных Jenkins.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: jenkins-storage
  labels: 
    app: jenkins-storage
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  zone: eu-west-2a
allowVolumeExpansion: true

Постоянный том для Дженкинса

Я создал настойчивое требование тома и выделил 2 ГБ в качестве места для хранения для преседающих данных Jenkins.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jenkins-data
  annotations:
    volume.beta.kubernetes.io/storage-class: "jenkins-storage"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

Развертывание для Дженкинса

Я создал сценарий развертывания, который тянет официальный образ Jenkins из Интернета, и я настроил Jenkins с портом 8080 по умолчанию. Его данные сохраняются на постоянном томе, который создается на предыдущем шаге. Это развертывание создается с одной репликой, что означает, что Kubernetes убедитесь, что один экземпляр Jenkins всегда работает и работает. В этой конфигурации порт не подвергается кластеру, который будет покрыт в следующем разделе.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      securityContext:
        runAsUser: 1000
        fsGroup: 1000
      containers:
      - name: jenkins
        image: jenkins:2.60.3
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
        volumeMounts:
          - name: jenkins-home
            mountPath: /var/jenkins_home
      volumes:
        - name: jenkins-home
          persistentVolumeClaim:
            claimName: jenkins-data

Сервис Дженкинс

Я создал услугу, чтобы открыть Jenkins на порт 9500, а не на своем порту по умолчанию.

apiVersion: v1
kind: Service
metadata:
  name: jenkins
  labels:
    app: jenkins
spec:
  type: NodePort
  ports:
    - port: 9500
      targetPort: 8080
      name: jenkinsport
  selector:
    app: jenkins
  type: LoadBalancer

Я создал класс хранения, постоянный том, развертывание и обслуживание Дженкинса до сих пор. Все компоненты для Jenkins создаются, и он работает.

$kubectl get deployment
$kubectl get pod
$kubectl get svc

Заключение

В этой статье я охватил, как настроить Jenkins с одним репликетом на кластере Kubernetes. Я охвачу настройки Sonarqube и Nexus в следующих статьях.

Примечание:

Файлы yaml — это чувствительны к пространству, а сценарии, которые доступны в этой статье, могут иметь пространства вкладки вместо пробела. Эти сценарии потерпят неудачу, если вы копируете и вставьте, не изменив вкладку в пробел.

Оригинал: «https://dev.to/sr_balaji/devops-tool-chain-setup-on-kubernetes-cluster-59cn»