DevOps DevOps
产品简介
产品安装
快速入门
使用指南
开发指南
FAQ
  • PostgreSQL
  • Namespace
  • ConfigMap
  • PV 和 PVC
  • Deployment
  • Service

# PostgreSQL

# Namespace

$ kubectl create namespace devops

# ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: postgres-config
  namespace: devops
  labels:
    app: postgres
data:
  POSTGRES_DB: postgresdb
  POSTGRES_USER: devops
  POSTGRES_PASSWORD: testdevops
  initdbscripts.sh: |
    set -e
    psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
            CREATE DATABASE sonar;
            CREATE DATABASE dtrack;
    EOSQL

# PV 和 PVC

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgresql-pv
spec:
  capacity:          
    storage: 10Gi
  accessModes:       
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  nfs:            
    path: /backup/data/postgresql   
    server: 10.16.16.41
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: postgresql-data 
  namespace: devops
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi  

设置挂载目录权限

chown -R 70:70 /backup/data/postgresql

# Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres
  namespace: devops
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgres
          image: postgres:15.2-alpine3.17
          imagePullPolicy: IfNotPresent
          ports:
            - name: postgresql
              containerPort: 5432
          env: 
            - name: POSTGRES_DB
              valueFrom:
                configMapKeyRef:
                  name: postgres-config
                  key: POSTGRES_DB
            - name: POSTGRES_USER
              valueFrom:
                configMapKeyRef:
                  name: postgres-config
                  key: POSTGRES_USER
            - name: POSTGRES_PASSWORD
              valueFrom:
                configMapKeyRef:
                  name: postgres-config
                  key: POSTGRES_PASSWORD
          volumeMounts:
            - name: data
              mountPath: /var/lib/postgresql/data
              name: postgredb
            - name: postgresql-config-initdbscripts
              mountPath: /docker-entrypoint-initdb.d/initdbscripts.sh
              subPath: initdbscripts.sh
              readOnly: false
      volumes:
        - name: postgredb
          persistentVolumeClaim:
            claimName: postgresql-data
        - name: postgresql-config-initdbscripts
          configMap:
            name: postgres-config
            items:
              - key: initdbscripts.sh
                path: initdbscripts.sh

# Service

apiVersion: v1
kind: Service
metadata:
  name: postgres
  namespace: devops
  labels:
    app: postgres
spec:
  type: NodePort
  ports:
   - port: 5432
     targetPort: postgresql
     nodePort: 32146
  selector:
   app: postgres

← Nexus SonarQube →