[kubernetes] 交付dubbo之持续交付dubbo-monitor和dubbo-consumer(完结篇)

网友投稿 814 2022-10-15

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

[kubernetes] 交付dubbo之持续交付dubbo-monitor和dubbo-consumer(完结篇)

做这个实验目标是往kubernetes集群里交付dubbo服务,采用jenkins+maven+gitee实现,jenkins使用的是v2.303.1,maven使用3.6.3+jre8u91。整个项目的拓扑图如下:

主机
作用
host11zk节点、为整个集群提供dns、nginx为k8s集群提供proxy
host12
zk节点、nginx为k8s集群提供proxy
host21
k8s-node、zk节点、etcd节点
host22
k8s-node、etcd节点
host200
harbor仓库节点、httpd为集群提供资源配置清单文件,nfs为pod提供持久化存储

交付逻辑图:

01 交付dubbo-monitor

dubbo-monitor主要是为dubbo使用的zk提供一个可视化的界面,可以看到有多少个消费者和提供者。

1)创建dubbo-monitor目录(host200)

mkdir -p /data/dockerfile/dubbo-monitorcd !$

2)下载https://github.com/jeromefromcn/dubbo-monitor 项目代码到dubbo-monitor目录。

3)修改配置文件 -- host200

vi dubbo-monitor-simple/conf/dubbo_origin.propertiesdubbo.container=log4j,spring,registry,jettydubbo.application.name=dubbo-monitor # 任意写dubbo.application.owner=od  # 任意写dubbo.registry.address=zookeeper://zk1.od.com:2181?backup=zk2.od.com:2181,zk3.od.com:2181 #zk集群地址#dubbo.registry.address=zookeeper://127.0.0.1:2181#dubbo.registry.address=redis://127.0.0.1:6379#dubbo.registry.address=dubbo://127.0.0.1:9090dubbo.protocol.port=20880dubbo.jetty.port=8080dubbo.jetty.directory=/dubbo-monitor-simple/monitordubbo.charts.directory=/dubbo-monitor-simple/chartsdubbo.statistics.directory=/dubbo-monitor-simple/monitor/statisticsdubbo.log4j.file=logs/dubbo-monitor-simple.logdubbo.log4j.level=WARN

4)修改start.sh文件,将资源配置修改为128M,65行以后的全部删除。

vi /data/dockerfile/dubbo-monitor/dubbo-monitor-simple/bin/start.sh

5)创建Dockerfile文件

vi data/dockerfile/dubbo-monitor/DockerfileFROM jeromefromcn/docker-alpine-java-bashCOPY dubbo-monitor-simple/ dubbo-monitor-simple/CMD dubbo-monitor-simple/bin/start.sh

6)生成镜像

docker bulid . -t harbor.od.com/infra/dubbo-monitor:latest

7)创建配置清单 -- host200

mkdir /data/k8s-yaml/dubbo-monitor# dpcat dp.yaml kind: DeploymentapiVersion: extensions/v1beta1metadata: name: dubbo-monitor namespace: infra labels: name: dubbo-monitorspec: 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 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# svccat svc.yaml kind: ServiceapiVersion: v1metadata: name: dubbo-monitor namespace: infraspec: ports: - protocol: TCP port: 8080 targetPort: 8080 selector: app: dubbo-monitor# ingresscat ingress.yaml kind: IngressapiVersion: extensions/v1beta1metadata: name: dubbo-monitor namespace: infraspec: rules: - host: dubbo-monitor.od.com http: paths: - path: backend: serviceName: dubbo-monitor          servicePort: 8080

8)在node上应用

kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/dp.yamlkubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/svc.yamlkubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/ingress.yaml

9)查看dubbo-monitor资源

[root@host21 ~]# kubectl get all -n infra| grep monitorpod/dubbo-monitor-5bb45c8b97-pfq26 1/1 Running 3 13dservice/dubbo-monitor   ClusterIP   10.254.184.23            8080/TCP   14ddeployment.apps/dubbo-monitor   1/1     1            1           14dreplicaset.apps/dubbo-monitor-5bb45c8b97   1         1         1       14d

