Is this supported by Kubernete / Openshift 3? I use a yaml file after data:
and got error from Openshift:
Config map app-config contains keys that are not valid environment variable names. Only config map keys with valid names will be added as environment variables.
And:
Strangely, it says operatorconfig.yml
is not a valid variable, but it's not a variable, it's a file.
Before, it was operator-config.yml
, but now after removing -
, it still does not work.
The definition is like this:
- apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
appconfig.yml: |
swarm:
resource-adapters:
resource-adapters:
activemq-rar:
config-properties:
ServerUrl:
value: {{ some_url }}
UserName:
value: {{ some_user }}
anothercomponent:
url: {{ some_url }}
operatorconfig.yml: {{ APP_OPERATOR_CONFIG | to_nice_yaml(width=99999) | trim | to_yaml(width=99999) }}
Neither does appconfig.yml
nor operatorconfig.yml
works, none got their property values recognized by the service.
I noticed that if it's property file, or properties file without file extension, it works in the official page. Does this mean yaml is not supported?? https://docs.openshift.com/container-platform/3.11/dev_guide/configmaps.html
CodePudding user response:
Config map app-config contains keys that are not valid environment variable names
Above error denotes that ConfigMap used for a container inside pod is loaded as environment variables. its an issue with environment variable key name used. Variables with "." is not supported naming convention for environmental variables ex: test.var, operatorconfig.yml and appconfig.yml
CodePudding user response:
At last I found out that in the previous version of app, we load the yaml file content with mountedVolume, and not by loading yaml content in config map as environment variables; seems it's not supported. But to mount to a volume, you need a config map. That's why it was done like this in the beginning; having a config map does not mean you need to load it as environment variables.
My conclusion is that files specified after "data:" can only be properties file; i.e., with each line of "key=value" format; yaml is not.
So I use QUARKUS_CONFIG_LOCATIONS
environment variable to point to the mount volume yaml files, and it works.