Вступление
Это продолжается в моей предыдущей статье — настройка цепочки инструментов 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»