| @ -0,0 +1,3 @@ | |||||
| # kubernetes-grafana | |||||
| Read about the grafana implementation on Kubernetes here https://devopscube.com/setup-grafana-kubernetes/ | |||||
| @ -0,0 +1,42 @@ | |||||
| apiVersion: apps/v1 | |||||
| kind: Deployment | |||||
| metadata: | |||||
| name: grafana | |||||
| namespace: monitoring | |||||
| spec: | |||||
| replicas: 1 | |||||
| selector: | |||||
| matchLabels: | |||||
| app: grafana | |||||
| template: | |||||
| metadata: | |||||
| name: grafana | |||||
| labels: | |||||
| app: grafana | |||||
| spec: | |||||
| containers: | |||||
| - name: grafana | |||||
| image: grafana/grafana:latest | |||||
| ports: | |||||
| - name: grafana | |||||
| containerPort: 3000 | |||||
| resources: | |||||
| limits: | |||||
| memory: "1Gi" | |||||
| cpu: "1000m" | |||||
| requests: | |||||
| memory: 500M | |||||
| cpu: "500m" | |||||
| volumeMounts: | |||||
| - mountPath: /var/lib/grafana | |||||
| name: grafana-storage | |||||
| - mountPath: /etc/grafana/provisioning/datasources | |||||
| name: grafana-datasources | |||||
| readOnly: false | |||||
| volumes: | |||||
| - name: grafana-storage | |||||
| emptyDir: {} | |||||
| - name: grafana-datasources | |||||
| configMap: | |||||
| defaultMode: 420 | |||||
| name: grafana-datasources | |||||
| @ -0,0 +1,21 @@ | |||||
| apiVersion: v1 | |||||
| kind: ConfigMap | |||||
| metadata: | |||||
| name: grafana-datasources | |||||
| namespace: monitoring | |||||
| data: | |||||
| prometheus.yaml: |- | |||||
| { | |||||
| "apiVersion": 1, | |||||
| "datasources": [ | |||||
| { | |||||
| "access":"proxy", | |||||
| "editable": true, | |||||
| "name": "prometheus", | |||||
| "orgId": 1, | |||||
| "type": "prometheus", | |||||
| "url": "http://prometheus-service.monitoring.svc:8080", | |||||
| "version": 1 | |||||
| } | |||||
| ] | |||||
| } | |||||
| @ -0,0 +1,16 @@ | |||||
| apiVersion: v1 | |||||
| kind: Service | |||||
| metadata: | |||||
| name: grafana | |||||
| namespace: monitoring | |||||
| annotations: | |||||
| prometheus.io/scrape: 'true' | |||||
| prometheus.io/port: '3000' | |||||
| spec: | |||||
| selector: | |||||
| app: grafana | |||||
| type: NodePort | |||||
| ports: | |||||
| - port: 3000 | |||||
| targetPort: 3000 | |||||
| nodePort: 32000 | |||||
| @ -0,0 +1,19 @@ | |||||
| # kubernetes prometheus Setup | |||||
| Complete prometheus monitoring stack setup on Kubernetes. | |||||
| You can find the full tutorial from here https://devopscube.com/setup-prometheus-monitoring-on-kubernetes/ | |||||
| Idea of this repo to understand all the components involved in prometheus setup. | |||||
| # Other Manifest repos | |||||
| Kube State metrics manifests: https://github.com/devopscube/kube-state-metrics-configs | |||||
| Alert manager Manifests: https://github.com/bibinwilson/kubernetes-alert-manager | |||||
| Grafana manifests: https://github.com/bibinwilson/kubernetes-grafana | |||||
| Node Exporter manifests: https://github.com/bibinwilson/kubernetes-node-exporter | |||||
| @ -0,0 +1,33 @@ | |||||
| apiVersion: rbac.authorization.k8s.io/v1 | |||||
| kind: ClusterRole | |||||
| metadata: | |||||
| name: prometheus | |||||
| rules: | |||||
| - apiGroups: [""] | |||||
| resources: | |||||
| - nodes | |||||
| - nodes/proxy | |||||
| - services | |||||
| - endpoints | |||||
| - pods | |||||
| verbs: ["get", "list", "watch"] | |||||
| - apiGroups: | |||||
| - extensions | |||||
| resources: | |||||
| - ingresses | |||||
| verbs: ["get", "list", "watch"] | |||||
| - nonResourceURLs: ["/metrics"] | |||||
| verbs: ["get"] | |||||
| --- | |||||
| apiVersion: rbac.authorization.k8s.io/v1 | |||||
| kind: ClusterRoleBinding | |||||
| metadata: | |||||
| name: prometheus | |||||
| roleRef: | |||||
| apiGroup: rbac.authorization.k8s.io | |||||
| kind: ClusterRole | |||||
| name: prometheus | |||||
| subjects: | |||||
| - kind: ServiceAccount | |||||
| name: default | |||||
| namespace: monitoring | |||||
| @ -0,0 +1,159 @@ | |||||
| apiVersion: v1 | |||||
| kind: ConfigMap | |||||
| metadata: | |||||
| name: prometheus-server-conf | |||||
| labels: | |||||
| name: prometheus-server-conf | |||||
| namespace: monitoring | |||||
| data: | |||||
| prometheus.rules: |- | |||||
| groups: | |||||
| - name: devopscube demo alert | |||||
| rules: | |||||
| - alert: High Pod Memory | |||||
| expr: sum(container_memory_usage_bytes) > 1 | |||||
| for: 1m | |||||
| labels: | |||||
| severity: slack | |||||
| annotations: | |||||
| summary: High Memory Usage | |||||
| prometheus.yml: |- | |||||
| global: | |||||
| scrape_interval: 5s | |||||
| evaluation_interval: 5s | |||||
| rule_files: | |||||
| - /etc/prometheus/prometheus.rules | |||||
| alerting: | |||||
| alertmanagers: | |||||
| - scheme: http | |||||
| static_configs: | |||||
| - targets: | |||||
| - "alertmanager.monitoring.svc:9093" | |||||
| scrape_configs: | |||||
| - job_name: 'node-exporter' | |||||
| kubernetes_sd_configs: | |||||
| - role: endpoints | |||||
| relabel_configs: | |||||
| - source_labels: [__meta_kubernetes_endpoints_name] | |||||
| regex: 'node-exporter' | |||||
| action: keep | |||||
| - job_name: 'kubernetes-apiservers' | |||||
| kubernetes_sd_configs: | |||||
| - role: endpoints | |||||
| scheme: https | |||||
| tls_config: | |||||
| ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | |||||
| bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token | |||||
| relabel_configs: | |||||
| - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] | |||||
| action: keep | |||||
| regex: default;kubernetes;https | |||||
| - job_name: 'kubernetes-nodes' | |||||
| scheme: https | |||||
| tls_config: | |||||
| ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | |||||
| bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token | |||||
| kubernetes_sd_configs: | |||||
| - role: node | |||||
| relabel_configs: | |||||
| - action: labelmap | |||||
| regex: __meta_kubernetes_node_label_(.+) | |||||
| - target_label: __address__ | |||||
| replacement: kubernetes.default.svc:443 | |||||
| - source_labels: [__meta_kubernetes_node_name] | |||||
| regex: (.+) | |||||
| target_label: __metrics_path__ | |||||
| replacement: /api/v1/nodes/${1}/proxy/metrics | |||||
| - job_name: 'kubernetes-pods' | |||||
| kubernetes_sd_configs: | |||||
| - role: pod | |||||
| relabel_configs: | |||||
| - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] | |||||
| action: keep | |||||
| regex: true | |||||
| - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] | |||||
| action: replace | |||||
| target_label: __metrics_path__ | |||||
| regex: (.+) | |||||
| - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] | |||||
| action: replace | |||||
| regex: ([^:]+)(?::\d+)?;(\d+) | |||||
| replacement: $1:$2 | |||||
| target_label: __address__ | |||||
| - action: labelmap | |||||
| regex: __meta_kubernetes_pod_label_(.+) | |||||
| - source_labels: [__meta_kubernetes_namespace] | |||||
| action: replace | |||||
| target_label: kubernetes_namespace | |||||
| - source_labels: [__meta_kubernetes_pod_name] | |||||
| action: replace | |||||
| target_label: kubernetes_pod_name | |||||
| - job_name: 'kube-state-metrics' | |||||
| static_configs: | |||||
| - targets: ['kube-state-metrics.kube-system.svc.cluster.local:8080'] | |||||
| - job_name: 'kubernetes-cadvisor' | |||||
| scheme: https | |||||
| tls_config: | |||||
| ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | |||||
| bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token | |||||
| kubernetes_sd_configs: | |||||
| - role: node | |||||
| relabel_configs: | |||||
| - action: labelmap | |||||
| regex: __meta_kubernetes_node_label_(.+) | |||||
| - target_label: __address__ | |||||
| replacement: kubernetes.default.svc:443 | |||||
| - source_labels: [__meta_kubernetes_node_name] | |||||
| regex: (.+) | |||||
| target_label: __metrics_path__ | |||||
| replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor | |||||
| - job_name: 'kubernetes-service-endpoints' | |||||
| kubernetes_sd_configs: | |||||
| - role: endpoints | |||||
| relabel_configs: | |||||
| - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] | |||||
| action: keep | |||||
| regex: true | |||||
| - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] | |||||
| action: replace | |||||
| target_label: __scheme__ | |||||
| regex: (https?) | |||||
| - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] | |||||
| action: replace | |||||
| target_label: __metrics_path__ | |||||
| regex: (.+) | |||||
| - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] | |||||
| action: replace | |||||
| target_label: __address__ | |||||
| regex: ([^:]+)(?::\d+)?;(\d+) | |||||
| replacement: $1:$2 | |||||
| - action: labelmap | |||||
| regex: __meta_kubernetes_service_label_(.+) | |||||
| - source_labels: [__meta_kubernetes_namespace] | |||||
| action: replace | |||||
| target_label: kubernetes_namespace | |||||
| - source_labels: [__meta_kubernetes_service_name] | |||||
| action: replace | |||||
| target_label: kubernetes_name | |||||
| @ -0,0 +1,38 @@ | |||||
| apiVersion: apps/v1 | |||||
| kind: Deployment | |||||
| metadata: | |||||
| name: prometheus-deployment | |||||
| namespace: monitoring | |||||
| labels: | |||||
| app: prometheus-server | |||||
| spec: | |||||
| replicas: 1 | |||||
| selector: | |||||
| matchLabels: | |||||
| app: prometheus-server | |||||
| template: | |||||
| metadata: | |||||
| labels: | |||||
| app: prometheus-server | |||||
| spec: | |||||
| containers: | |||||
| - name: prometheus | |||||
| image: prom/prometheus | |||||
| args: | |||||
| - "--config.file=/etc/prometheus/prometheus.yml" | |||||
| - "--storage.tsdb.path=/prometheus/" | |||||
| ports: | |||||
| - containerPort: 9090 | |||||
| volumeMounts: | |||||
| - name: prometheus-config-volume | |||||
| mountPath: /etc/prometheus/ | |||||
| - name: prometheus-storage-volume | |||||
| mountPath: /prometheus/ | |||||
| volumes: | |||||
| - name: prometheus-config-volume | |||||
| configMap: | |||||
| defaultMode: 420 | |||||
| name: prometheus-server-conf | |||||
| - name: prometheus-storage-volume | |||||
| emptyDir: {} | |||||
| @ -0,0 +1,33 @@ | |||||
| ## Nginx Ingress | |||||
| ## Follow https://devopscube.com/setup-ingress-kubernetes-nginx-controller/ | |||||
| apiVersion: extensions/v1beta1 | |||||
| kind: Ingress | |||||
| metadata: | |||||
| name: prometheus-ui | |||||
| namespace: monitoring | |||||
| annotations: | |||||
| kubernetes.io/ingress.class: nginx | |||||
| spec: | |||||
| rules: | |||||
| # Use the host you used in your kubernetes Ingress Configurations | |||||
| - host: prometheus.example.com | |||||
| http: | |||||
| paths: | |||||
| - backend: | |||||
| serviceName: prometheus-service | |||||
| servicePort: 8080 | |||||
| tls: | |||||
| - hosts: | |||||
| - prometheus.apps.shaker242.lab | |||||
| secretName: prometheus-secret | |||||
| --- | |||||
| apiVersion: v1 | |||||
| kind: Secret | |||||
| metadata: | |||||
| name: prometheus-secret | |||||
| namespace: monitoring | |||||
| data: | |||||
| # USe base64 in the certs | |||||
| tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZpVENDQkhHZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBRENCd0RFak1DRUdBMVVFQXhNYWFXNTAKWlhKdFpXUnBZWFJsTG5Ob1lXdGxjakkwTWk1c1lXSXhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJRXdoVwphWEpuYVc1cFlURVFNQTRHQTFVRUJ4TUhRbkpwYzNSdmR6RXNNQ29HQTFVRUNoTWpVMGhCUzBWU01qUXlJRXhoCllpQkRaWEowYVdacFkyRjBaU0JCZFhSb2IzSnBkSGt4T1RBM0JnTlZCQXNUTUZOSVFVdEZVakkwTWlCTVlXSWcKU1c1MFpYSnRaV1JwWVhSbElFTmxjblJwWm1sallYUmxJRUYxZEdodmNtbDBlVEFlRncweE9URXdNVGN4TmpFMgpNekZhRncweU1URXdNVFl4TmpFMk16RmFNSUdBTVIwd0d3WURWUVFERkJRcUxtRndjSE11YzJoaGEyVnlNalF5CkxteGhZakVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnVENGWnBjbWRwYm1saE1SQXdEZ1lEVlFRSEV3ZEMKY21semRHOTNNUll3RkFZRFZRUUtFdzFUU0VGTFJWSXlORElnVEdGaU1SVXdFd1lEVlFRTEV3eE1ZV0lnVjJWaQpjMmwwWlhNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURsRm16QVd0U09JcXZNCkpCV3Vuc0VIUmxraXozUmpSK0p1NTV0K0hCUG95YnZwVkJJeXMxZ3prby9INlkxa2Zxa1JCUzZZYVFHM2lYRFcKaDgzNlNWc3pNVUNVS3BtNXlZQXJRNzB4YlpPTXRJcjc1VEcrejFaRGJaeFUzbnh6RXdHdDN3U3c5OVJ0bjhWbgo5dEpTVXI0MHBHUytNemMzcnZOUFZRMjJoYTlhQTdGL2NVcGxtZUpkUnZEVnJ3Q012UklEcndXVEZjZkU3bUtxCjFSUkRxVDhETnlydlJmeUlubytmSkUxTmRuVEVMY0dTYVZlajhZVVFONHY0WFRnLzJncmxIN1pFT1VXNy9oYm8KUXh6NVllejVSam1wOWVPVUpvdVdmWk5FNEJBbGRZeVYxd2NPRXhRTmswck5BOU45ZXBjNWtUVVZQR3pOTWRucgovVXQxOWMweEFnTUJBQUdqZ2dIS01JSUJ4akFKQmdOVkhSTUVBakFBTUJFR0NXQ0dTQUdHK0VJQkFRUUVBd0lHClFEQUxCZ05WSFE4RUJBTUNCYUF3TXdZSllJWklBWWI0UWdFTkJDWVdKRTl3Wlc1VFUwd2dSMlZ1WlhKaGRHVmsKSUZObGNuWmxjaUJEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVWRhYy94MTR6dXl3RVZPSi9vTjdQeU82bApDZ2N3Z2RzR0ExVWRJd1NCMHpDQjBJQVVzZFM1WWxuWEpWTk5mRVpkTEQvL2RyNE5mV3FoZ2JTa2diRXdnYTR4CkdUQVhCZ05WQkFNVEVHTmhMbk5vWVd0bGNqSTBNaTVzWVdJeEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUkKRXdoV2FYSm5hVzVwWVRFUU1BNEdBMVVFQnhNSFFuSnBjM1J2ZHpFc01Db0dBMVVFQ2hNalUwaEJTMFZTTWpReQpJRXhoWWlCRFpYSjBhV1pwWTJGMFpTQkJkWFJvYjNKcGRIa3hNVEF2QmdOVkJBc1RLRk5JUVV0RlVqSTBNaUJNCllXSWdVbTl2ZENCRFpYSjBhV1pwWTJGMFpTQkJkWFJvYjNKcGRIbUNBUUV3SFFZRFZSMGxCQll3RkFZSUt3WUIKQlFVSEF3RUdDQ3NHQVFVRkNBSUNNRWdHQTFVZEVRUkJNRCtDRFhOb1lXdGxjakkwTWk1c1lXS0NFbUZ3Y0hNdQpjMmhoYTJWeU1qUXlMbXhoWW9JVUtpNWhjSEJ6TG5Ob1lXdGxjakkwTWk1c1lXS0hCTUNvQ3hBd0RRWUpLb1pJCmh2Y05BUUVMQlFBRGdnRUJBRzA3ZHFNdFZYdVQrckduQlN4SkVTNjNSa2pHaWd0c3ZtNTk4NSsrbjZjRW5kSDIKb2hjaGdmRUo5V0UxYUFWSDR4QlJSdVRIUFVJOFcvd3N1OFBxQ1o4NHpRQ2U2elAyeThEcmEwbjFzK2lIeHFwRAorS3BwZS91NkNLVTFEL0VWRU9MakpZd3pRYlFLSUlPL2Y1Q0JVbUpGWjBuZ1VIUEtvUDNyTXordTlBOWFvRkVrCnF3dDBadHFHcWpjMkh3Q09UOTlOVmFsZ29ISXljOElxQXJXdjNSWklraUlyaW9kSUdDMS94MVQ2dHhKcEUyRisKQzZ0Tzk0U0FVSUJwc2VORjNFbGNLNUsyTW44YVAzR3NnNFRHeElPN2Q1eUIvb3YwNGhOV2Q1S2QwWGorL1BvQgpLOU43cFQ1SVU2citLekNoeGlSdmRvZlAzV0VYN1ZkNEtLWG94K0U9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K | |||||
| tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2d0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktrd2dnU2xBZ0VBQW9JQkFRRGxGbXpBV3RTT0lxdk0KSkJXdW5zRUhSbGtpejNSalIrSnU1NXQrSEJQb3lidnBWQkl5czFnemtvL0g2WTFrZnFrUkJTNllhUUczaVhEVwpoODM2U1Zzek1VQ1VLcG01eVlBclE3MHhiWk9NdElyNzVURyt6MVpEYlp4VTNueHpFd0d0M3dTdzk5UnRuOFZuCjl0SlNVcjQwcEdTK016YzNydk5QVlEyMmhhOWFBN0YvY1VwbG1lSmRSdkRWcndDTXZSSURyd1dURmNmRTdtS3EKMVJSRHFUOEROeXJ2UmZ5SW5vK2ZKRTFOZG5URUxjR1NhVmVqOFlVUU40djRYVGcvMmdybEg3WkVPVVc3L2hibwpReHo1WWV6NVJqbXA5ZU9VSm91V2ZaTkU0QkFsZFl5VjF3Y09FeFFOazByTkE5TjllcGM1a1RVVlBHek5NZG5yCi9VdDE5YzB4QWdNQkFBRUNnZ0VCQU5zOHRjRDBiQnpHZzRFdk8yek0wMUJoKzZYN3daZk4wSjV3bW5kNjZYYkwKc1VEZ1N6WW9PbzNJZ2o5QWZTY2lyQ3YwdUozMVNFWmNpeGRVQ2tTdjlVNnRvTzdyUWdqeUZPM1N1dm5Wc3ZKaQpTZXc5Y0hqNk5jVDczak8rWkgxQVFFZ2tlWG5mQTNZU0JEcTFsSnhpUVZOaHpHUFY0Yzh4Wi9xUkhEbUVBTWR6CmwyaTB6dHJtcWRqSng4aTQxOXpGL1pVektoa2JtcVZVb3JjZ1lNdEt5QVloSENMYms2RFZtQ1FhbDlndEUrNjUKTmFTOEwxUW9yVWNVS0FoSTNKT2Q2TTRwbWRPaExITjZpZ0VwWFdVWGxBZjRITUZicHd5M1oxejNqZzVqTE9ragp6SWNDSVRaai9CYVZvSVc4QzJUb0pieUJKWkN6UDVjUVJTdkJOOGV4aUFFQ2dZRUEvV0Nxb2xVUWtOQkQrSnlPCklXOUJIRVlPS3oxRFZxNWxHRFhoNFMyTStpOU1pck5nUlcvL0NFRGhRUVVMZmtBTDgxMERPQmxsMXRRRUpGK3cKb1V6dWt6U1lkK1hTSnhicTM5YTF1ZGJldTNZU1ljeC8wTEEweGFQOW1sN1l1NXUraUZ4NGhwcnYyL2UrVklZQQpzTWV4WkZSODA3Q3M5YXN5MkdFT1l2aEdKb0VDZ1lFQTUzVm1weFlQbDFOYTVTMElJbEpuYm40dTl0RHpwYm5TCnpsMjBVQ3Q0d0N4STR6YjY1S1o4V1VaYlFzVTVaZ0VqTmxJWURXUisrd3kwVXh2SmNxUG5nS0xuOEdoSzhvOVEKeVJuR2dSYXAxWmNuUEdsbGdCeHQzM0s5TDNWMmJzMXBPcGJKMGlpOVdySWM4MU1wUVFpQjZ1RDRSZ216M0ZWSQpnUk5Ec2ZHS0xyRUNnWUVBbWY5ZXRqc3RUbGJHZVJ2dDVyUlB4bmR0dFNvTysyZ1RXWnVtSmM0aG1RMldYOWFWCjlKNFZTMWJqa1RrWHV5d0NGMis0dlNmeWxaZFd6U1M3bmMyOFV3dnNmekxYZjVxV05tV3hIYnBTdFcwVnp3c1QKeENyVWFDczd2ODlWdXZEMTVMc1BKZ0NWT0FSalVjd0FMM0d2aDJNeVd4ZE9pQ0g5VFRYd0lJYjFYQUVDZ1lBMwp4ZUptZ0xwaERJVHFsRjlSWmVubWhpRnErQTY5OEhrTG9TakI2TGZBRnV1NVZKWkFZcDIwSlcvNE51NE4xbGhWCnpwSmRKOG94Vkc1ZldHTENiUnhyc3RXUTZKQ213a0lGTTJEUjJsUXlVNm53dExUd21la2YzdFlYaVlad1RLNysKbnpjaW5RNkR2RWVkbW54bVgxWnU4cWJndVpYTmtmOVdtdjNFOHg4SkFRS0JnUUNNeDFWNHJIcUpwVXJMdkRVVQo4RzhXVGNrT2VFM2o2anhlcHMwcnExdEd1cE9XWW5saFlNYyt5VkMzMDZUc2dXUmJ5R1Y4YWNaRkF4WS9Ub2N5CmxpcXlUS1NGNUloYXhZQVpRTzVkOU1oTmN0bTRReDNaOUtTekZ5ZG01QlZVL0grMFFmUnRwM29TeFVneXRZNXkKV3ZDTFZ5bmNGZlZpL0VkaTdaZHM2aW82QVE9PQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg== | |||||
| @ -0,0 +1,17 @@ | |||||
| apiVersion: v1 | |||||
| kind: Service | |||||
| metadata: | |||||
| name: prometheus-service | |||||
| namespace: monitoring | |||||
| annotations: | |||||
| prometheus.io/scrape: 'true' | |||||
| prometheus.io/port: '9090' | |||||
| spec: | |||||
| selector: | |||||
| app: prometheus-server | |||||
| type: NodePort | |||||
| ports: | |||||
| - port: 8080 | |||||
| targetPort: 9090 | |||||
| nodePort: 30000 | |||||