kubernetes, параметризовать env var после | - операнд - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть один файл yaml, который содержит следующее:

...
volumeMounts:
      - mountPath: /var/lib/grafana
        name: grafana-storage
      - mountPath: /etc/grafana/provisioning/datasources
        name: grafana-datasources
        readOnly: false
...

и другой файл, в котором указан том источника данных grafana-dat:

apiVersion: v1
kind: ConfigMap
metadata:
    name: grafana-datasources
    namespace: ccx-data-pipeline
    labels:
        grafana_datasource: '1'
data:
    prometheus.yaml: |-
        {
            "apiVersion": 1,
            "datasources": [
                {
                    "access":"proxy",
                    "editable": true,
                    "name": "prometheus-ccx-service",
                    "orgId": 1,
                    "type": "prometheus",
                    "url": "http://prometheus-service:9090",
                    "version": 1
                }
            ]
        }

Дело в том, что

"url": "http://prometheus-service:9090" 

не может быть жестко закодировано, но должно быть параметризовано (в идеале, с помощью переменной среды). Было бы здорово сделать так:

"url": "${ENDPOINT}"

, но это не работает, возможно, из-за синтаксиса | -. Есть ли элегантный способ добиться этого?

1 Ответ

2 голосов
/ 03 апреля 2020

Это не возможно напрямую в kubernetes. ConfigMap обрабатывает базовый файл как тип generi c data и не может шаблонировать его, так как не распознает его тип (.yaml, .conf et c)

Что вы можете сделать:

  1. заранее примените какие-либо шаблоны к вашему .yaml-файлу (например, с помощью шаблона Jinja2)
  2. создайте разные ConfigMaps из разных файлов в зависимости от вашей среды (staging, prod).
  3. динамически генерирует ConfigMaps с помощью kustomize
...