kiwigrid / k8s-sidecar

This is a docker container intended to run inside a kubernetes cluster to collect config maps with a specified label and store the included files in a local folder.
MIT License
612 stars 183 forks source link

support environment variable expansion in log config #337

Open wasim-nihal opened 8 months ago

wasim-nihal commented 8 months ago

we have a use case where we spin up 3 different kiwigrid k8s-sidecars. And each of this sidecar has its own log config mounted as a config map. It would be better if there is a feature in kiwigrid-k8s sidecar to expand environment variables and populate the log config at the startup. This would enable users to have only only log config for multiple k8s sidecars and the values can be configurable via environment variables.

Example: The expansion can happen based on a specific placeholder in the log config (To instance $(<some_env_variable>).

The user can configure the log config in the below way:

version: 1
disable_existing_loggers: false

root:
    level: $(LOG_LEVEL)
    handlers: [console]

And in different sidecars, the value of the environment variable can be different according to needs.

Note: This feature will not be limited to LOG_LEVEL. It shall be generic enough to look up any environment variable enclosed within the placeholder $().

ChristianGeie commented 2 months ago

Hi @wasim-nihal thx for contributing. Unfortunately, I only now had time to look at your PR. Looks good to me. Can you add a scenario to the existing tests that represents your added functionality?

wasim-nihal commented 1 month ago

Hi @wasim-nihal thx for contributing. Unfortunately, I only now had time to look at your PR. Looks good to me. Can you add a scenario to the existing tests that represents your added functionality?

Hello @ChristianGeie , thanks for taking a look. I have added the test for this feature. Could you please review this? https://github.com/kiwigrid/k8s-sidecar/pull/344