kubernetes在部署时将configmap分配为环境变量

问题描述

我正在尝试将映像部署到Azure Kubernetes服务。我使用命令:

kubectl apply -f mydeployment.yml

这是我的部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-api
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-api
  template:
    metadata:
      labels:
        app: my-api
    spec:
      containers:
      - name: my-api
        image: mycr.azurecr.io/my-api
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        ports:
        - containerPort: 80
        envFrom:
          - configMapRef:
              name: my-existing-config-map

我创建的configmap my-existing-config-map中带有很多值,但是部署没有将这些值添加为环境变量。

配置映射是通过以下方式从“ .env”文件创建的:

kubectl create configmap my-existing-config-map --from-file=.env

我在这里想念什么?

解决方法

如果您的.env文件采用这种格式

a=b
c=d

您需要改用--from- env -file = .env。

为进一步说明,使用--from-file = aa.xx创建configmap看起来像这样

aa.xx: |
  file content here....
  ....
  ....

当与envFrom.configmapref一起使用的配置映射时,它仅在包含内容的env变量“ aa.xx”上创建。在这种情况下,该文件名以“。”开头。像.env一样,甚至都不会创建env变量,因为该名称违反了UNIX env变量名称规则。

,

在使用.env文件时,文件格式很重要

  1. 以以下格式创建config.env文件,其中可以包含注释

 echo -e "var1=val1\n# this is a comment\n\nvar2=val2\n#anothercomment" > config.env

  1. 创建配置映射

kubectl create cm config --from-env-file=config.env 

  1. 在您的广告连播定义文件中使用配置映射

apiVersion: v1
kind: Pod
metadata:
labels:
    run: nginx
name: nginx
spec:
containers:
- image: nginx
    name: nginx
    resources: {}
    envFrom: 
    - configMapRef: 
        name: config

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...