我有一个react应用程序,该应用程序读取几个API相关的环境变量。
但是,在Kubernetes中使用图像和 configmap 创建pod不能正常工作-应用程序运行但未设置环境变量。
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
什么也不打印)。
我碰巧在article上做了类似的事情,但是使用了Docker。它提到转码将所有process.env
替换为一个字符串值。缓解此bash脚本的技巧,该脚本使用分配为全局窗口对象属性的环境变量来创建JavaScript文件。
虽然我不确定在Kubernetes中这是否可行,但我想知道是否有一种更简单的方法可以在运行时将Kubernetes pod的环境变量注入到react应用程序中?
答案 0 :(得分:2)
它无法按预期工作,因为process.env
变量在转译过程中被替换。您在运行时无法访问它们。
您可以在本指南中找到一种可能的解决方案:https://www.freecodecamp.org/news/how-to-implement-runtime-environment-variables-with-create-react-app-docker-and-nginx-7f9d42a91d70/。但是关于您的问题,您的Kubernetes配置没有任何问题。