Как инициализировать несколько PostgreSQL БД на голом железе Kubernetes через Helm - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь создать несколько баз данных после установки Helm chart bitnami / postgresql. Я добавил параметр initdbScripts в команду установки helm:

helm install postgresql bitnami/postgresql --namespace=namespace_name \
    --set global.postgresql.postgresqlUsername=username,global.postgresql.postgresqlPassword=password123 \
    --set initdbScripts."init\.sql"="CREATE DATABASE db1;
GRANT ALL PRIVILEGES ON DATABASE db1 TO username;
CREATE DATABASE db2;
GRANT ALL PRIVILEGES ON DATABASE db2 TO username;
CREATE DATABASE db3;
GRANT ALL PRIVILEGES ON DATABASE db3 TO username;"

Модуль начинает давать сбой с CrashLoopBackOff, и в журнале есть строка: touch: cannot touch '/bitnami/postgresql/.user_scripts_initialized': Permission denied

Мое предположение почему это не работает, так это то, что я установил диаграмму в кластер с голым железом, и, поскольку в ней не настроена динамическая c подготовка, я сначала создал том:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: postgresql-data
  labels:
    type: local
    app: postgresql
  annotations:
    volume.alpha.kubernetes.io/storage-class: postgresql-data
spec:
  storageClassName: postgresql-data
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: "/opt/postgresql-data"

Том успешно заявлено PV C, которое я не создаю вручную.

Есть ли способ инициализировать несколько баз данных с помощью initdbScripts в кластере BM Kubernetes? Подойдет любое решение со сценарием SQL или в сочетании с Bash.

Версия Helm и Kubernetes : версия helm:

version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"}

версия kubectl:

Client Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.6-beta.0", GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", GitTreeState:"clean", BuildDate:"2020-01-15T08:26:26Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.5", GitCommit:"e6503f8d8f769ace2f338794c914a96fc335df0f", GitTreeState:"clean", BuildDate:"2020-06-26T03:39:24Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}

Мое решение основано на лучшем ответе в этом потоке: PostgreSQL в Helm: Параметр initdbScripts

...