Переопределение переменных и настроек приложений в Kubernetes
В случае, если есть необходимость переопределить переменные или настройки для компонентов Test IT (например, уровень логирования), а также есть требование не хранить чувствительные данные в переменных окружения,
- Создайте дополнительный файл appsettings.json. Файл имеет следующий вид:
# testit_backend/templates/configmaps/appsettings/webapi.yaml apiVersion: v1 kind: ConfigMap metadata: name: "{{ .Values.webapi.name }}-appsettings-template" data: appsettings.json: | { "AWS_ACCESS_KEY": "MyAWSAccessKey", "AWS_SECRET_KEY": "MyAWSSecretKey", "RABBITMQ_DEFAULT_USER": "testit", "RABBITMQ_DEFAULT_PASS": "testit", "INFLUX_USERNAME": "admin", "INFLUX_PASSWORD": "password", "DB_CONNECTION_STRING": "Host=postgres;Port=5432;Database=testitdb;Username=testitdbowner;Password=password;Pooling=true;Maximum Pool Size=130;Command Timeout=30", "Hangfire": { "DbConnectionString": "Host=postgres;Port=5432;Database=backgrounddb;Username=backgrounddbowner;Password=password;Pooling=true;Maximum Pool Size=130;Command Timeout=30" }, "Serilog": { "System": { "MinimumLevel": "Debug" }, "SystemAll": { "MinimumLevel": "Debug", "WriteTo:0": { "Args": { "path": "./log/system.log", "rollingInterval": "Day", "retainedFileCountLimit": "7" } } }, "MinimumLevel": "Debug" }, "UserActionAll": { "MinimumLevel": "Debug", "WriteTo:0": { "Args": { "path": "./log/user_actions.log", "rollingInterval": "Day", "retainedFileCountLimit": "7" } } } }
Данный файл будет располагаться в директории приложений:
# values.yaml или values-override.yaml
webapi:
config:
APP_CONFIG_FILEPATH: "/app/customs/appsettings.json"
При переопределении учитывайте:
- Дополнительный appsettings.json имеет приоритет выше, чем переменные окружения и основной appsettings.json.
- Дополнительный appsettings.json не является заменой основного файла, а действует как дополняющий или переопределяющий файл.
- Перечень переменных для компонентов Test IT расположен по пути testit_backend/templates/configmaps.
Переменные, название которых включает два "_" подряд, в файле .json структурно разделяются:
// пример для Hangfire__DbConnectionString
{
"Hangfire": {
"DbConnectionString": "Host=postgres;Port=5432;Database=backgrounddb;Username=backgrounddbowner;Password=password;Pooling=true;Maximum Pool Size=130;Command Timeout=30"
},
}