Skip to content

ConfigMap

创建ConfigMap

bash
#--from-file= 一行一个的kv存储
kubectl create configmap my-configmap --from-file=config.properties
bash
kubectl create configmap my-configmap --from-literal=key1=value1,key2=value2

使用configmap变量

configmap.yaml

yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-configmap-user
data:
  name: zly
  age: "21"
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-configmap-log
data:
  log_level: INFO

pod.yaml

yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-env-pod
spec:
  containers:
    - name: test-container
      image: nginx
      command: [ "sh", "-c", "env" ]
      env:
        - name: NAME
          valueFrom:
            configMapKeyRef:
              name: my-configmap-user
              key: name
        - name: AGE
          valueFrom:
            configMapKeyRef:
              name: my-configmap-user
              key: age
      envFrom:
        - configMapRef:
            name: my-configmap-log
  restartPolicy: Never

configmap的文件卷使用

pod-volume.yaml

yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-env-pod-volume
spec:
  containers:
    - name: test-container
      image: nginx
      volumeMounts:
        - name: config-volume
          mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: my-configmap-user
  restartPolicy: Never

configmap热更新

index.html

html
CONFIG_MAP

configmap.yaml

yaml
kubectl create configmap nginx-index-config --from-file=index.html

deployment.yaml

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: hotupdate-deployment
  name: hotupdate-deployment
spec:
  replicas: 5
  selector:
    matchLabels:
      app: hotupdate-deployment
  template:
    metadata:
      labels:
        app: hotupdate-deployment
    spec:
      containers:
        - image: nginx
          name: nginx
          volumeMounts:
            - name: config-volume
              mountPath: /usr/share/nginx/html
      volumes:
        - name: config-volume
          configMap:
            name: nginx-index-config

不可改变

yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-index-config
data:
  index.html: |
    CONFIG_MAP
# 配置文件不可改变
immutable: true