Я читал различные статьи на github, что для доступа кода Kong к переменным окружения ОС я должен использовать директиву env. Я очень новичок в конге, и я не понимаю, как это работает внутри. Но я попытался сделать это: добавьте env MY_ENV_VARIABLE;
в nginx.conf, но все равно os.getenv("MY_ENV_VARIABLE")
- это ноль.
Я пытаюсь внести изменения в файлы Lua kong/kong/core/
. Я использую Kong в качестве docker-контейнера с docker-entrypoint.sh с:
kong prepare --v -p "/usr/local/kong" -c "/usr/local/kong/kong.conf"
и команда в Dockerfile как CMD ["/usr/local/openresty/nginx/sbin/nginx", "-c", "/usr/local/kong/nginx.conf", "-p", "/usr/local/kong/"]
Этот образ докера запускается в Kubernetes, а переменная среды передается в развертывании. Внутри контейнера, если я делаю echo $MY_ENV_VARIABLE
, я вижу значение, которое я передаю. Даже если я напишу пример кода lua (скажем, test.lua), который печатает os.getenv («MY_ENV_VARIABLE») и запускаю его, используя resty test.lua
, он печатает значение.
Внутри docker-контейнера (после docker exec -it .. sh) я нахожу два nginx.conf. Один из них генерируется автоматически, а другой - в моем коде, который создал изображение.
./usr/local/kong/nginx.conf
./usr/local/openresty/nginx/conf/nginx.conf
Первый файл, который я считаю, генерируется автоматически. Второй файл содержит env MY_ENV_VARIABLE;
. Все еще в коде lua, когда он достигает во время запроса datapath, os.getenv
, который я добавил, возвращает ноль.
Я прилагаю второй файл конфигурации здесь для справки:
worker_processes 1;
env KONG_DECRYPT_KEY;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
enter code here
include /etc/nginx/conf.d/*.conf;
}
Итак, теперь мой вопрос: что мне здесь не хватает? Что я должен сделать, чтобы новый дополнительный код Lua, который я пишу в kong / core, мог получить доступ к переменным окружения ОС?