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