postgres/.helm/templates/11-postgresql-exporter.yaml

133 lines
3.9 KiB
YAML

{{- $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 }}