reactjs - 从反应应用程序读取 kubernetes pod 的 configmap 中设置的环境变量?
问题描述
我有一个读取几个 API 相关环境变量的反应应用程序。
- 在本地机器或虚拟机上运行时,API 变量会被正确读取到应用程序中。
- 当硬编码到 react 应用程序本身时,应用程序也会运行。
但是,在 Kubernetes 中使用映像和configmap创建 pod不起作用 - 应用程序运行但未设置环境变量。
豆荚.yaml
...
spec:
containers:
- command:
- sleep
- "3600"
envFrom:
- configMapRef:
name: configmap
image: xxxxx
imagePullPolicy: IfNotPresent
...
配置图
apiVersion: v1
data:
API_HOST: xxxxxxx
SOME_ID: abcdef
NODE_ENV: development
PROVIDER: GCP
kind: ConfigMap
metadata:
creationTimestamp: xxxx
name: configmap
namespace: xxxx
resourceVersion: xxxx
selfLink: xxxx
uid: xxxx
反应片段
if(!process.env.SOME_ID) {
console.log('ID')
}
我的麻烦在于将环境变量传递给 React 应用程序。我确定在 pod 中正确设置了环境变量,但客户端 React 应用程序似乎没有这些变量(即console.log
什么也不打印)。
我偶然在这篇文章中做了类似的事情,但使用的是 Docker。它提到转译将 all 替换process.env
为字符串值。缓解这个 bash 脚本的技巧,该脚本创建 JavaScript 文件,其中环境变量分配为全局窗口对象的属性。
虽然我不确定这在 Kubernetes 中是否可行,但我想知道是否有一种更简单的方法可以在运行时将 Kubernetes pod 的环境变量注入到反应应用程序中?
解决方案
它不像您预期的那样工作,因为process.env
变量在转译期间被替换。您无法在运行时访问它们。
您可以查看本指南以获取一种可能的解决方案:https ://www.freecodecamp.org/news/how-to-implement-runtime-environment-variables-with-create-react-app-docker-and-nginx-7f9d42a91d70/ . 但是关于您的问题,您的 Kubernetes 配置没有问题。
推荐阅读
- android - Android 上的权限 SET_WALLPAPER 和 SET_WALLPAPER_HINTS 有什么区别?
- python - 如何使用 SQLAlchemy TypeDecorators 编译原始 SQL
- javascript - 如何获取根据用户名分组的最后一条消息
- browser - 创建像 Grammarly 这样的 Chrome 扩展程序
- regex - Golang 正则表达式与 `ReplaceAllString` 的多个匹配项
- visual-studio - 编辑并继续在 Xamarin 上不起作用
- javascript - 如何减少 Web 应用程序中的资产大小
- angular - 在搜索结果中悬停时显示文本和图像
- ios - 如何使用 UIPageViewController 实现像 iOS Photos 应用一样的照片滑动?
- java - 组件对象为空,该对象由自动装配注释使用