ConfigMap的挂载之环境变量

env

创建环境变量的 ConfigMap

kubectl create configmap test-env.conf --from-literal=level=INFO --from-literal=lives=3

准备 Deployment 的 yaml 文件

cat > dp-cm.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: dp-cm
  name: dp-cm
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dp-cm
  template:
    metadata:
      labels:
        app: dp-cm
    spec:
      containers:
      - image: nginx
        name: nginx
        env:
        - name: test_env1
          value: pingpong1
        - name: level
          valueFrom:
            configMapKeyRef:
              name: test-env.conf
              key: level
        - name: lives
          valueFrom:
            configMapKeyRef:
              name: test-env.conf
              key: lives
EOF

此文件可以使用如下命令生成后删除不必要的项后得到

kubectl create deployment dp-cm --image=nginx --dry-run=client -o yaml > dp-cm.yaml

删除不必要的项后在 container 下添加如下信息

env
- name: level
  valueFrom:
    configMapKeyRef:
      name: test-env.conf
      key: level

创建 Deployment 资源

kubectl create -f dp-cm.yaml

验证环境变量

kubectl get deployment
kubectl get pod

kubectl exec dp-cm-96cc7b4f7-w9w4f -- env


# 也可进容器查看
kubectl exec -it dp-cm-96cc7b4f7-w9w4f -- bash
env

envFrom

创建环境变量的 ConfigMap

kubectl create configmap mysql57.conf --from-literal=MYSQL_USER=root --from-literal=MYSQL_PASSWORD=123456 --from-literal=MYSQL_DATABASE=wordpress

准备 Deployment 的 yaml 文件

cat > dp-cm.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: dp-cm
  name: dp-cm
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dp-cm
  template:
    metadata:
      labels:
        app: dp-cm
    spec:
      containers:
      - image: nginx
        name: nginx
        envFrom:
        - configMapRef:
            name: mysql57.conf
          prefix: CM_
EOF

此文件可以使用如下命令生成后删除不必要的项后得到

kubectl create deployment dp-cm --image=nginx --dry-run=client -o yaml > dp-cm.yaml

删除不必要的项后在 container 下添加如下信息

envFrom:
- configMapRef:
    name: mysql57.conf
  prefix: CM_

prefix: 参数为给环境变量添加前缀,使环境变量的来源更好区分(更好区分哪些环境变量是通过ConfigMap创建的);一般情况下不必使用

创建 Deployment 资源

kubectl create -f dp-cm.yaml

验证环境变量

kubectl get deployment
kubectl get pod

kubectl exec dp-cm-7867f8d565-zcg8h -- env


# 也可进容器查看
kubectl exec -it dp-cm-7867f8d565-zcg8h -- bash
env

Last updated