Сделать nginx настраиваемым с помощью kubernetes secret? - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть рабочий openresty с lua -resty-openid c в качестве входного контроллера. Теперь nginx .conf жестко запрограммирован в моем изображении примерно так:

    server {
        server_name  _;
        listen       80;

        location /OAuth2Client {
            access_by_lua_block {
                local opts = {
                    discovery = "/.well-known/openid-configuration",
                    redirect_uri = "/authorization-code/callback",
                    client_id = "clientID",
                    client_secret = "clientSecret",
                    scope = "openid profile somethingElse",
                }
    ...
            }
            proxy_pass http://clusterIp/OAuth2Client;
        }
    }

Поскольку Nginx не принимает переменные окружения, есть простой способ сделать мой nginx Конфигурируемый .conf, например ex

    server {
        server_name  ${myServerName};
        listen       ${myServerPort};

        location /${specificProjectRoot} {
            access_by_lua_block {
                local opts = {
                    discovery = "${oidc-provider-dev-url}/.well-known/openid-configuration",
                    redirect_uri = "${specificProjectRoot}/authorization-code/callback",
                    client_id = "${myClientId}",
                    client_secret = "${myClientSecret}",
                    scope = "${myScopes}",
                }
    ...
            }
            proxy_pass http://${myClusterIP}/${specificProjectRoot};
        }
    }

, чтобы любая команда в любом пространстве имен могла повторно использовать мой образ и просто предоставить секрет kubernetes, содержащий их специфику c config для их проекта?

1 Ответ

2 голосов
/ 09 апреля 2020

Вам потребуется визуализировать nginx.conf из шаблонной версии во время выполнения (как упоминается в комментарии Джулиано). Для этого ваш Dockerfile может выглядеть примерно так:

FROM nginx
COPY nginx.conf.template /etc/nginx/
CMD ["/bin/bash", "-c", "envsubst < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf && exec nginx -g 'daemon off;'"]

Обратите внимание, что он копирует nginx.conf.template в ваше изображение, это будет ваша шаблонная конфигурация с переменными в виде ${MY_SERVER_NAME}, где MY_SERVER_NAME * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1009* вводится в ваш модуль в качестве переменной окружения через манифест Kubernetes, из вашей конфигурации или секретного файла.

...