lifesub/deployment/database/deploy_db.sh
2025-02-16 04:18:14 +09:00

79 lines
1.6 KiB
Bash

#!/bin/bash
# Namespace 존재 여부 확인 후 생성
if ! kubectl get namespace lifesub-ns &> /dev/null; then
kubectl create namespace lifesub-ns
fi
# Namespace 전환
kubens lifesub-ns
# 각 서비스별 설정 및 배포
for service in member mysub recommend; do
# values 파일 생성
cat << EOF > values-${service}.yaml
# PostgreSQL 아키텍처 설정
architecture: standalone
# 글로벌 설정
global:
postgresql:
auth:
postgresPassword: "Passw0rd"
replicationPassword: "Passw0rd"
database: "${service}"
username: "admin"
password: "Passw0rd"
storageClass: "managed"
# Primary 설정
primary:
persistence:
enabled: true
storageClass: "managed"
size: 10Gi
resources:
limits:
memory: "1Gi"
cpu: "1"
requests:
memory: "0.5Gi"
cpu: "0.5"
# 네트워크 설정
service:
type: ClusterIP
ports:
postgresql: 5432
# 보안 설정
securityContext:
enabled: true
fsGroup: 1001
runAsUser: 1001
EOF
# Service 파일 생성
cat << EOF > svc-${service}.yaml
apiVersion: v1
kind: Service
metadata:
name: ${service}-external
spec:
ports:
- name: tcp-postgresql
port: 5432
protocol: TCP
targetPort: tcp-postgresql
selector:
app.kubernetes.io/component: primary
app.kubernetes.io/instance: ${service}
sessionAffinity: None
type: LoadBalancer
EOF
# Helm으로 PostgreSQL 설치
helm upgrade -i ${service} -f values-${service}.yaml bitnami/postgresql --version 14.3.2
# 외부 서비스 생성
kubectl apply -f svc-${service}.yaml
done