mirror of
https://github.com/cna-bootcamp/lifesub.git
synced 2025-12-06 08:06:24 +00:00
79 lines
1.6 KiB
Bash
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 |