Переопределение переменных и настроек приложений

В случае, если есть необходимость переопределить переменные или настройки для компонентов 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"
  },
}

:::

Обновлено: