Тем не менее, что вы делаете, ваше приложение Angular является клиентским приложением, т.е. браузер пользователя загружает исходный код приложения (набор файлов CSS / JS / HTML, изображения и т. Д.) И выполняетэто на машине пользователя.Таким образом, вы не можете скрыть что-либо, как делаете при реализации приложения клиент / сервер .В клиент-серверных приложениях все секреты будут находиться в серверной части.Если вы поместите секрет в секрет k8s, вы не будете фиксировать его в репозитории, но вы все равно предоставите его всем своим пользователям.
Если вы все еще хотите заполнить конфигурацию на основе переменных среды (котораяявляется законным вариантом использования), я видел и использовал следующий подход.Приложение работает на Angular 6 и обслуживается браузером сервером nginx
.Скрипт запуска в контейнере Docker немного странный и выглядит примерно так, как показано ниже:
envsubst < /usr/share/nginx/html/assets/config.json.tpl > /usr/share/nginx/html/assets/config.json
rm /usr/share/nginx/html/assets/config.json.tpl
echo "Configuration:"
cat /usr/share/nginx/html/assets/config.json
nginx -g 'daemon off;'
Как вы видите, мы использовали envsubst
для замены шаблона конфигурации в папке assets.config.json.tpl
может выглядеть следующим образом:
{
"apiUrl": "${API_URL}"
}
envsubst
заменит переменные среды их действительными значениями, и у вас будет действительный фрагмент конфигурации JSON в ваших ресурсах.Затем nginx
запустится.