10)修改named配置文件 -- host11

vi /var/named/od.com.zonedubbo-monitor    A     192.168.122.10# 重启服务systemctl restart named

11)访问monitor,可以看到dubbo-demo-service已经存在providers

02 克隆一个dubbo-client项目

1)登录gitee.com,克隆一个dubbo-client项目,请参考之前的交付dubbo-server篇。

[kubernetes] 交付dubbo之jenkins持续交付dubbo-server

03 交付dubbo消费者

1)打开blue ocean

2)选择dubbo-demo

4)配置参数

app_name:dubbo-demo-consumerimage_name:app/dubbo-demo-consumergit_repo:git@gitee.com:xxxx/dubbo-demo-web.gitgit_version:masteradd_tag:211004_1024mvn_dir:./target_dir:./dubbo-client/target/mvn_cmd:默认base_image:base/jre:8u112maven:3.6.3-8u291

5)run起来

6)去harbor查看是否有镜像了

7)创建消费者资源配置清单

mkdir -pv /data/k8s-yaml/dubbo-consume# dpdp.yaml kind: DeploymentapiVersion: extensions/v1beta1metadata: name: dubbo-demo-consumer namespace: app labels: name: dubbo-demo-consumerspec: replicas: 1 selector: matchLabels: name: dubbo-demo-consumer template: metadata: labels: app: dubbo-demo-consumer name: dubbo-demo-consumer spec: containers: - name: dubbo-demo-consumer        image: harbor.od.com/app/dubbo-demo-consumer:master_211004_1024 ports: - containerPort: 8080 protocol: TCP - containerPort: 20880 protocol: TCP env: - name: JAR_BALL value: dubbo-client.jar imagePullPolicy: IfNotPresent 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# svccat svc.yaml kind: ServiceapiVersion: v1metadata: name: dubbo-demo-consumer namespace: appspec: ports: - protocol: TCP port: 8080 targetPort: 8080 selector: app: dubbo-demo-consumer# ingresscat ingress.yaml kind: IngressapiVersion: extensions/v1beta1metadata: name: dubbo-demo-consumer namespace: appspec: rules: - host: demo.od.com http: paths: - path: backend: serviceName: dubbo-demo-consumer          servicePort: 8080

8)在node节点应用

kubectl apply -f http://k8s-yaml.od.com/dubbo-consumer/dp.yamlkubectl apply -f http://k8s-yaml.od.com/dubbo-consumer/svc.yamlkubectl apply -f http://k8s-yaml.od.com/dubbo-consumer/ingree.yaml

9)查看消费者资源情况

[root@host21 ~]# kubectl get all -n app | grep consumerpod/dubbo-demo-consumer-676b9d45fc-8k7jp 1/1 Running 2 13dservice/dubbo-demo-consumer ClusterIP 10.254.41.69 8080/TCP 14ddeployment.apps/dubbo-demo-consumer 1/1 1 1 14dreplicaset.apps/dubbo-demo-consumer-5b6bdd8f9c 0 0 0 14dreplicaset.apps/dubbo-demo-consumer-676b9d45fc 1 1 1 13dreplicaset.apps/dubbo-demo-consumer-86c9ff44b 0 0 0 14dreplicaset.apps/dubbo-demo-consumer-8d88d957d    0         0         0       14d

10)查看dubbo-monitor信息,可以看到已经有消费者了

11)添加dns解析

vi /var/named/od.com.zonedemo    A     192.168.122.10# 重启服务systemctl restart named

12)测试消费者

https://demo.od.com/hello?name=运维少年

13)来看下整个流程

04 总结

使用这种模式进行交付,在业务高峰期可以直接扩容消费者,前端用户无感知。且在研发重新commit代码之后,可以使用commit id进行构建镜像,达到快速发布的效果。

上一篇:[kubernetes] 跨云厂商使用公网IP搭建k8s v1.20.9集群
下一篇:云平台数据库安全之数据库审计
相关文章

 发表评论

暂时没有评论,来抢沙发吧~