1. 개요
- K8S 환경에 PostgreSQL을 설치하자.
- 볼륨은 StorageClass를 이용하여 EBS를 사용함.
2. StorageClass 생성
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: mall-db-storage provisioner: kubernetes.io/aws-ebs parameters: type: gp2 fsType: ext4 reclaimPolicy: Delete mountOptions: - debug volumeBindingMode: Immediate
3. Secret 생성
apiVersion: v1 kind: Secret metadata: name: mall-db-secret namespace: mall stringData: POSTGRES_DB: malldb POSTGRES_USER: malladmin POSTGRES_PASSWORD: mall00 PGDATA: /var/lib/postgresql/data/pgdata
4. PVC & Deployment
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mall-db-pv-claim
labels:
app: mall
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: mall-db-storage
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mall-db
namespace: mall
spec:
replicas: 1
selector:
matchLabels:
app: mall
tier: postgresql
template:
metadata:
labels:
app: mall
tier: postgresql
spec:
containers:
- name: postgres
image: postgres:13.3
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
envFrom:
- secretRef:
name: mall-db-secret
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: mall-db-pv
volumes:
- name: mall-db-pv
persistentVolumeClaim:
claimName: mall-db-pv-claim
5. 접속 테스트
컨테이너 접속 후에 (kubectl exec ...)
# psql -U malladmin -d mall00
