Car*_*ein 6 reactjs kubernetes
我有一个 React 应用程序,它读取几个与 API 相关的环境变量。
但是,使用映像和configmap在 Kubernetes 中创建 pod不起作用 - 应用程序运行但未设置环境变量。
pod.yaml
...
spec:
containers:
- command:
- sleep
- "3600"
envFrom:
- configMapRef:
name: configmap
image: xxxxx
imagePullPolicy: IfNotPresent
...
Run Code Online (Sandbox Code Playgroud)
配置图
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
Run Code Online (Sandbox Code Playgroud)
反应片段
if(!process.env.SOME_ID) {
console.log('ID')
}
Run Code Online (Sandbox Code Playgroud)
我的麻烦在于将环境变量传递给 React 应用程序。我确信 Pod 中的环境变量设置正确,但客户端 React 应用程序似乎没有这些变量(即不console.log打印任何内容)。
我偶然发现这篇文章做了类似的事情,但使用的是 Docker。它提到转译将全部替换process.env为字符串值。缓解这个 bash 脚本的技巧是创建 JavaScript 文件,并将环境变量分配为全局窗口对象的属性。
虽然我不确定这在 Kubernetes 中是否可行,但我想知道是否有一种更简单的方法可以在运行时将 Kubernetes pod 的环境变量注入到 React 应用程序中?
它无法按您的预期工作,因为process.env变量在转译过程中被替换。您无法在运行时访问它们。
您可以查看本指南以获取一种可能的解决方案:https://www.freecodecamp.org/news/how-to-implement-runtime-environment-variables-with-create-react-app-docker-and-nginx-7f9d42a91d70/。但关于你的问题,你的 Kubernetes 配置没有任何问题。
| 归档时间: |
|
| 查看次数: |
10733 次 |
| 最近记录: |