Создать или обновить существующий контейнер postgres db через задание kubernetes - PullRequest
0 голосов
/ 18 октября 2019

У меня есть контейнер Postgres DB, который работает в кластере Kubernetes. Мне нужно написать задание Kubernetes для подключения к контейнеру Postgres DB и запуска сценариев из файла SQL. Мне нужно понять две вещи здесь

  1. команды для запуска сценария SQL
  2. как загрузить файл SQL в файл Job.yaml

Вот мой примерфайл yaml для работы Kubernetes

apiVersion: batch/v1
kind: Job
metadata:
  name: init-db
spec:
  template:
    metadata:
      name:  init-db
      labels:
        app: init-postgresdb
    spec:
      containers:
      - image: "docker.io/bitnami/postgresql:11.5.0-debian-9-r60"
        name: init-db
        command:
        - psql -U postgres 
        env:
          - name: DB_HOST
            value: "knotted-iguana-postgresql"
          - name: DB_DATABASE
            value: "postgres"
      restartPolicy: OnFailure  

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Вы должны смонтировать файл SQL как файл из конфигурации и использовать psql cli для выполнения команд из смонтированного файла.

Для выполнения комманд из файла вы можете изменить параметр команды наyaml следующим образом:

psql -a -f sqlCommand.sql

Конфигурационную карту необходимо создать, используя файл, который вы притворяетесь смонтировать для получения более подробной информации здесь

kubectl create configmap sqlCommands.sql --from-file=sqlCommands.sql

Затем необходимо добавитьconfigmap и оператор mount в yaml вашего задания и измените команду для использования смонтированного файла.

apiVersion: batch/v1
kind: Job
metadata:
  name: init-db
spec:
  template:
    metadata:
      name:  init-db
      labels:
        app: init-postgresdb
    spec:
      containers:
      - image: "docker.io/bitnami/postgresql:11.5.0-debian-9-r60"
        name: init-db
        command: [ "bin/sh", "-c", "psql -a -f /sqlCommand.sql" ]
        volumeMounts:
        - name: sqlCommand
          mountPath: /sqlCommand.sql
        env:
          - name: DB_HOST
            value: "knotted-iguana-postgresql"
          - name: DB_DATABASE
            value: "postgres"
      volumes:
        - name: sqlCommand
          configMap:
          # Provide the name of the ConfigMap containing the files you want
          # to add to the container
          name: sqlCommand.sql
      restartPolicy: OnFailure
0 голосов
/ 18 октября 2019

Сначала вы должны создать файл докера для того же самого файла, выполнить его и сопоставить тот же рабочий образ докера с файлом yaml задания kubernetes.

Вы можете добавить файл entrypoint.sh в файле докера, где вы можетепоместите ваши скрипты для выполнения

...