apiVersion: v1 kind: ConfigMap metadata: name: prometheus-config namespace: monitoring data: prometheus.yml: | global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'server1-node' static_configs: - targets: ['173.249.20.244:9100'] labels: server: 'server1' - job_name: 'my-cadvisor' static_configs: - targets: ['173.249.20.244:8094'] labels: server: 'server1' owner: 'ameni' - job_name: 'server1-blackbox' static_configs: - targets: ['173.249.20.244:9115'] labels: server: 'server1' --- apiVersion: apps/v1 kind: Deployment metadata: name: prometheus namespace: monitoring spec: replicas: 1 selector: matchLabels: {app: prometheus} strategy: {type: Recreate} template: metadata: labels: {app: prometheus} spec: securityContext: fsGroup: 65534 containers: - name: prometheus image: prom/prometheus:latest args: - --config.file=/etc/prometheus/prometheus.yml - --storage.tsdb.retention.time=15d - --storage.tsdb.path=/prometheus ports: [{containerPort: 9090}] resources: limits: {memory: 512Mi} volumeMounts: - {name: config, mountPath: /etc/prometheus/prometheus.yml, subPath: prometheus.yml} - {name: data, mountPath: /prometheus} volumes: - name: config configMap: {name: prometheus-config} - name: data persistentVolumeClaim: {claimName: prometheus-data} --- apiVersion: v1 kind: Service metadata: name: prometheus namespace: monitoring spec: selector: {app: prometheus} ports: [{port: 9090, targetPort: 9090}] --- apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: monitoring spec: replicas: 1 selector: matchLabels: {app: grafana} strategy: {type: Recreate} template: metadata: labels: {app: grafana} spec: securityContext: fsGroup: 472 containers: - name: grafana image: grafana/grafana:latest env: - {name: GF_SECURITY_ADMIN_PASSWORD, value: admin} ports: [{containerPort: 3000}] resources: limits: {memory: 256Mi} volumeMounts: - {name: data, mountPath: /var/lib/grafana} volumes: - name: data persistentVolumeClaim: {claimName: grafana-data} --- apiVersion: v1 kind: Service metadata: name: grafana namespace: monitoring spec: selector: {app: grafana} ports: [{port: 3000, targetPort: 3000}] --- apiVersion: apps/v1 kind: Deployment metadata: name: sonarqube-db namespace: monitoring spec: replicas: 1 selector: matchLabels: {app: sonarqube-db} strategy: {type: Recreate} template: metadata: labels: {app: sonarqube-db} spec: securityContext: fsGroup: 999 containers: - name: sonarqube-db image: postgres:15 env: - {name: POSTGRES_USER, value: sonar} - {name: POSTGRES_PASSWORD, value: sonar} - {name: POSTGRES_DB, value: sonar} ports: [{containerPort: 5432}] volumeMounts: - {name: data, mountPath: /var/lib/postgresql/data} volumes: - name: data persistentVolumeClaim: {claimName: sonarqube-db-data} --- apiVersion: v1 kind: Service metadata: name: sonarqube-db namespace: monitoring spec: selector: {app: sonarqube-db} ports: [{port: 5432, targetPort: 5432}] --- apiVersion: apps/v1 kind: Deployment metadata: name: sonarqube namespace: monitoring spec: replicas: 1 selector: matchLabels: {app: sonarqube} strategy: {type: Recreate} template: metadata: labels: {app: sonarqube} spec: securityContext: fsGroup: 1000 containers: - name: sonarqube image: sonarqube:community env: - {name: SONAR_ES_BOOTSTRAP_CHECKS_DISABLE, value: "true"} - {name: SONAR_JDBC_URL, value: "jdbc:postgresql://sonarqube-db:5432/sonar"} - {name: SONAR_JDBC_USERNAME, value: sonar} - {name: SONAR_JDBC_PASSWORD, value: sonar} - {name: SONAR_SEARCH_JAVAADDITIONALOPTS, value: "-Xms512m -Xmx512m"} - {name: SONAR_WEB_JAVAADDITIONALOPTS, value: "-Xms512m -Xmx1536m"} ports: [{containerPort: 9000}] resources: limits: {memory: 3Gi} volumeMounts: - {name: data, mountPath: /opt/sonarqube/data} - {name: logs, mountPath: /opt/sonarqube/logs} - {name: extensions, mountPath: /opt/sonarqube/extensions} volumes: - name: data persistentVolumeClaim: {claimName: sonarqube-data} - name: logs persistentVolumeClaim: {claimName: sonarqube-logs} - name: extensions persistentVolumeClaim: {claimName: sonarqube-extensions} --- apiVersion: v1 kind: Service metadata: name: sonarqube namespace: monitoring spec: selector: {app: sonarqube} ports: [{port: 9000, targetPort: 9000}]