kubernetes helm: Как установить переменную env дочерней диаграммы в родительской диаграмме - PullRequest
1 голос
/ 04 июня 2019

Мы используем helm для развертывания многих диаграмм, но для простоты, скажем, это две диаграммы. Родительская диаграмма и дочерняя диаграмма:

helm/parent 
helm/child

В родительской диаграмме есть файл helm/parent/requirements.yaml, в котором указано:

dependencies:
  - name: child
    repository: file://../child
    version: 0.1.0

Дочерней диаграмме требуется куча переменных среды при запуске для конфигурации, например, в helm/child/templates/deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    spec:
      containers:
        env:
        - name: A_URL
          value: http://localhost:8080

Каков наилучший способ переопределить дочернюю переменную среды из родительской диаграммы, чтобы я мог запустить родительскую команду с помощью команды ниже и установить для переменной A_URL env для этого экземпляра значение, например. https://www.mywebsite.com

helm install parent --name parent-release --namespace sample-namespace

Я пытался добавить переменную в родительский файл helm/parent/values.yaml, но безрезультатно

global:
  repository: my_repo
  tag: 1.0.0-SNAPSHOT
child:
  env:
    - name: A_URL
      value: https://www.mywebsite.com

Верен ли синтаксис родительского значения value.yaml? Есть ли другой подход?

Ответы [ 2 ]

1 голос
/ 05 июня 2019

В дочерней диаграмме вы должны явно ссылаться на значение из конфигурации.(После внесения этого изменения вам, вероятно, нужно будет запустить helm dependency update из каталога родительской диаграммы.)

# child/templates/deployment.yaml, in the pod spec
env:
- name: A_URL
  value: {{ .Values.aUrl | quote }}

Вы можете задать ему значение по умолчанию для дочерней диаграммы.

# child/values.yaml
aUrl: "http://localhost:8080"

Затем в файле значений родительской диаграммы вы можете указать для этого значение переопределения.

# parent/values.yaml
child:
  aUrl: "http://elsewhere"

Вы не можете использовать Helm для переопределения или введения произвольного YAML, кроме случаев, когда шаблоны допускают это.

1 голос
/ 04 июня 2019

Если значение не настроено с использованием системы шаблонов, в Helm 2 невозможно изменить его напрямую.

...