templates/configmap.yaml を追加
This commit is contained in:
80
templates/configmap.yaml
Normal file
80
templates/configmap.yaml
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ include "postgresql.fullname" . }}-config
|
||||||
|
labels:
|
||||||
|
{{- include "postgresql.labels" . | nindent 4 }}
|
||||||
|
data:
|
||||||
|
{{- if .Values.replication.enabled }}
|
||||||
|
primary-init.sh: |
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# レプリケーションユーザーの作成
|
||||||
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||||
|
CREATE USER {{ .Values.postgres.replicationUser }} WITH REPLICATION ENCRYPTED PASSWORD '${REPLICATION_PASSWORD}';
|
||||||
|
EOSQL
|
||||||
|
|
||||||
|
# pg_hba.confの設定
|
||||||
|
echo "host replication {{ .Values.postgres.replicationUser }} 0.0.0.0/0 md5" >> ${PGDATA}/pg_hba.conf
|
||||||
|
|
||||||
|
# postgresql.confの設定
|
||||||
|
cat >> ${PGDATA}/postgresql.conf <<EOF
|
||||||
|
wal_level = replica
|
||||||
|
max_wal_senders = 10
|
||||||
|
max_replication_slots = 10
|
||||||
|
hot_standby = on
|
||||||
|
synchronous_commit = {{ .Values.replication.synchronousCommit }}
|
||||||
|
synchronous_standby_names = 'ANY {{ .Values.replication.numSynchronousReplicas }} (*)'
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# PostgreSQLの再起動
|
||||||
|
pg_ctl reload
|
||||||
|
|
||||||
|
replica-init.sh: |
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# データディレクトリが空の場合のみレプリケーションを初期化
|
||||||
|
if [ ! -s "${PGDATA}/PG_VERSION" ]; then
|
||||||
|
echo "Initializing replica from primary..."
|
||||||
|
|
||||||
|
rm -rf ${PGDATA}/*
|
||||||
|
|
||||||
|
PGPASSWORD=${REPLICATION_PASSWORD} pg_basebackup \
|
||||||
|
-h {{ include "postgresql.fullname" . }}-primary \
|
||||||
|
-D ${PGDATA} \
|
||||||
|
-U {{ .Values.postgres.replicationUser }} \
|
||||||
|
-v -P -W -R
|
||||||
|
|
||||||
|
# standby.signalの作成
|
||||||
|
touch ${PGDATA}/standby.signal
|
||||||
|
|
||||||
|
echo "Replica initialization completed"
|
||||||
|
fi
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.backup.enabled }}
|
||||||
|
backup.sh: |
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
BACKUP_DIR="/backup"
|
||||||
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||||
|
BACKUP_FILE="${BACKUP_DIR}/backup_${TIMESTAMP}.sql.gz"
|
||||||
|
RETENTION_DAYS={{ .Values.backup.retention }}
|
||||||
|
|
||||||
|
echo "Starting backup at ${TIMESTAMP}"
|
||||||
|
|
||||||
|
# バックアップの実行
|
||||||
|
pg_dumpall -U ${POSTGRES_USER} | gzip > ${BACKUP_FILE}
|
||||||
|
|
||||||
|
# 古いバックアップの削除
|
||||||
|
find ${BACKUP_DIR} -name "backup_*.sql.gz" -mtime +${RETENTION_DAYS} -delete
|
||||||
|
|
||||||
|
echo "Backup completed: ${BACKUP_FILE}"
|
||||||
|
|
||||||
|
# バックアップサイズの確認
|
||||||
|
ls -lh ${BACKUP_FILE}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
Reference in New Issue
Block a user