Перезаписать ссылочные файлы (в .Files) на вложенной диаграмме или вставить исходные файлы mariadb из основной диаграммы - PullRequest
0 голосов
/ 19 декабря 2018

Итак, у меня есть поддиапазон mariadb.Диаграммы mariadb заполняют конфигурационную карту из различных файлов инициализации с помощью:

{{ (.Files.Glob "files/docker-entrypoint-initdb.d/*[sh|sql|sql.gz]").AsConfig | indent 2 }}

Так есть ли в любом случае, я могу ввести файлы инициализации?

Можно ли перезаписать контекст .Files.Globтак это доступ к моей родительской директории?или есть другой рекомендуемый способ создания исходных файлов sql?

вложенная диаграмма maridb выполняется следующим образом в requirements.yaml:

dependencies:
- name: mariadb
  version: 5.x.x
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mariadb.enabled

1 Ответ

0 голосов
/ 19 декабря 2018

Так как ваш mariadb является подкартой, управляемой третьей стороной, .Files.Glob относится только к файлам в каталоге mariadb.

Если вы хотите разместить какие-либо сценарии запуска внутри подкарты, вы должны разархивировать ее.

Допустим, у вас есть каталог custom-init-scripts со всеми сценариями инициализации вваша родительская диаграмма.

$ ls custom-init-scripts/
init.sh  insert.sql

# download mariadb chart package in charts directory
$ helm dependency update

# unarchive and delete package
$ tar -xvf charts/mariadb-5.*.tgz -C charts && rm charts/mariadb-5.*.tgz

# copy init scripts to mariadb subchart
$ cp -a custom-init-scripts/. charts/mariadb/files/docker-entrypoint-initdb.d/

Теперь ваши файлы инициализации присутствуют в подхарте mariadb

helm install --debug --dry-run --set mariadb.enabled=true .

...
---
# Source: mychart/charts/mariadb/templates/initialization-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: elevated-dragonfly-mariadb-master-init-scripts
  labels:
    app: mariadb
    component: "master"
    chart: mariadb-5.2.5
    release: "elevated-dragonfly"
    heritage: "Tiller"
binaryData:
data:
  init.sh: "echo \"hi\"\r\n"
  insert.sql: INSERT INT Users (FirstName, LastName) VALUES ('A', 'B');
...