Enapter / charts

Enapter Helm Charts
MIT License
48 stars 49 forks source link

Add prometheus-operator ServiceMonitor #17

Closed sergeyshaykhullin closed 4 years ago

sergeyshaykhullin commented 4 years ago

Add ServiceMonitor support and existing exporter port/path integration https://github.com/Enapter/charts/issues/16

Templated version ```yaml --- # Source: keydb/templates/secret-utils.yaml apiVersion: v1 kind: Secret metadata: name: test-release-keydb-utils labels: helm.sh/chart: keydb-0.13.0 app.kubernetes.io/name: keydb app.kubernetes.io/instance: test-release app.kubernetes.io/version: "6.0.13" app.kubernetes.io/managed-by: Helm type: Opaque stringData: server.sh: | #!/bin/bash set -euxo pipefail host="$(hostname)" port="6379" replicas=() for node in {0..2}; do if [ "$host" != "test-release-keydb-${node}" ]; then replicas+=("--replicaof test-release-keydb-${node}.test-release-keydb ${port}") fi done exec keydb-server /etc/keydb/redis.conf \ --active-replica yes \ --multi-master yes \ --appendonly no \ --bind 0.0.0.0 \ --port "$port" \ --protected-mode no \ --server-threads 2 \ "${replicas[@]}" --- # Source: keydb/templates/svc.yaml # Headless service for proper name resolution apiVersion: v1 kind: Service metadata: name: test-release-keydb labels: helm.sh/chart: keydb-0.13.0 app.kubernetes.io/name: keydb app.kubernetes.io/instance: test-release app.kubernetes.io/version: "6.0.13" app.kubernetes.io/managed-by: Helm spec: type: ClusterIP clusterIP: None ports: - name: server port: 6379 protocol: TCP targetPort: keydb - name: redis-exporter port: 9121 protocol: TCP targetPort: redis-exporter selector: app.kubernetes.io/name: keydb app.kubernetes.io/instance: test-release --- # Source: keydb/templates/sts.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: test-release-keydb labels: helm.sh/chart: keydb-0.13.0 app.kubernetes.io/name: keydb app.kubernetes.io/instance: test-release app.kubernetes.io/version: "6.0.13" app.kubernetes.io/managed-by: Helm spec: replicas: 3 serviceName: test-release-keydb selector: matchLabels: app.kubernetes.io/name: keydb app.kubernetes.io/instance: test-release template: metadata: annotations: checksum/secret-utils: adb0768f4f213187058f0ee0229dc47b90da6ffd5e47e78ea6056f053b274a53 prometheus.io/scrape: "true" prometheus.io/path: "/metrics" prometheus.io/port: "9121" labels: helm.sh/chart: keydb-0.13.0 app.kubernetes.io/name: keydb app.kubernetes.io/instance: test-release app.kubernetes.io/version: "6.0.13" app.kubernetes.io/managed-by: Helm spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - keydb - key: app.kubernetes.io/instance operator: In values: - test-release topologyKey: "kubernetes.io/hostname" containers: - name: keydb image: eqalpha/keydb:x86_64_v6.0.13 imagePullPolicy: IfNotPresent command: - /utils/server.sh ports: - name: keydb containerPort: 6379 protocol: TCP livenessProbe: initialDelaySeconds: 15 tcpSocket: port: keydb readinessProbe: initialDelaySeconds: 10 tcpSocket: port: keydb resources: {} volumeMounts: - name: keydb-data mountPath: /data - name: utils mountPath: /utils readOnly: true - name: redis-exporter image: oliver006/redis_exporter:v1.8.0-alpine imagePullPolicy: IfNotPresent args: env: - name: REDIS_ADDR value: redis://localhost:6379 livenessProbe: httpGet: path: /metrics port: 9121 initialDelaySeconds: 15 readinessProbe: httpGet: path: /metrics port: 9121 initialDelaySeconds: 10 resources: {} ports: - name: redis-exporter containerPort: 9121 securityContext: {} volumes: - name: utils secret: secretName: test-release-keydb-utils defaultMode: 0700 items: - key: server.sh path: server.sh volumeClaimTemplates: - metadata: name: keydb-data annotations: labels: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi --- # Source: keydb/templates/sm.yaml apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: test-release-keydb labels: helm.sh/chart: keydb-0.13.0 app.kubernetes.io/name: keydb app.kubernetes.io/instance: test-release app.kubernetes.io/version: "6.0.13" app.kubernetes.io/managed-by: Helm a: b annotations: c: d spec: selector: matchLabels: helm.sh/chart: keydb-0.13.0 app.kubernetes.io/name: keydb app.kubernetes.io/instance: test-release app.kubernetes.io/version: "6.0.13" app.kubernetes.io/managed-by: Helm namespaceSelector: any: true endpoints: - port: redis-exporter path: /metrics interval: 30s scrapeTimeout: 20s ```
Antiarchitect commented 4 years ago

@sergeyshaykhullin Will look into this in a couple of days. Thank you!