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