This commit is contained in:
2024-08-02 17:24:31 +07:00
parent 23fa8b4ff5
commit 89eec9691a
9 changed files with 146 additions and 64 deletions

View File

@@ -12,12 +12,13 @@ helm install zalando -n zalando --create-namespace charts/postgres-operator
kubectl apply -f 3.zalando/baseCluster.yaml
```
## больше
документация
https://github.com/zalando/postgres-operator/blob/master/docs/administrator.md
* документация
<https://github.com/zalando/postgres-operator/blob/master/docs/administrator.md>
баунсер без проблему SSL_MODE=true
* баунсер без проблемы SSL_MODE=true
hub.realmanual.ru/pub/zalando-pgbouncer:master-32
* в конфиг patroni надо добавить
- hostssl all all 0.0.0.0/0 trust

View File

@@ -65,12 +65,4 @@ spec:
- host all all 0.0.0.0/0 md5
- host all all ::1/128 md5
- host replication standby 0.0.0.0/0 md5 # TODO
resources:
requests:
cpu: "0.4"
memory: "500Mi"
limits:
cpu: "0.8"
memory: "1Gi"
---

View File

@@ -33,7 +33,10 @@ spec:
name: rmu.rm-psql
key: username
- name: DB_PASSWORD
value: "123"
valueFrom:
secretKeyRef:
name: rmu.rm-psql
key: password
- name: DB_NAME
value: rm
volumeMounts:
@@ -62,7 +65,11 @@ data:
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME
database: process.env.DB_NAME,
ssl: {
require: true,
rejectUnauthorized: false
}
});
client.connect()

View File

@@ -92,23 +92,3 @@ spec:
secretKeyRef:
name: postgres.rm-psql
key: password
- name: "zalando-df-exporter"
image: "hub.realmanual.ru/pub/df-exporter:0.1"
ports:
- name: df-exporter
containerPort: 9873
protocol: TCP
env:
- name: "MYPATH"
value: "/home/postgres/pgdata"
- name: "PORT"
value: "9873"
resources:
limits:
cpu: 100m
memory: 256M
requests:
cpu: 50m
memory: 128M
---

41
4.monitoring/alerts.yaml Normal file
View File

@@ -0,0 +1,41 @@
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
generation: 2
labels:
prometheus: zalando
role: alert-rules
name: prometheus-zalando-rules
namespace: zalando
spec:
groups:
- name: zalando.rules
rules:
- alert: PG exporter
annotations:
description: >-
Failed to scrape {{ $labels.job }} on {{ $labels.namespace }} for
more than 2 minutes.
title: PG exporter is down
expr: up{job="zalando-monitoring"} == 0
for: 2m
labels:
severity: warning
- alert: PG InstanceDown
annotations:
description: Failed to scrape {{$labels.namespace}} for more than 3 minutes.
title: PG Instance is down
expr: pg_up == 0
for: 3m
labels:
severity: critical
- alert: PG Lag
annotations:
description: >-
Failed replication on replica {{$labels.namespace}} for more than
3 minutes.
title: PG Peplication lag
expr: pg_replication_slots_pg_wal_lsn_diff > 1024
for: 3m
labels:
severity: critical

View File

@@ -0,0 +1,19 @@
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
labels:
app: psql-pg-exporter
name: zalando-pg-exporter
namespace: rm-pgsql
spec:
podMetricsEndpoints:
- path: /metrics
port: exporter
relabelings:
- action: replace
replacement: rke-first-cluster
targetLabel: cluster
scheme: http
selector:
matchLabels:
application: spilo

View File

@@ -0,0 +1,24 @@
apiVersion: v1
kind: Secret
metadata:
name: logical-backup-secrets
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ template "postgres-operator-ui.name" . }}
helm.sh/chart: {{ template "postgres-operator-ui.chart" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- with .Values.service.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
stringData:
LOGICAL_BACKUP_PROVIDER: s3
LOGICAL_BACKUP_S3_ENDPOINT: https://s3-nsk.bildme.ru
LOGICAL_BACKUP_S3_REGION: ru-nsk
LOGICAL_BACKUP_S3_BUCKET: zalando-backups
LOGICAL_BACKUP_S3_BUCKET_PREFIX: ''
LOGICAL_BACKUP_S3_RETENTION_TIME: '2 week'
LOGICAL_BACKUP_S3_SSE: ''
AWS_ACCESS_KEY_ID: zalando-user
AWS_SECRET_ACCESS_KEY: C7oMRPqifdHRgNJMfmPKoNhyw

View File

@@ -42,13 +42,16 @@ envs:
# IMPORTANT: While operator chart and UI chart are independent, this is the interface between
# UI and operator API. Insert the service name of the operator API here!
appUrl: "http://localhost:8081"
operatorApiUrl: "http://postgres-operator:8080"
operatorApiUrl: "http://zalando-operator-postgres-operator:8080" #TODO
operatorClusterNameLabel: "cluster-name"
resourcesVisible: "False"
# Set to "*" to allow viewing/creation of clusters in all namespaces
targetNamespace: "default"
teams:
targetNamespace: "*" #TODO default: default NS
teams: #TODO
- "acid"
- "zalando"
- "rm"
- "realmanual"
# Extra pod annotations
podAnnotations:
@@ -59,32 +62,41 @@ podAnnotations:
# https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/
# https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#environment-variables
# UI specific env variables can be found here: https://github.com/zalando/postgres-operator/blob/master/ui/operator_ui/main.py
extraEnvs:
[]
extraEnvs: #TODO
# Exemple of settings to make snapshot view working in the ui when using AWS
# - name: WALE_S3_ENDPOINT
- name: AWS_ENDPOINT
# value: https+path://s3.us-east-1.amazonaws.com:443
# - name: SPILO_S3_BACKUP_PREFIX
# value: spilo/
# - name: AWS_ACCESS_KEY_ID
# valueFrom:
# secretKeyRef:
# name: <postgres operator secret with AWS token>
# key: AWS_ACCESS_KEY_ID
# - name: AWS_SECRET_ACCESS_KEY
# valueFrom:
# secretKeyRef:
# name: <postgres operator secret with AWS token>
# key: AWS_SECRET_ACCESS_KEY
# - name: AWS_DEFAULT_REGION
# valueFrom:
# secretKeyRef:
# name: <postgres operator secret with AWS token>
# key: AWS_DEFAULT_REGION
# - name: SPILO_S3_BACKUP_BUCKET
# value: <s3 bucket used by the operator>
# - name: "USE_AWS_INSTANCE_PROFILE"
# value: "true"
valueFrom:
secretKeyRef:
name: logical-backup-secrets
key: LOGICAL_BACKUP_S3_ENDPOINT
- name: SPILO_S3_BACKUP_PREFIX
valueFrom:
secretKeyRef:
name: logical-backup-secrets
key: LOGICAL_BACKUP_S3_BUCKET_PREFIX
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: logical-backup-secrets
key: AWS_ACCESS_KEY_ID
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: logical-backup-secrets
key: AWS_SECRET_ACCESS_KEY
- name: AWS_DEFAULT_REGION
valueFrom:
secretKeyRef:
name: logical-backup-secrets
key: LOGICAL_BACKUP_S3_REGION
- name: SPILO_S3_BACKUP_BUCKET
valueFrom:
secretKeyRef:
name: logical-backup-secrets
key: LOGICAL_BACKUP_S3_BUCKET
- name: "USE_AWS_INSTANCE_PROFILE"
value: "true"
# configure UI service
service:

View File

@@ -439,7 +439,13 @@ configConnectionPooler:
# max db connections the pooler should hold
connection_pooler_max_db_connections: 60
# default pooling mode
connection_pooler_mode: "transaction"
connection_pooler_mode: "transaction" #TODO
# Session pooling: В этом режиме каждое клиентское соединение связывается с сервером на время клиентской сессии. Когда клиент завершает работу, соединение возвращается в пул.
# Transaction pooling: Соединение используется только в течение одной транзакции, после чего оно возвращается в пул.
# Это позволяет более эффективно управлять подключениями для однопоточных приложений или транзакционных нагрузок.
# Statement pooling: Соединение используется для одного запроса, после чего оно возвращается в пул. Такой режим полезен для кратковременных клиентских запросов.
# number of pooler instances
connection_pooler_number_of_instances: 2
# default resources