Рубрики
Uncategorized

Настройка цепочки инструментов DevOps на кластере Kubernetes. Часть — 2/3

Вступление Это в продолжении моей предыдущей статьи — настройка цепочки инструментов DevOps на … Tagged with Kubernetes, DevOps.

Вступление

Это продолжается в моей предыдущей статье — настройка цепочки инструментов DevOps на кластере Kubernetes. Часть — 1/3. В этой статье я рассказал о том, как настроить Sonarqube и PostgreSQL на кластере Kubernetes.

Настройка Sonarqube на Kubernetes Cluster

Sonarqube-это веб-платформа с открытым исходным кодом, используемая для измерения и анализа качества исходного кода. Анализ качества кода делает ваш код более надежным и читаемым. Он может анализировать и управлять кодом более чем 20 языков программирования.

Sonarqube нужна база данных, и она поддерживает базы данных, такие как MySQL, PostgreSQL, MSSQL и т. Д. В этой статье я использовал PostgreSQL в качестве базы данных для Sonarqube. Я следил за последовательности создания компонентов PostgreSQL DB Kubernetes, за которыми следуют компоненты Sonarqube Kubernetes.

Позвольте мне настроить PostgreSQL и Sonarqube на кластере Kubernetes с помощью приведенных ниже сценариев.

Настройка PostgreSQL на Kubernetes Cluster

В этом разделе я установил PostQl на кластере Kubernetes с помощью приведенных ниже сценариев.

Класс хранения для PostgreSQL

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

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

Постоянный объем для PostgreSQL

Я создал постоянный объем и выделил 4 ГБ в качестве места для хранения для PostgreSQL.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: sonar-postgres-data
  labels: 
    app: Sonar-Postgres-Data
  annotations:
    volume.beta.kubernetes.io/storage-class: "sonar-storage"
spec:
  accessModes: 
    - ReadWriteOnce
  resources:
    requests: 
      storage: 4Gi

Развертывание для PostgreSQL

Я создал сценарий развертывания, который вытягивает изображение PostgreSQL, если изображение не является переносным в кластере Kubernetes. Я настроил PostgreSQL с портом 5432. Его данные сохраняются на постоянном томе, который создается на предыдущем шаге. Это развертывание создано с помощью одной копии. Postgresql Учетные данные базы данных (имя пользователя и пароль) упоминаются в четком тексте. В производственной среде не рекомендуется иметь пароль в четком тексте.

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: postgresql-sonar
spec:
  replicas: 1
  template:
    metadata: 
      name: postgresql-sonar
      labels:
        app: postgresql-sonar
    spec:
      containers:
        - name: postgreqsl-sonar
          image: postgres:9.6
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 5432
              name: postgresql-port
          env:
            - name: POSTGRES_USER
              value: sonar
            - name: POSTGRES_PASSWORD
              value: password
            - name: PGDATA
              value: /var/lib/postgresql/data/pgdata
          volumeMounts:
            - name: db-data
              mountPath: /var/lib/postgresql/data
      volumes:
        - name: db-data
          persistentVolumeClaim:
            claimName: sonar-postgres-data

Сервис для PostgreSQL

Я создал службу для PostgreSQL на порту 5432.

kind: Service
apiVersion: v1
metadata:
  name: postgresql-db
  labels:
    name: postgresql-db
spec:
  type: NodePort
  ports:
  - port: 5432
    targetPort: 5432
    protocol: TCP
    name: postgresql-db-port
  selector:
    app: postgresql-sonar

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

Я создал все необходимые компоненты Kubernetes для базы данных Sonarqube в предыдущих разделах. Теперь я собираюсь создать компоненты Kubernetes для Sonarqube, которые будут использовать все компоненты базы данных.

Развертывание для Sonarqube

Я создал скрипт развертывания, который вытягивает изображение Sonarqube, если нет в кластере Kubernetes и настроено на порту 9000. Я настроил Sonarqube для подключения к DB PostgreSQL, который выявляется на порту 5432, предоставляя учетные данные пользователя.

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: sonar
spec:
  replicas: 1
  template:
    metadata:
      name: sonar
      labels: 
        app: sonar
    spec: 
      containers:
      - name: sonar
        image: sonarqube:6.7
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9000
          name: sonarport
        env: 
          - name: SONARQUBE_JDBC_USERNAME
            value: sonar
          - name: SONARQUBE_JDBC_PASSWORD
            value: password
          - name: SONARQUBE_JDBC_URL
            value: jdbc:postgresql://postgresql-db:5432/sonar

Служба для Sonarqube

Я создал сервис для Soanrqube на своем порту 9000 по умолчанию.

kind: Service
apiVersion: v1
metadata:
  name: sonar
  labels:
    app: sonar
spec:
  type: NodePort
  ports:
    - port: 9200
      targetPort: 9000
      name: sonarport
  selector:
    app: sonar
  type: LoadBalancer

К настоящему времени я создал класс хранения, постоянный объем, развертывание и обслуживание Sonarqube и PostgreSQL DB, и он работает и работает.

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

Вывод

К настоящему времени я рассмотрел, как настроить Sonarqube и PostgreSQL с одним репликат в кластере Kubernetes. Я буду обсуждать настройку Nexus в последней статье.

ПРИМЕЧАНИЕ. Файлы YAML имеют пространство, чувствительное к пространству, и сценарии, доступные в этой статье, могут иметь вкладки вместо пробелов. Эти сценарии потерпят неудачу, если вы скопируете и вставляете, не изменяя вкладку на пробел.

Оригинал: «https://dev.to/sr_balaji/devops-tool-chain-setup-on-kubernetes-cluster-part—23-3job»