当前位置:首页 > Web开发 > 正文

配置中心(一)configmap资源

2024-03-31 Web开发

在我们的环境中测试使用configmap资源,需要先对我们的环境进行一些准备,首先将dubbo服务调整为0个pod ,然后把zookeeper进行拆分:

技术图片

技术图片

拆分zk环境,模拟测试环境跟生产环境:

技术图片

停止zookeeper:

# sh /opt/zookeeper/bin/zkServer.sh stop

# rm -rf /data/zookeeper/data/* # rm -rf /data/zookeeper/logs/*

# vi /opt/zookeeper/conf/zoo.cfg

注释掉集群配置:

技术图片

启动zookeeper:

# sh /opt/zookeeper/bin/zkServer.sh start

创建资源配置清单:

1、cm.yaml  红色部分是配置文件的name,下面的是内容。

apiVersion: v1 kind: ConfigMap metadata: name: dubbo-monitor-cm namespace: infra data: dubbo.properties: | dubbo.container=log4j,spring,registry,jetty dubbo.application.name=simple-monitor dubbo.application.owner=OldboyEdu dubbo.registry.address=zookeeper://zk1.od.com:2181 dubbo.protocol.port=20880 dubbo.jetty.port=8080 dubbo.jetty.directory=http://www.mamicode.com/dubbo-monitor-simple/monitor dubbo.charts.directory=http://www.mamicode.com/dubbo-monitor-simple/charts dubbo.statistics.directory=http://www.mamicode.com/dubbo-monitor-simple/statistics dubbo.log4j.file=http://www.mamicode.com/dubbo-monitor-simple/logs/dubbo-monitor.log dubbo.log4j.level=WARN

2、dp-cm.yaml

在dp里面如何使用configmap资源:

首先声明一个卷,卷的名字叫configmap-volume,然后指定这个卷使用的configmap

然后定义这个卷的挂载,挂载到哪里。

# vi dp-cm.yaml

kind: Deployment apiVersion: extensions/v1beta1 metadata: name: dubbo-monitor namespace: infra labels: name: dubbo-monitor spec: replicas: 1 selector: matchLabels: name: dubbo-monitor template: metadata: labels: app: dubbo-monitor name: dubbo-monitor spec: containers: - name: dubbo-monitor image: harbor.od.com/infra/dubbo-monitor:latest ports: - containerPort: 8080 protocol: TCP - containerPort: 20880 protocol: TCP imagePullPolicy: IfNotPresent volumeMounts: - name: configmap-volume mountPath: /dubbo-monitor-simple/conf volumes: - name: configmap-volume configMap: name: dubbo-monitor-cm imagePullSecrets: - name: harbor restartPolicy: Always terminationGracePeriodSeconds: 30 securityContext: runAsUser: 0 schedulerName: default-scheduler strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 maxSurge: 1 revisionHistoryLimit: 7 progressDeadlineSeconds: 600

应用资源配置清单:

# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/cm.yaml

# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/dp-cm.yaml

去dashboard查看configmap资源:

技术图片

我们可以创建多个configmap资源,然后在dp中去挂载应用这些configmap资源,达到修改配置的功能。

我们检查一下我们的容器:

# kubectl get pod -n infra

已经起来了

技术图片

我们检查一下我们挂载的配置是不是我们定义的configmap资源中的配置:

# kubectl exec -it dubbo-monitor-6676dd74cc-pvf2f -n infra /bin/bash

我们把配置文件挂载到了/dubbo-monitor-simple/conf 这里,我们去看一下。(上面的dp-cm.yaml中声明的)

# cat /dubbo-monitor-simple/conf/dubbo.properties

技术图片

跟我们定义的一模一样。

这里如果想更换配置,有两种方法:

  一、修改configmap 资源,然后apply一下更新资源,然后重启挂载这个configmap资源的dp。

  二、准备多个configmap资源,然后在dp中更改挂载的configmap,apply以后,dp自动重启。

检查dubbo-monitor页面的注册信息:

技术图片

连接的zk1.od.com,下面我们模拟更换configmap资源,来切换环境:

这里使用第二种方法,准备多个configmap,我们在准备一个configmap,就叫cm-pro.yaml:

# cp cm.yaml cm-pro.yaml

# vi cm-pro.yaml

然后我们把服务注册到zk2.od.com上:

把资源名字改成dubbo-monitor-cm-pro

把服务注册到zk2上:

应用一下cm-pro.yaml:

# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/cm-pro.yaml

技术图片

技术图片

然后我们修改dp-cm.yaml:

技术图片

然后apply这个dp-cm.yaml:

# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/dp-cm.yaml

新的已经起来了,我们进去看看是不是应用的新的configmap配置:

技术图片

# kubectl exec -it dubbo-monitor-5cb756cc6c-xtnrt -n infra /bin/bash

# cat /dubbo-monitor-simple/conf/dubbo.properties

技术图片

已经生效了。

更新configmap资源来更改配置需要更新(删除/apply/update)pod,否则无效。

看下dubbo-monitor的页面:已经是zk2了。

技术图片

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/41394.html