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

kubernetes assign configmap as environment variables on deployment

我正在尝试将我的映像部署到 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 一起使用时,它只是在环境变量“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. 在你的 pod 定义文件中使用 config Map

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