k8s ConfigMap 配置中心 电脑版发表于:2020/4/25 15:05  >#k8s ConfigMap 配置中心 [TOC] <br/> ConfigMap 简介 ------------ <br/> >**ConfigMap**用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。**ConfigMap**跟**secret**很类似,但它可以更方便地处理不包含敏感信息的字符串。 <br/> >注意 - **ConfigMap**必须在**Pod**引用它之前创建 - 使用**envFrom**时,将会自动忽略无效的键 - **Pod**只能使用同一个命名空间内的**ConfigMap** <br/> ConfigMap的yaml定义 ------------ <br/> >###示例 ```yaml apiVersion: v1 kind: ConfigMap metadata: name: appsettings.name-api namespace: netcore data: appsettings.json: | { "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" } ``` >相信大伙都看得出来这是一个ConfigMap关于**appsetting.json**的配置 <br/> 通过ConfigMap达到配置中心的作用 ------------ <br/> >###主要流程 ```flow start=>start: 开始|current requirementAnalysis=>operation: 创建appsettings.json的CofigMap|approved design=>operation: 创建对应的volume|approved coding=>operation: 通过volumeMounts覆盖原有的appsettings.json文件|future end=>end: 结束|past start->requirementAnalysis->design->coding->end ``` >###查看当前pod上的目录信息  >###控制application.json的配置 <br/> >修改yaml文件 >>1. 添加上述的yaml放到最前面 >>2. 添加volme >>>```yaml volumes: - name: appsettings ConfigMap: name: appsettings.name-api ``` >>3. 添加volumeMounts >>>```yaml volumeMounts: - name: appsettings mountPath: /app/appsettings.json subPath: appsettings.json ``` <br/> >完整的yaml ```yaml apiVersion: v1 kind: ConfigMap metadata: name: appsettings.name-api namespace: netcore data: appsettings.json: | { "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" } --- apiVersion: apps/v1 kind: Deployment metadata: name: name-api namespace: netcore labels: name: name-api spec: replicas: 3 selector: matchLabels: name: name-api template: metadata: labels: name: name-api spec: containers: - name: name-api env: - name: HOSTNAME_COMMAND valueFrom: fieldRef: fieldPath: metadata.name volumeMounts: - name: appsettings mountPath: /app/appsettings.json subPath: appsettings.json image: ccr.ccs.tencentyun.com/hbtest/name-api:v2 ports: - containerPort: 80 imagePullPolicy: Always imagePullSecrets: - name: tenxunyunregistrykey volumes: - name: appsettings configMap: name: appsettings.name-api --- kind: Service apiVersion: v1 metadata: name: name-api namespace: netcore spec: type: NodePort ports: - port: 80 targetPort: 80 selector: name: name-api ``` >查看结果  >###修改并再次发布 <br/> >修改 **Infomaction** 为 **Trace** ```yaml apiVersion: v1 kind: ConfigMap metadata: name: appsettings.name-api namespace: netcore data: appsettings.json: | { "Logging": { "LogLevel": { "Default": "Trace", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" } --- apiVersion: apps/v1 kind: Deployment metadata: name: name-api namespace: netcore labels: name: name-api spec: replicas: 3 selector: matchLabels: name: name-api template: metadata: labels: name: name-api spec: containers: - name: name-api env: - name: HOSTNAME_COMMAND valueFrom: fieldRef: fieldPath: metadata.name volumeMounts: - name: appsettings mountPath: /app/appsettings.json subPath: appsettings.json image: ccr.ccs.tencentyun.com/hbtest/name-api:v2 ports: - containerPort: 80 imagePullPolicy: Always imagePullSecrets: - name: tenxunyunregistrykey volumes: - name: appsettings configMap: name: appsettings.name-api --- kind: Service apiVersion: v1 metadata: name: name-api namespace: netcore spec: type: NodePort ports: - port: 80 targetPort: 80 selector: name: name-api ``` >###再次发布  >查看相关**pod** 我们会发现它并没有改变。  >删除副本集并再次查看结果  