ConfigMap
创建ConfigMap后,数据实际会存储在K8s中Etcd,然后通过创建Pod时引用该数据。
应用场景:应用程序配置
Pod使用configmap数据有两种方式:
两种数据类型:
#解释
apiVersion: v1 kind: Pod metadata:      name: configmap-demo-pod    spec:   containers:     - name: demo       image: alpine              command: ["sleep", "3600"]          env:                           - name: ABC            valueFrom:             configMapKeyRef:                              name: configmap-demo                                   key: abc                                - name: CDE           valueFrom:             configMapKeyRef:               name: configmap-demo               key: cde       volumeMounts:              - name: config                       mountPath: "/config"                     readOnly: true   volumes:          - name: config            configMap:                  name: configmap-demo                  items:         - key: "redis.properties"                path: "redis.properties"   
   | 
 
vim configmap.yaml
apiVersion: v1 kind: ConfigMap metadata:   name: configmap-demo data:   abc: "123"   cde: "456"
    redis.properties: |     port: 6379     host: 192.168.0.11
 
   | 
 
vim configmap-demo-pod.yaml
apiVersion: v1 kind: Pod metadata:   name: configmap-demo-pod spec:   containers:     - name: demo       image: nginx       env:         - name: ABC           valueFrom:             configMapKeyRef:               name: configmap-demo               key: abc         - name: CDE           valueFrom:             configMapKeyRef:               name: configmap-demo               key: cde       volumeMounts:       - name: config         mountPath: "/config"         readOnly: true   volumes:     - name: config       configMap:         name: configmap-demo         items:         - key: "redis.properties"           path: "redis.properties"
 
   | 
 
验证查看
kubectl apply -f configmap.yaml kubectl apply -f configmap-demo-pod.yaml  kubectl get configmaps  kubectl exec -it configmap-demo-pod -- bash   
 
 
 
   | 
 
参考链接:https://kubernetes.io/zh/docs/concepts/configuration/configmap/
Secret
与ConfigMap类似,区别在于Secret主要存储敏感数据,所有的数据要经过base64编码。
应用场景:凭据
kubectl create secret 支持三种数据类型:
Pod使用Secret数据与ConfigMap方式一样。
第一步:将用户名密码进行编码
[root@k8s-node1 ~] YWRtaW4= [root@k8s-node1 ~] MTIzLmNvbQ==
 
   | 
 
第二步:将编码后值放到Secret
vim secret.yaml
apiVersion: v1 kind: Secret metadata:   name: db-user-pass type: Opaque data:   username: YWRtaW4=   password: MTIzLmNvbQ==
 
   | 
 
vim secret-demo-pod.yaml
apiVersion: v1 kind: Pod metadata:   name: secret-demo-pod spec:   containers:   - name: demo     image: nginx     env:     - name: USER       valueFrom:         secretKeyRef:           name: db-user-pass           key: username     - name: PASS       valueFrom:         secretKeyRef:           name: db-user-pass           key: password     volumeMounts:     - name: config       mountPath: "/config"       readOnly: true   volumes:   - name: config     secret:       secretName: db-user-pass       items:       - key: username         path: my-username       - key: password         path: my-password
 
   | 
 
验证查看
kubectl apply -f secret.yaml  kubectl apply -f secret-demo-pod.yaml  kubectl get secrets  kubectl exec -it secret-demo-pod -- bash     
 
 
 
   | 
 
参考链接:https://kubernetes.io/zh/docs/concepts/configuration/secret/
应用程序如何动态更新配置
应用程序动态更新配置方案: