Configurations¶
The following are the Choreo Connect related configuration files.
File | Description |
---|---|
Configuration File E.g. config.toml |
This file defines all the adapter, enforcer, router, security, control plane and analytics configurations. |
Log Configuration File E.g. log_config.toml |
This file defines the logging configurations for the Adapter and Router. |
Log4j2 Configuration File E.g. log4j2.properties |
This file defines the logging configurations for the Enforcer. |
Each of the above files can be found in the locations given below depending on the Choreo Connect deployment.
For Docker Compose
File | File Name |
---|---|
Configuration File | config.toml |
Log Configuration File | log_config.toml |
Log4j2 Configuration File | log4j2.properties |
Mode | Directory (File path) |
---|---|
Choreo Connect as a Standalone Gateway | <CHOREO-CONNECT_HOME>/docker-compose/choreo-connect/conf |
Choreo Connect with MWARE ESB as a Control Plane | <CHOREO-CONNECT_HOME>/docker-compose/choreo-connect-with-apim/conf |
For Kubernetes
File | File Name |
---|---|
Configuration File | For Choreo Connect as a Standalone Gateway,
|
Log Configuration File | logconfig-toml-configmap.yaml |
Log4j2 Configuration File | log4j2-configmap.yaml |
Mode | Directory (File path) |
---|---|
Choreo Connect as a Standalone Gateway | <CHOREO-CONNECT_HOME>/k8s-artifacts/choreo-connect |
Choreo Connect with MWARE ESB as a Control Plane | <CHOREO-CONNECT_HOME>/k8s-artifacts/choreo-connect-with-apim/choreo-connect |
For Kubernetes with Helm Charts
You may update the configurations in the following ways, when deploying with Helm Charts and the resources from the Choreo Connect Helm Chart Git repository.
- By updating values.yaml. Click here for the steps.
- By using --set with the Helm command. Click here for an example.
You can find the complete list of parameters here.
These configuration parameters are based on the templates available in here. The values.yaml
file and the templates are common to both of the modes, Choreo Connect as a Standalone Gateway and Choreo Connect with MWARE ESB as a Control Plane. The mode itself can be updated as given below.
wso2:
deployment:
mode: "APIM_AS_CP"
wso2:
deployment:
mode: "STANDALONE"
You may find the template file for the main Choreo Connect configuration and logging in the following names.
File | File Name |
---|---|
Configuration File | config-toml-configmap.yaml |
Log Configuration File | logconfig-toml-configmap.yaml |
Log4j2 Configuration File | enforcer-log4j2-configmap.yaml |
If you have advanced configurations that are not templated, you can have your own templated configuration file and set it in the Helm Chart as follows. Make sure to include the templates already provided within the default templated configuration files, otherwise you may lose configurations set with the values.yaml file.
--set-file wso2.deployment.adapter.configToml=<FILE_PATH_FOR_TEMPLATED_CONFIG_TOML>
--set-file wso2.deployment.adapter.logConfigToml=<FILE_PATH_FOR_TEMPLATED_LOG_CONFIG_TOML>
Configurations Overview¶
Only the Adapter component reads the Configuration File. Then the Enforcer and Router components fetches the relevant configurations via XDS caches.
Note
The Enforcer component fetches the relevant configurations only once from the Adapter in its lifetime. If the Adapter is restarted with a configuration change which contains changes related to Enforcer, the Enforcer also needs to be restarted again.
Overriding configuration values with environment variables¶
The configurations provided within the Configuration File can be overridden with environment variables. As this file is processed within Adapter first, the environment variables should be assigned to the Adapter environment. The variables are case-insensitive.
-
To override a configuration value like the following, the user needs to declare the environment variable
CC_Adapter_Server_Port
. The value could be a boolean, a float, a string or an integer value.[Adapter] [Adapter.Server] Port = 9843
To change the above configuration, the following environment variable needs to be assigned.
CC_Adapter_Server_Port=9844
-
If the property to be overridden is a property of an array, the array index should also be appended to the environment variable. (Index will depend on the order you define in the .toml file).
[[Adapter.Server.Users]] username = "John"
To change the above configuration, the following environment variable needs to be assigned.
CC_Adapter_Server_Users_0_Username=Ann
-
If the TOML key contains a dot, those characters should be replaced with underscore for the relevant environment variable.
[analytics.enforcer.configProperties] "publisher.reporter.class" = "org.wso2.choreo.connect.tests.CustomMetricReporter"
To change the above configuration, the following environment variable needs to be assigned.
CC_Analytics_Enforcer_ConfigProperties_Publisher_Reporter_Class="org.example.CustomMetricReporter"
-
If the value of the configuration is a string, float, or an integer array, those values needs to be provided as a single string where the values are separated with a comma.
[category] stringArray = ["foo"]
You need to execute the following command to override the above configuration.
CC_Category_StringArray="foo, bar"
Resolving configuration values from the environment using the $env{variable} assignment¶
In addition to the previously mentioned approach, the choreo-connect configuration values can be resolved via the environment by assigning the property with the value "$env{variable_name}". For example, see the following code snippet.
[enforcer.throttling.publisher]
username = "admin"
password = "$env{tm_admin_pwd}"
In this case, the resolution of the env_variable
is different compared to previous approach. The Enforcer environment variables are used to resolve the enforcer
and analytics.enforcer
configurations. For other configurations, the environment variable assignment should happen in the Adapter environment.
For the above example, the user should assign the environment variable tm_admin_pwd
to the Enforcer.
tm_admin_pwd=passwd
Note
The environment variable is case-sensitive here.
Note
This approach can be used only if the configuration property is a String.