반응형

많은 devops 서비스는 postgresql을 많이 쓰는 편이다. (jira, confluence, sonarqube 등)

 

그렇기 때문에 postgrsql 데이터베이스를 statefulset으로 구성하고자 한다

 

# PV 생성

apiVersion: v1
kind: PersistentVolume
metadata:
  namespace: devops
  name: postgresql-pv
spec:
  storageClassName: nfs-sc
  capacity:
    storage: 50Gi
  persistentVolumeReclaimPolicy: Retain  
  accessModes:
  - ReadWriteMany
  nfs:
    server: 12.34.56.78
    path: '/volume1/nfs_root/postgresql'
    readOnly: false

# PVC 생성

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgresql-pvc
  namespace: devops
spec:
  storageClassName: nfs-sc
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 50Gi

 

# StatefulSet 생성

kind: StatefulSet
metadata:
  namespace: devops
  name: postgresql-statefulset
spec:
  serviceName: postgresql-statefulset
  replicas: 1
  selector:
    matchLabels:
      app: postgresql-statefulset
  template:
    metadata:
      labels:
        app: postgresql-statefulset
    spec:
      containers:
        - name: postgresql-statefulset
          image: postgres:11
          env:
            - name: POSTGRES_PASSWORD
              value: "!admin06"
            - name: POSTGRES_USER
              value: "devops"
            - name: POSTGRES_ENCODING
              value: "UNICODE"
            - name: POSTGRES_COLLATE
              value: "C"
            - name: POSTGRES_COLLATE_TYPE
              value: "C"
          resources:
            requests:
              cpu: 2
              memory: 4Gi
            limits:
              cpu: 2
              memory: 4Gi
          ports:
            - containerPort: 5432
          volumeMounts:
            - mountPath: "/var/lib/postgresql/data/"
              name: postgresql-pv
      volumes:
        - name: postgresql-pv
          persistentVolumeClaim:
            claimName: postgresql-pvc

# Service 생성

- 앞으로 다른 pod에서 postgresql 접근시 postgresql-svc:5432 로 접근하면 된다

apiVersion: v1
kind: Service
metadata:
  name: postgresql-svc
  namespace: devops
spec:
  ports:
    - port: 5432
      targetPort: 5432
      protocol: TCP
      name: http
  selector:
    app: postgresql-statefulset

 

 

반응형

+ Recent posts