我有一个带有默认配置的 create-react-app。 我在 .env 文件中配置了一些 PORT 和 APIs
REACT_APP_PORT=3000
并使用带有 process.env.REACT_APP_PORT 的内部应用程序。
我的服务器部署在 Kubernetes 上。 有人可以解释一下如何配置我的 create-react-app 以使用 pods/containers 提供的环境变量吗?
我想通过 kubectl svc 给定的名称访问集群 IP
更新 1:
我有相反的情况,我不希望在 kubernetes pod 容器中配置我的前端 env 变量,但想使用 pod 的 env 变量
例如 CLUSTER_IP 和 CLUSTER_PORT,它们的名称由我的 react 应用程序中的 pod 环境变量定义。
例如-
NAME TYPE CLUSTER-IP
XYZ ClusterIP x.y.z.a
并希望在 react 应用程序中访问 XYZ 以指向集群 IP (x.y.z.a)
答案 0 :(得分:0)
试试这个:
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 的“外部”配置了你的环境
答案 1 :(得分:0)
使用 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
https://kubernetes.io/docs/tasks/inject-data-application/_print/ 也许上面的例子会对你有所帮助。