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