У меня есть развертывание K8s с одним модулем, работающим среди других, контейнером с Envoy sw. Я определил изображение таким образом, что если определена переменная среды EXTRA_OPTS, она будет добавлена в командную строку для запуска Envoy. Я хочу использовать эту переменную для переопределения конфигурации по умолчанию, как описано в https://www.envoyproxy.io/docs/envoy/latest/operations/cli#cmdoption-config-yaml
Переменная среды работает нормально для других параметров команды, например, «-l отладка». Кроме того, я протестировал ожидаемую финальную командную строку, и она работает.
Dockerfile настроил запуск Envoy следующим образом:
CMD ["/bin/bash", "-c", "envoy -c envoy.yaml $EXTRA_OPTS"]
Я хочу установить это:
...
- image: envoy-proxy:1.10.0
imagePullPolicy: IfNotPresent
name: envoy-proxy
env:
- name: EXTRA_OPTS
value: ' --config-yaml "admin: { address: { socket_address: { address: 0.0.0.0, port_value: 9902 } } }"'
...
Я успешно протестировал запущенный посланник с последней командной строкой:
envoy -c /etc/envoy/envoy.yaml --config-yaml "admin: { address: { socket_address: { address: 0.0.0.0, port_value: 9902 } } }"
Еще я протестировал «более простой» вариант в EXTRA_OPTS, и он работает:
...
- image: envoy-proxy:1.10.0
imagePullPolicy: IfNotPresent
name: envoy-proxy
env:
- name: EXTRA_OPTS
value: ' -l debug'
...
Я бы ожидал, что Envoy будет работать с этим новым портом администратора, вместо этого у меня возникают ошибки параметров:
PARSE ERROR: Argument: {
Couldn't find match for argument
Похоже, что кавычки не передаются в фактическую переменную Environment в контейнер ...
Любая подсказка ???
Спасибо всем