juntekim.com/db/k8s/postgres/stripe-to-invoice-db.yaml
2026-02-14 14:05:47 +00:00

96 lines
2.1 KiB
YAML

# --------------------------------------------------
# PersistentVolume (hostPath on mist)
# --------------------------------------------------
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-${ENV}-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
hostPath:
path: /home/kimjunte/k8s_storage/postgres/${PG_VOLUME}
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- mist
---
# --------------------------------------------------
# PersistentVolumeClaim
# --------------------------------------------------
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-${ENV}-pvc
namespace: ${NAMESPACE}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: local-storage
---
# --------------------------------------------------
# PostgreSQL Deployment
# --------------------------------------------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-${ENV}
namespace: ${NAMESPACE}
spec:
replicas: 1
selector:
matchLabels:
app: postgres
env: ${ENV}
template:
metadata:
labels:
app: postgres
env: ${ENV}
spec:
containers:
- name: postgres
image: postgres:16
ports:
- containerPort: 5432
envFrom:
- secretRef:
name: postgres-${ENV}
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: postgres-${ENV}-pvc
---
# --------------------------------------------------
# PostgreSQL Service (internal)
# --------------------------------------------------
apiVersion: v1
kind: Service
metadata:
name: postgres-${ENV}
namespace: ${NAMESPACE}
spec:
type: ClusterIP
selector:
app: postgres
env: ${ENV}
ports:
- port: 5432
targetPort: 5432