Переменные окружения kubernetes доступны в вашем контейнере.Таким образом, вы могли бы подумать, что задание здесь - это версия получения переменных конфигурации на стороне сервера, отправленных в ваш код на стороне клиента.
Но, если ваше приложение реагирования запускается в контейнере, вы, скорее всего, запускаете конвейер сборки javascriptкогда вы создаете образ докера.Примерно так:
RUN npm run build
# Run app using nodemon
CMD [ "npm", "start" ]
Когда докер собирает ваш контейнер, переменные окружения, введенные kubernetes, еще не доступны.Они не будут существовать, пока вы не запустите встроенный контейнер в кластере.
Одно из решений, и, возможно, это ваш кратчайший путь, - прекратить сборку кода на стороне клиента в файле Docker и объединить сборку и запуск.шаги в команде запуска npm.Примерно так, если вы используете веб-пакет:
"start": "webpack -p --progress --config webpack.production.config.js && node index.js"
Если вы пойдете по этому пути, то вы можете использовать любой из хорошо документированных методов для доставки переменных среды на стороне сервера вашему клиенту на этапе сборки: Передача переменных, зависящих от среды, в веб-пакете .Существуют аналогичные методы и инструменты для всех остальных инструментов сборки javascript.
Два: если вы работаете с узлом, вы можете продолжить сборку клиентского приложения в контейнере, но попросите приложение узла записать файл config.js вфайловая система при запуске приложения узла.
Вы могли бы сделать даже более сложные вещи, такие как предоставление вашей конфигурации через API (вариант второго подхода), но это похоже на бросание хороших денег после плохих.
Интересно, нет ли более легкого пути.Если у вас есть чисто клиентское приложение, почему бы просто не развернуть его как статический сайт, скажем, в Amazon, Gcloud Bucket, Firebase или Netlify?Таким образом, вы просто запускаете процесс сборки и развертываете в правильной среде.контейнер не нужен.