Reactjs 如何从React.js应用程序访问Kubernetes容器环境变量?

Reactjs 如何从React.js应用程序访问Kubernetes容器环境变量?,reactjs,kubernetes,server,environment-variables,Reactjs,Kubernetes,Server,Environment Variables,我有一个带有默认配置的CreateReact应用程序。 我在.env文件中配置了一些端口和API REACT_APP_PORT=3000 并将内部应用程序与process.env.REACT_app_端口一起使用 我的服务器部署在Kubernetes上。 有人能解释一下如何配置我的CreateReact应用程序,以使用POD/容器提供的环境变量吗 我想通过kubectl svc提供的名称访问群集IP 更新1: 我有一个相反的场景,我不想在kubernetes pod容器中配置前端env变量,但

我有一个带有默认配置的CreateReact应用程序。 我在.env文件中配置了一些端口和API

REACT_APP_PORT=3000
并将内部应用程序与process.env.REACT_app_端口一起使用

我的服务器部署在Kubernetes上。 有人能解释一下如何配置我的CreateReact应用程序,以使用POD/容器提供的环境变量吗

我想通过kubectl svc提供的名称访问群集IP

更新1:


我有一个相反的场景,我不想在kubernetes pod容器中配置前端env变量,但想使用pod的env变量

e、 x CLUSTER_IP和CLUSTER_端口,其名称由我的react应用程序内的pod环境变量定义

例如-

NAME TYPE CLUSTER-IP 

XYZ ClusterIP x.y.z.a
并且要访问react应用程序中的XYZ以指向群集IP(x.y.z.a)

请尝试以下操作

     spec:
       containers:
       - name: create-react-app
         image: gcr.io/google-samples/node-hello:1.0
         env:
         - name: REACT_APP_PORT
           value: "3000"
     
试试这个:

kubectl create configmap react-config --from-literal=REACT_APP_PORT=3000
然后:

     spec:
       containers:
       - name: create-react-app
         image: gcr.io/google-samples/node-hello:1.0
         envFrom:
         - configMapRef:
             name: react-config
     
现在,您已从pod“外部”配置了环境


另请参阅文档:

使用Pod字段作为环境变量的值

apiVersion: v1
kind: Pod
metadata:
  name: dapi-envars-fieldref
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "sh", "-c"]
      args:
      - while true; do
          echo -en '\n';
          printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
          printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
          sleep 10;
        done;
      env:
        - name: MY_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: MY_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: MY_POD_SERVICE_ACCOUNT
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName
  restartPolicy: Never

以上示例可能会对您有所帮助。

您是否打算在开发模式下使用React应用程序?因为
env
变量
REACT\u APP\u PORT
仅由
create REACT APP
设置的开发脚本使用。尽管如此,以下是Kubernetes关于如何处理环境变量的文档链接:是的,在开发模式下,也像在您共享的文档中一样,如何访问示例_SERVICE_PORT_8080_TCP_ADDR=“”(react app中的pod env变量,因为react读取以react_app开头的env变量)以下是使用
create react app
时处理环境变量的链接。请记住,一旦构建应用程序,您将无法使用环境变量。您只能在运行开发服务器时使用它们,因为它会将环境变量值注入React的代码中。您能否共享此链接,您提到的是Torry,忘记粘贴了。这里是:我想在我的react应用程序中使用Pod的env变量,我不想在Pod的.yaml中配置我的env。我有相反的情况,我不想在kubernetes Pod容器中配置我的前端env变量,但是我想使用pod的环境变量e.x CLUSTER_IP和CLUSTER_PORT,它们的名称由我的react应用程序中的pod的环境变量定义。E.x-名称类型CLUSTER-IP XYZ ClusterIP x.y.z.a并希望访问react应用程序中的XYZ以指向群集IP(x.y.z.a)Hmm如果希望react应用程序中的系统环境变量可用,则必须通过“后端”使其可用因为客户端代码不能访问系统变量AFAIK