You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes中部署的Rails应用无法读取ConfigMap提供的环境变量

问题根因
  • ConfigMap生成逻辑不符合预期:你当前使用Kustomize的configMapGenerator.files加载.env文件,该方式会将整个.env文件作为单个键值对存入ConfigMap(键名为.env,值为文件全部内容),不会自动解析文件内每行KEY=VALUE为独立的ConfigMap条目。从ConfigMap的描述信息可以验证:Data字段下仅存在.env一个键,而envFrom只能将ConfigMap的顶级键作为环境变量注入容器,因此容器内不会生成APP_PORT这类独立环境变量。
  • Deployment配置存在错误:你提供的api-deployment.yml中,envFrom字段被写在imagePullPolicy的行尾注释中,不会被Kubernetes识别;同时你填写的ConfigMap名称为backend-api-configma,比实际名称少了末尾的p,拼写错误也会导致配置无法生效。
解决方法
  1. 修改kustomization.yml的ConfigMap生成配置,将files参数替换为envs,envs参数会自动解析.env文件内的键值对为独立的ConfigMap条目:
kind: Kustomization
configMapGenerator:
  - name: backend-api-configmap
    envs:
      - .env
bases:
  - ../../base
patchesStrategicMerge:
  - api-deployment.yml
  1. 修正api-deployment.yml的语法错误和拼写错误,将envFrom移出注释,填写正确的ConfigMap名称:
apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      containers:
        - image: nginx
          imagePullPolicy: Never
          envFrom:
            - configMapRef:
                name: backend-api-configmap
  1. 重新执行Kustomize部署,部署完成后进入容器执行env即可看到对应环境变量,Rails应用可正常读取。

内容的提问来源于stack exchange,提问作者Jan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:54:05