挂载ConfigMap不设置环境variables

我对K8S比较陌生,碰到一个路障。 我已经创build了一个ConfigMap来创build一个中心位置,以便所有Deployments都可以引入和安装相同的variables – 如下所示:

apiVersion: extensions/v1beta1 kind: Deployment metadata: name: site namespace: staging spec: revisionHistoryLimit: 1 replicas: 1 template: metadata: labels: app: site spec: containers: - name: nginx image: gcr.io/XXX/builds/nginx:develop-latest imagePullPolicy: Always command: ["nginx", "-g", "daemon off;"] ports: - containerPort: 80 livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 10 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 10 - name: php image: gcr.io/XXX/builds/php:develop-latest imagePullPolicy: Always command: ["php-fpm7.0", "--nodaemonize", "-R"] livenessProbe: tcpSocket: port: 9000 initialDelaySeconds: 10 readinessProbe: tcpSocket: port: 9000 initialDelaySeconds: 10 env: - name: ENV_PATH value: /etc/config/.env volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: staging-config items: - key: site path: .env 

它正确地安装文件 – 我可以看到它,当我在吊舱内,但我努力暴露文件的内容作为我的Laravel应用程序可以使用的环境variables。 当定义它们时,一切都按预期工作(见下文),但采取上述方法,他们根本就没有设定。 文档不提供任何进一步的帮助,我没有看到任何东西在线…任何指针?

 env: - name: variable value: val - name: var2 value: var2val 

如果你想直接将你的configMap中的值设置为你的pod中的env vars,那么你不需要将它们挂载为文件。 而是使用:

 env: - name: MY_ENV_VAR valueFrom: configMapKeyRef: name: <your-configmap-name> key: <key-of-your-value> 

如果你想坚持安装选项,另一种方法可能是使用你的laravel容器的docker-entrypoint.sh脚本以某种方式在启动容器时获取已安装的env文件。