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 次  |  
        
|   最近记录:  |