Kong:如何在插件Lua代码中使用OS环境变量?

时间:2019-04-08 08:22:54

标签: nginx lua kong

我已经阅读了各种github文章,以使Kong的代码可以访问OS环境变量,我应该使用env指令。我对kong非常陌生,我不了解它的内部工作原理。但是我尝试这样做:在nginx.conf中添加env MY_ENV_VARIABLE;,但是os.getenv("MY_ENV_VARIABLE")仍然是nil。

我正在尝试在Lua文件kong/kong/core/中进行更改。我将Kong用作带有docker-entrypoint.sh的Docker容器,

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/"]

此Docker映像在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代码时,它仍然在lua代码中,我添加的os.getenv返回nil。

我在这里附加第二个conf文件以供参考:

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;
}

所以,现在我的问题是,我在这里想念什么?我应该怎么做才能使我在kong / core中编写的新的额外Lua代码可以访问OS环境变量?

0 个答案:

没有答案