apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: postgres provisioner: rancher.io/local-path volumeBindingMode: WaitForFirstConsumer --- apiVersion: v1 kind: PersistentVolume metadata: name: task-pv-volume namespace: database labels: type: local spec: storageClassName: postgres capacity: storage: 50Gi accessModes: - ReadWriteOnce hostPath: path: "/rca/postgres/data" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: labels: deploy: postgres app.kubernetes.io/component: postgres name: postgres namespace: database spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi storageClassName: postgres --- apiVersion: v1 kind: ConfigMap metadata: name: postgres-configuration namespace: database labels: app: postgres data: POSTGRES_DB: postgres POSTGRES_USER: rootrca POSTGRES_PASSWORD: rca12345 --- apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres-statefulset namespace: database labels: app: postgres spec: serviceName: "postgres" replicas: 1 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers: - name: postgres image: postgres:12 envFrom: - configMapRef: name: postgres-configuration ports: - containerPort: 5432 name: postgresdb volumeMounts: - mountPath: /var/lib/postgresql/data name: pv-data volumes: - name: pv-data persistentVolumeClaim: claimName: postgres --- apiVersion: v1 kind: Service metadata: name: postgres-service namespace: database labels: app: postgres spec: ports: - port: 5432 nodePort: 30080 name: postgres type: NodePort selector: app: postgres