add manifest

This commit is contained in:
hiondal
2025-02-16 04:18:14 +09:00
parent 4d2bf7fb45
commit 7b0d5d4a75
169 changed files with 1005 additions and 21 deletions
+79
View File
@@ -0,0 +1,79 @@
#!/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
+89
View File
@@ -0,0 +1,89 @@
# PostgreSQL 아키텍처 설정
architecture: replication
# 글로벌 설정
global:
postgresql:
auth:
postgresPassword: "Passw0rd"
replicationPassword: "Passw0rd"
database: "member"
username: "admin"
password: "Passw0rd"
storageClass: "managed"
# Primary 설정
primary:
persistence:
enabled: true
storageClass: "managed"
size: 10Gi
resources:
limits:
memory: "4Gi"
cpu: "1"
requests:
memory: "2Gi"
cpu: "0.5"
# 성능 최적화 설정
extraEnvVars:
- name: POSTGRESQL_SHARED_BUFFERS
value: "1GB"
- name: POSTGRESQL_EFFECTIVE_CACHE_SIZE
value: "3GB"
- name: POSTGRESQL_MAX_CONNECTIONS
value: "200"
- name: POSTGRESQL_WORK_MEM
value: "16MB"
- name: POSTGRESQL_MAINTENANCE_WORK_MEM
value: "256MB"
# 고가용성 설정
podAntiAffinityPreset: soft
# Secondary 설정
readReplicas:
replicaCount: 2
persistence:
enabled: true
storageClass: "managed"
size: 10Gi
resources:
limits:
memory: "2Gi"
cpu: "1"
requests:
memory: "1Gi"
cpu: "0.5"
# 성능 최적화 설정
extraEnvVars:
- name: POSTGRESQL_SHARED_BUFFERS
value: "1GB"
- name: POSTGRESQL_EFFECTIVE_CACHE_SIZE
value: "3GB"
- name: POSTGRESQL_MAX_CONNECTIONS
value: "200"
- name: POSTGRESQL_WORK_MEM
value: "16MB"
- name: POSTGRESQL_MAINTENANCE_WORK_MEM
value: "256MB"
# 고가용성 설정
podAntiAffinityPreset: soft
# 네트워크 설정
service:
type: ClusterIP
ports:
postgresql: 5432
# 보안 설정
securityContext:
enabled: true
fsGroup: 1001
runAsUser: 1001
+89
View File
@@ -0,0 +1,89 @@
# PostgreSQL 아키텍처 설정
architecture: replication
# 글로벌 설정
global:
postgresql:
auth:
postgresPassword: "Passw0rd"
replicationPassword: "Passw0rd"
database: "mysub"
username: "admin"
password: "Passw0rd"
storageClass: "managed"
# Primary 설정
primary:
persistence:
enabled: true
storageClass: "managed"
size: 10Gi
resources:
limits:
memory: "4Gi"
cpu: "1"
requests:
memory: "2Gi"
cpu: "0.5"
# 성능 최적화 설정
extraEnvVars:
- name: POSTGRESQL_SHARED_BUFFERS
value: "1GB"
- name: POSTGRESQL_EFFECTIVE_CACHE_SIZE
value: "3GB"
- name: POSTGRESQL_MAX_CONNECTIONS
value: "200"
- name: POSTGRESQL_WORK_MEM
value: "16MB"
- name: POSTGRESQL_MAINTENANCE_WORK_MEM
value: "256MB"
# 고가용성 설정
podAntiAffinityPreset: soft
# Secondary 설정
readReplicas:
replicaCount: 2
persistence:
enabled: true
storageClass: "managed"
size: 10Gi
resources:
limits:
memory: "2Gi"
cpu: "1"
requests:
memory: "1Gi"
cpu: "0.5"
# 성능 최적화 설정
extraEnvVars:
- name: POSTGRESQL_SHARED_BUFFERS
value: "1GB"
- name: POSTGRESQL_EFFECTIVE_CACHE_SIZE
value: "3GB"
- name: POSTGRESQL_MAX_CONNECTIONS
value: "200"
- name: POSTGRESQL_WORK_MEM
value: "16MB"
- name: POSTGRESQL_MAINTENANCE_WORK_MEM
value: "256MB"
# 고가용성 설정
podAntiAffinityPreset: soft
# 네트워크 설정
service:
type: ClusterIP
ports:
postgresql: 5432
# 보안 설정
securityContext:
enabled: true
fsGroup: 1001
runAsUser: 1001
+89
View File
@@ -0,0 +1,89 @@
# PostgreSQL 아키텍처 설정
architecture: replication
# 글로벌 설정
global:
postgresql:
auth:
postgresPassword: "Passw0rd"
replicationPassword: "Passw0rd"
database: "recommend"
username: "admin"
password: "Passw0rd"
storageClass: "managed"
# Primary 설정
primary:
persistence:
enabled: true
storageClass: "managed"
size: 10Gi
resources:
limits:
memory: "4Gi"
cpu: "1"
requests:
memory: "2Gi"
cpu: "0.5"
# 성능 최적화 설정
extraEnvVars:
- name: POSTGRESQL_SHARED_BUFFERS
value: "1GB"
- name: POSTGRESQL_EFFECTIVE_CACHE_SIZE
value: "3GB"
- name: POSTGRESQL_MAX_CONNECTIONS
value: "200"
- name: POSTGRESQL_WORK_MEM
value: "16MB"
- name: POSTGRESQL_MAINTENANCE_WORK_MEM
value: "256MB"
# 고가용성 설정
podAntiAffinityPreset: soft
# Secondary 설정
readReplicas:
replicaCount: 2
persistence:
enabled: true
storageClass: "managed"
size: 10Gi
resources:
limits:
memory: "2Gi"
cpu: "1"
requests:
memory: "1Gi"
cpu: "0.5"
# 성능 최적화 설정
extraEnvVars:
- name: POSTGRESQL_SHARED_BUFFERS
value: "1GB"
- name: POSTGRESQL_EFFECTIVE_CACHE_SIZE
value: "3GB"
- name: POSTGRESQL_MAX_CONNECTIONS
value: "200"
- name: POSTGRESQL_WORK_MEM
value: "16MB"
- name: POSTGRESQL_MAINTENANCE_WORK_MEM
value: "256MB"
# 고가용성 설정
podAntiAffinityPreset: soft
# 네트워크 설정
service:
type: ClusterIP
ports:
postgresql: 5432
# 보안 설정
securityContext:
enabled: true
fsGroup: 1001
runAsUser: 1001
+89
View File
@@ -0,0 +1,89 @@
# PostgreSQL 아키텍처 설정
architecture: replication
# 글로벌 설정
global:
postgresql:
auth:
postgresPassword: "Passw0rd"
replicationPassword: "Passw0rd"
database: "${DATABASE}"
username: "admin"
password: "Passw0rd"
storageClass: "managed"
# Primary 설정
primary:
persistence:
enabled: true
storageClass: "managed"
size: 10Gi
resources:
limits:
memory: "4Gi"
cpu: "1"
requests:
memory: "2Gi"
cpu: "0.5"
# 성능 최적화 설정
extraEnvVars:
- name: POSTGRESQL_SHARED_BUFFERS
value: "1GB"
- name: POSTGRESQL_EFFECTIVE_CACHE_SIZE
value: "3GB"
- name: POSTGRESQL_MAX_CONNECTIONS
value: "200"
- name: POSTGRESQL_WORK_MEM
value: "16MB"
- name: POSTGRESQL_MAINTENANCE_WORK_MEM
value: "256MB"
# 고가용성 설정
podAntiAffinityPreset: soft
# Secondary 설정
readReplicas:
replicaCount: 2
persistence:
enabled: true
storageClass: "managed"
size: 10Gi
resources:
limits:
memory: "2Gi"
cpu: "1"
requests:
memory: "1Gi"
cpu: "0.5"
# 성능 최적화 설정
extraEnvVars:
- name: POSTGRESQL_SHARED_BUFFERS
value: "1GB"
- name: POSTGRESQL_EFFECTIVE_CACHE_SIZE
value: "3GB"
- name: POSTGRESQL_MAX_CONNECTIONS
value: "200"
- name: POSTGRESQL_WORK_MEM
value: "16MB"
- name: POSTGRESQL_MAINTENANCE_WORK_MEM
value: "256MB"
# 고가용성 설정
podAntiAffinityPreset: soft
# 네트워크 설정
service:
type: ClusterIP
ports:
postgresql: 5432
# 보안 설정
securityContext:
enabled: true
fsGroup: 1001
runAsUser: 1001
@@ -0,0 +1,9 @@
# lifesub/deployment/manifest/configmaps/common-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: common-config
data:
JPA_DDL_AUTO: update
JPA_SHOW_SQL: "true"
ALLOWED_ORIGINS: "http://lifesub-web"
@@ -0,0 +1,10 @@
# lifesub/deployment/manifest/configmaps/member-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: member-config
data:
SERVER_PORT: "8081"
POSTGRES_HOST: "member-postgresql"
POSTGRES_PORT: "5432"
POSTGRES_DB: "member"
@@ -0,0 +1,13 @@
# lifesub/deployment/manifest/configmaps/mysub-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysub-config
data:
SERVER_PORT: "8082"
POSTGRES_HOST: "mysub-postgresql"
POSTGRES_PORT: "5432"
POSTGRES_DB: "mysub"
FEE_LEVEL_COLLECTOR: "50000"
FEE_LEVEL_ADDICT: "100000"
@@ -0,0 +1,10 @@
# lifesub/deployment/manifest/configmaps/recommend-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: recommend-config
data:
SERVER_PORT: "8083"
POSTGRES_HOST: "recommend-postgresql"
POSTGRES_PORT: "5432"
POSTGRES_DB: "recommend"
@@ -0,0 +1,55 @@
# lifesub/deployment/manifest/deployments/member-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: member
spec:
replicas: 1
selector:
matchLabels:
app: member
template:
metadata:
labels:
app: member
spec:
containers:
- name: member
image: dg0200cr.azurecr.io/lifesub/member:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 8081
resources:
requests:
cpu: 256m
memory: 256Mi
limits:
cpu: 1024m
memory: 1024Mi
envFrom:
- configMapRef:
name: common-config
- configMapRef:
name: member-config
- secretRef:
name: common-secret
- secretRef:
name: member-secret
#startupProbe:
# tcpSocket:
# port: 5432
# initialDelaySeconds: 30
# periodSeconds: 10
# failureThreshold: 30
readinessProbe:
httpGet:
path: /actuator/health
port: 8081
initialDelaySeconds: 10
periodSeconds: 5
livenessProbe:
httpGet:
path: /actuator/health
port: 8081
initialDelaySeconds: 60
periodSeconds: 15
@@ -0,0 +1,55 @@
# lifesub/deployment/manifest/deployments/mysub-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysub
spec:
replicas: 1
selector:
matchLabels:
app: mysub
template:
metadata:
labels:
app: mysub
spec:
containers:
- name: mysub
image: dg0200cr.azurecr.io/lifesub/mysub:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 8082
resources:
requests:
cpu: 256m
memory: 256Mi
limits:
cpu: 1024m
memory: 1024Mi
envFrom:
- configMapRef:
name: common-config
- configMapRef:
name: mysub-config
- secretRef:
name: common-secret
- secretRef:
name: mysub-secret
#startupProbe:
# tcpSocket:
# port: 5432
# initialDelaySeconds: 30
# periodSeconds: 10
# failureThreshold: 30
readinessProbe:
httpGet:
path: /actuator/health
port: 8082
initialDelaySeconds: 10
periodSeconds: 5
livenessProbe:
httpGet:
path: /actuator/health
port: 8082
initialDelaySeconds: 60
periodSeconds: 15
@@ -0,0 +1,55 @@
# lifesub/deployment/manifest/deployments/recommend-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: recommend
spec:
replicas: 1
selector:
matchLabels:
app: recommend
template:
metadata:
labels:
app: recommend
spec:
containers:
- name: recommend
image: dg0200cr.azurecr.io/lifesub/recommend:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 8083
resources:
requests:
cpu: 256m
memory: 256Mi
limits:
cpu: 1024m
memory: 1024Mi
envFrom:
- configMapRef:
name: common-config
- configMapRef:
name: recommend-config
- secretRef:
name: common-secret
- secretRef:
name: recommend-secret
#startupProbe:
# tcpSocket:
# port: 5432
# initialDelaySeconds: 30
# periodSeconds: 10
# failureThreshold: 30
readinessProbe:
httpGet:
path: /actuator/health
port: 8083
initialDelaySeconds: 10
periodSeconds: 5
livenessProbe:
httpGet:
path: /actuator/health
port: 8083
initialDelaySeconds: 60
periodSeconds: 15
@@ -0,0 +1,8 @@
# lifesub/deployment/manifest/secrets/common-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: common-secret
type: Opaque
stringData:
JWT_SECRET_KEY: "8O2HQ13etL2BWZvYOiWsJ5uWFoLi6NBUG8divYVoCgtHVvlk3dqRksMl16toztDUeBTSIuOOPvHIrYq11G2BwQ"
@@ -0,0 +1,11 @@
# lifesub/deployment/manifest/secrets/member-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: member-secret
type: Opaque
stringData:
POSTGRES_USER: "admin"
POSTGRES_PASSWORD: "Passw0rd"
JWT_ACCESS_TOKEN_VALIDITY: "3600000"
JWT_REFRESH_TOKEN_VALIDITY: "86400000"
@@ -0,0 +1,9 @@
# lifesub/deployment/manifest/secrets/mysub-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysub-secret
type: Opaque
stringData:
POSTGRES_USER: "admin"
POSTGRES_PASSWORD: "Passw0rd"
@@ -0,0 +1,9 @@
# lifesub/deployment/manifest/secrets/recommend-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: recommend-secret
type: Opaque
stringData:
POSTGRES_USER: "admin"
POSTGRES_PASSWORD: "Passw0rd"
@@ -0,0 +1,12 @@
# lifesub/deployment/manifest/services/member-service.yaml
apiVersion: v1
kind: Service
metadata:
name: member
spec:
selector:
app: member
ports:
- port: 80
targetPort: 8081
type: ClusterIP
@@ -0,0 +1,12 @@
# lifesub/deployment/manifest/services/mysub-service.yaml
apiVersion: v1
kind: Service
metadata:
name: mysub
spec:
selector:
app: mysub
ports:
- port: 80
targetPort: 8082
type: ClusterIP
@@ -0,0 +1,12 @@
# lifesub/deployment/manifest/services/recommend-service.yaml
apiVersion: v1
kind: Service
metadata:
name: recommend
spec:
selector:
app: recommend
ports:
- port: 80
targetPort: 8083
type: ClusterIP