如何在Kubernetes上使用新架构部署Postgres? [英] How to deploy postgres with a new schema on kubernetes?

查看:152
本文介绍了如何在Kubernetes上使用新架构部署Postgres?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已使用此链接在Kubernetes上部署Postgres.

I have used this link to deploy Postgres on Kubernetes.

下面是configmap:

below is the configmap :

apiVersion: v1
kind: ConfigMap
metadata:
  name: postgres-config
  labels:
    app: postgres
data:
  POSTGRES_DB: postgresdb
  POSTGRES_USER: postgresadmin
  POSTGRES_PASSWORD: admin123

和部署:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: postgres
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgres
          image: postgres:10.4
          imagePullPolicy: "IfNotPresent"
          ports:
            - containerPort: 5432
          envFrom:
            - configMapRef:
                name: postgres-config
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: postgredb
      volumes:
        - name: postgredb
          persistentVolumeClaim:
            claimName: postgres-pv-claim

我希望在configmap或部署yaml上进行简单配置将有助于在postgres db上创建新的架构.

I hope, a simple configuration at configmap or deployment yaml will help to create a new schema on postgres db.

推荐答案

您可以使用Kubernetes postStart生命周期挂钩在给定的Postgres DB上创建架构.只需使用生命周期块更新部署文件即可.

You can use Kubernetes postStart lifecycle hook to create your schema on given Postgres DB. Just update your deployment file with the lifecycle block.

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: postgres
  name: postgres
spec:
  containers:
  - image: postgres:10.4
    name: postgres
    resources: {}
    lifecycle:
      postStart:
        exec:
          command: ["/bin/bash","-c","sleep 20 && PGPASSWORD=$POSTGRES_PASSWORD psql $POSTGRES_DB -U $POSTGRES_USER -c \'CREATE SCHEMA IF NOT EXISTS key;\'"]
    envFrom:
    - configMapRef:
        name: postgres-config
    volumeMounts:
    - mountPath: /var/lib/postgresql/data
      name: data
  dnsPolicy: ClusterFirst
  restartPolicy: Never
  volumes:
  - name: data
    emptyDir: {}
status: {}

这篇关于如何在Kubernetes上使用新架构部署Postgres?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