通过Kubernetes使Laravel-env变量对前端可见



我有一个用Laravel构建的应用程序,其中一个env变量我想让它们可以通过前端访问。

正如Laravel官方文件所示:https://laravel.com/docs/master/mix#environment-变量

如果我们在特定的env变量前面加上MIX_前缀,它们将可以从JavaScript中获得和访问。在本地,这是完美的。

现在,我想在部署到暂存和生产时通过Kubernetes configmap设置env变量。

这是我的配置文件

apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "common.fullname" . }}-app-config
labels:
{{- include "common.labels" . | indent 4 }}
data:
.env: |+
EVENT_LOGGER_API={{ .Values.app.eventLoggerApi }}
MIX_EVENT_LOGGER_API="${EVENT_LOGGER_API}"

现在,我的deployment.yaml文件

volumes:
- name: app-config
configMap:
name: {{ template "common.fullname" . }}-app-config

volumeMounts:
- name: app-config
mountPath: /var/www/html/.env
subPath: .env

此env变量在后端Laravel中可见,但在本地运行时无法通过JavaScript访问。

process.env.MIX_EVENT_LOGGER_API

以前有人通过K8 configmap设置这个env变量并通过JavaScript访问这些变量吗?

如果在构建前端后添加变量,则这些变量将不可用

你需要在构建/推送的工作中包括这些变量

最新更新