{{- $appName := "postgres-exporter" }} {{- $nodeSelector := dig .Values.env .Values.postgres.nodeSelector._default .Values.postgres.nodeSelector }} {{- $tolerations := dig .Values.env .Values.postgres.tolerations._default .Values.postgres.tolerations }} --- apiVersion: apps/v1 kind: Deployment metadata: name: {{ $appName }} labels: app: {{ $appName }} spec: replicas: 1 selector: matchLabels: app: {{ $appName }} template: metadata: labels: app: {{ $appName }} {{- if .Values.secretsStore.enabled }} annotations: secrets-store.deckhouse.io/role: "{{ .Values.env }}-{{ .Chart.Name }}-role" secrets-store.deckhouse.io/env-from-path: "{{ .Values.env }}/data/{{ .Chart.Name }}" {{- end }} spec: volumes: - configMap: defaultMode: 420 name: {{ $appName }}-config name: {{ $appName }}-config serviceAccountName: {{ .Chart.Name }}-sa {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} {{- if $nodeSelector }} nodeSelector: {{ toYaml $nodeSelector | nindent 8 }} {{- end }} {{- if $tolerations }} tolerations: {{ toYaml $tolerations | nindent 6 }} {{- end }} containers: - name: postgres-exporter volumeMounts: - mountPath: /etc/postgres_exporter.yml name: {{ $appName }}-config subPath: postgres_exporter.yml image: {{ .Values.image.postgresqlExporter }} args: - --web.listen-address=:9187 - --config.file=/etc/postgres_exporter.yml - --collector.stat_statements - --collector.stat_activity_autovacuum - --collector.statio_user_indexes - --collector.postmaster - --collector.database_wraparound - --collector.long_running_transactions - --collector.process_idle - --collector.stat_wal_receiver - --collector.stat_statements.exclude_databases=postgres,template0,template1 - --collector.stat_statements.include_query - --collector.stat_statements.limit=100 - --collector.stat_statements.query_length=2048 ports: - name: http-metrics containerPort: 9187 protocol: TCP livenessProbe: httpGet: path: / port: http-metrics initialDelaySeconds: 15 periodSeconds: 9 readinessProbe: httpGet: path: / port: http-metrics initialDelaySeconds: 20 periodSeconds: 11 resources: requests: cpu: 50m memory: 64Mi limits: memory: 64Mi securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 65534 restartPolicy: Always --- apiVersion: v1 kind: Service metadata: name: {{ $appName }} labels: app: {{ $appName }} prometheus.deckhouse.io/custom-target: postgresql spec: type: ClusterIP ports: - name: http-metrics port: 9187 targetPort: http-metrics protocol: TCP selector: app: {{ $appName }} --- apiVersion: v1 kind: ConfigMap metadata: name: {{ $appName }}-config data: postgres_exporter.yml: | auth_modules: postgres: type: userpass userpass: username: {{ .Values.postgresqlExporter.user | quote }} options: sslmode: disable --- apiVersion: v1 kind: Secret metadata: labels: app: {{ $appName }} name: {{ $appName }}-env type: Opaque data: PG_EXPORTER_CONSTANT_LABELS: {{ printf "cluster=%s" .Chart.Name | b64enc | quote }}