12. ConfigMap
可以通过卷的方式挂载传递配置文信息 或者可以通过环境变量来传递信息
| 一般用ConfigMap去管理一些配置文件、或者一些大量的环境变量信息。 |
| |
| ConfigMap 将配置和Pod分开,有一个nginx、nginx.conf -》 configmap nginx |
| 更易于配置文件的更改和管理 |
| |
| ConfigMap配置信息和镜像解耦,实现方式为将配置信息放到ConfigMap对象中,然后在pod的中作为Volume挂载到pod中,从而实现导入配置的目的 |
| 通过ConfigMap给pod定义全局环境变量 |
| 通过ConfigMap给pod传递命令行参数,如mysql -u -p中的账户密码可以通过ConfigMap传递 |
| 通过ConfigMap给pod中的容器提供配置文件,配置文件以挂载到容器的形式使用 |
| ConfigMap需要在pod使用它之前创建 |
| pod只能使用位于同一个namespace的ConfigMap,及ConfigMap不能夸ConfigMap使用 |
| 通常用于非安全加密的配置场景 |
| ConfigMap通常是小于1MB的配置 |
12.1 使用
| |
| wget https://kubernetes.io/examples/configmap/ui.properties -O ../configmap/ui.properties |
| |
| wget --no-check-certificate https://kubernetes.io/examples/configmap/game.properties -O ../configmap/game.properties |
| |
| |
| [root@master01 configmap] |
| configmap/game-config created |
| |
| [root@master01 configmap] |
| Name: game-config |
| Namespace: default |
| Labels: <none> |
| Annotations: <none> |
| |
| Data |
| ==== |
| game.properties: |
| ---- |
| enemies=aliens |
| lives=3 |
| enemies.cheat=true |
| enemies.cheat.level=noGoodRotten |
| secret.code.passphrase=UUDDLRLRBABAS |
| secret.code.allowed=true |
| secret.code.lives=30 |
| ui.properties: |
| ---- |
| color.good=purple |
| color.bad=yellow |
| allow.textmode=true |
| how.nice.to.look=fairlyNice |
| |
| Events: <none> |
| |
| [root@master01 configmap] |
| apiVersion: v1 |
| data: |
| game.properties: |- |
| enemies=aliens |
| lives=3 |
| enemies.cheat=true |
| enemies.cheat.level=noGoodRotten |
| secret.code.passphrase=UUDDLRLRBABAS |
| secret.code.allowed=true |
| secret.code.lives=30 |
| kind: ConfigMap |
| metadata: |
| creationTimestamp: "2022-11-08T14:27:20Z" |
| managedFields: |
| - apiVersion: v1 |
| fieldsType: FieldsV1 |
| fieldsV1: |
| f:data: |
| .: {} |
| f:game.properties: {} |
| manager: kubectl-create |
| operation: Update |
| time: "2022-11-08T14:27:20Z" |
| name: game-config-2 |
| namespace: default |
| resourceVersion: "211077" |
| selfLink: /api/v1/namespaces/default/configmaps/game-config-2 |
| uid: 36b3a9f3-8427-4eb9-aedf-bf95abe645e1 |
12.2 数据卷挂载
| root@deploy-harbor:~/20220731/k8s-Resource-N70/case10-configmap |
| apiVersion: v1 |
| kind: ConfigMap |
| metadata: |
| name: nginx-config |
| data: |
| default: | |
| server { |
| listen 80; |
| server_name www.mysite.com; |
| index index.html index.php index.htm; |
| |
| location / { |
| root /data/nginx/html; |
| if (!-e $request_filename) { |
| rewrite ^/(.*) /index.html last; |
| } |
| } |
| } |
| |
| |
| --- |
| |
| apiVersion: apps/v1 |
| kind: Deployment |
| metadata: |
| name: nginx-deployment |
| spec: |
| replicas: 1 |
| selector: |
| matchLabels: |
| app: ng-deploy-80 |
| template: |
| metadata: |
| labels: |
| app: ng-deploy-80 |
| spec: |
| containers: |
| - name: ng-deploy-80 |
| image: nginx:1.20.0 |
| ports: |
| - containerPort: 80 |
| volumeMounts: |
| - name: nginx-config |
| mountPath: /etc/nginx/conf.d |
| - name: nginx-static-dir |
| mountPath: /data/nginx/html |
| volumes: |
| - name: nginx-static-dir |
| hostPath: |
| path: /data/nginx |
| - name: nginx-config |
| configMap: |
| name: nginx-config |
| items: |
| - key: default |
| path: mysite.conf |
| |
| --- |
| apiVersion: v1 |
| kind: Service |
| metadata: |
| name: ng-deploy-80 |
| spec: |
| ports: |
| - name: http |
| port: 81 |
| targetPort: 80 |
| nodePort: 30019 |
| protocol: TCP |
| type: NodePort |
| selector: |
| app: ng-deploy-80 |
| root@deploy-harbor:~/20220731/k8s-Resource-N70/case10-configmap |
| Name: nginx-config |
| Namespace: default |
| Labels: <none> |
| Annotations: <none> |
| |
| Data |
| ==== |
| default: |
| ---- |
| server { |
| listen 80; |
| server_name www.mysite.com; |
| index index.html index.php index.htm; |
| |
| location / { |
| root /data/nginx/html; |
| if (!-e $request_filename) { |
| rewrite ^/(.*) /index.html last; |
| } |
| } |
| } |
| |
| |
| BinaryData |
| ==== |
| |
| Events: <none> |
12.3 环境变量传递
| root@deploy-harbor:~/20220731/k8s-Resource-N70/case10-configmap |
| apiVersion: v1 |
| kind: ConfigMap |
| |
| metadata: |
| name: nginx-config |
| data: |
| username: "user1" |
| password: "12345678" |
| |
| |
| --- |
| |
| apiVersion: apps/v1 |
| kind: Deployment |
| metadata: |
| name: nginx-deployment |
| spec: |
| replicas: 1 |
| selector: |
| matchLabels: |
| app: ng-deploy-80 |
| template: |
| metadata: |
| labels: |
| app: ng-deploy-80 |
| spec: |
| containers: |
| - name: ng-deploy-80 |
| image: nginx |
| env: |
| - name: MY_USERNAME |
| valueFrom: |
| configMapKeyRef: |
| name: nginx-config |
| key: username |
| - name: MY_PASSWORD |
| valueFrom: |
| configMapKeyRef: |
| name: nginx-config |
| key: password |
| |
| - name: "password" |
| value: "123456" |
| ports: |
| - containerPort: 80 |