#kubernetes #grafana #kubernetes-helm #helmfile
#kubernetes #grafana #kubernetes-helm #helmfile
Вопрос:
Я развертываю grafana в kubernetes, используя пользовательскую диаграмму helm. Пользовательский файл grafana.ini копируется в образ docker при его сборке, файл grafana.ini содержит конфигурацию подключения к экземпляру RDS и различные пользовательские настройки авторизации. Это не идеально, когда я добавляю в микс более одной среды, поскольку для каждой сборки потребуется другой файл grafana.ini, и я хочу использовать один и тот же базовый образ docker. Это также небезопасно.
У меня есть три кластера kubernetes: dev, preprod и prod. Решающими отличиями будут конфигурация RDS.
Каков наилучший способ привязки файла grafana.ini к определенной сборке grafana, основанной на среде. Могу ли я использовать какую-то параметризованную конфигурационную карту?
Я использую helmfile для развертывания диаграммы helm, поэтому я знаком с концепцией наличия отдельных значений.файлы yaml для каждой среды и установка переменной среды для назначения правильной.
Комментарии:
1. Наличие
ConfigMap
и установка переменных из файлов значений , специфичных для каждой среды, звучит как правильный путь.
Ответ №1:
Вы можете смонтировать configmap как том в модуле.
Пример:
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: null
labels:
env: prod
app: metis
client: ueuropea
name: metis-clients-configmap
data:
clients_db_config.yaml: |
default-tenant:
DB_HOST: dbhost
DB_USERNAME: user
DB_PASSWORD: pass
DB_NAME: dbname
DB_PORT: 3306
Развертывание:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
env: dev
app: metis
name: metis-rules-evaluator-dev
spec:
progressDeadlineSeconds: 3600
replicas: 0
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
template:
metadata:
labels:
env: dev
app: metis
client: ueuropea
mode: rules-evaluator
spec:
containers:
- image: metis
name: metis
imagePullPolicy: Always
resources:
requests:
memory: "1024Mi"
cpu: "3000m"
limits:
memory: "16384Mi"
cpu: "4000m"
volumeMounts:
- name: config-vol
mountPath: /usr/src/metis/config/
volumes:
- name: config-vol
configMap:
name: metis-clients-configmap
terminationGracePeriodSeconds: 150
restartPolicy: Always
В этом примере данные configmap будут смонтированы в path: /usr/src/metis/config/
и создадут файл clients_db_config.yaml
, который также может быть .ini