k8s配置中心实战-交付apollo三组件
目录
- k8s配置中心实战-交付apollo三组件
- 1 apollo简单说明
- 1.1 apollo最简架构图:
- 1.2 apollo组件部署关系
- 2 为appllo准备数据库
- 2.1 下载安装mysql
- 2.1.1 yum安装mysql
- 2.1.2 创建简单配置文件
- 2.1.2 启动mysql并初始设置
- 2.1 下载安装mysql
- 3 初始化appllo数据库
- 3.1 configdb数据库
- 3.1.1下载脚本并执行:
- 3.1.2 授权并修改初始数据:
- 3.1.3 添加config域名解析:
- 3.2 portal数据库
- 3.2.1 下载并执行
- 3.2.2 授权用户并更新初始数据
- 3.1 configdb数据库
- 4 部署configservice
- 4.1 制作docker镜像
- 4.1.1 下载程序包
- 4.1.2 修改连接数据库配置:
- 4.1.3 创建启动脚本:
- 4.1.4 编写dockerfile
- 4.1.5 构建docker镜像
- 4.2 编写资源配置清单:
- 4.2.1 创建config的configmap资源清单
- 4.2.2 创建Deployment资源清单
- 4.2.3 创建service资源清单
- 4.2.4 创建ingress资源清单
- 4.3 应用资源配置清单:
- 4.3.1 任意node执行
- 4.3.2 检查启动情况:
- 4.1 制作docker镜像
- 5 部署adminservice
- 5.1 制作docker镜像
- 5.1.1 下载程序包
- 5.1.2 修改连接数据库配置:
- 5.1.3 创建启动脚本:
- 5.1.4 编写dockerfile
- 5.1.5 构建docker镜像
- 5.2 制作资源配置清单:
- 5.2.1 创建configmap资源清单
- 5.2.2 创建Deployment资源清单
- 5.3 应用资源配置清单
- 5.3.1 任意node执行
- 5.3.2 检查启动情况
- 5.1 制作docker镜像
- 6 部署portal
- 6.1 制作docker镜像
- 6.1.1 下载程序包
- 6.1.2 修改配置文件
- 6.1.3 创建启动脚本
- 6.1.4 制作dockerfile:
- 6.1.5 构建docker镜像
- 6.2 编写资源配置清单:
- 6.2.1 创建configmap资源清单
- 6.2.2 创建Deployment资源清单
- 6.2.3 创建service资源清单
- 6.2.4 创建ingress资源清单
- 6.3 应用资源配置清单
- 6.3.1 在任意node执行
- 6.3.2 检查启动情况
- 6.3.3 网页验证
- 6.1 制作docker镜像
- 7 配置服务使用apollo配置中心
- 1 apollo简单说明
1.2 apollo组件部署关系
- configservice自带eureka注册中心、配置写入configDB数据库、优先部署、为client提供服务
- adminservice向eureka注册服务、与configservice共用数据库、为portal提供服务
- configservice和adminservice组成一套环境、多个环境就得部署多套config和admin
- portal是web端、各环境共用、只需部署一套、有自己单独的数据库
2 为appllo准备数据库
apollo需要使用数据库,如果是mysql,需要版本在5.6以上:
本次环境mysql部署在10.4.7.11上,使用mysql5.7,为测试简单起见,各环境数据库使用同一个,不做隔离2.1 下载安装mysql
2.1.1 yum安装mysql
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpmyum -y install yum-utilsyum-config-manager --disable mysql80-communityyum-config-manager --enable mysql57-communityyum install mysql-server -y
2.1.2 创建简单配置文件
cat >/etc/my.cnf <<'EOF'[mysqld]character_set_server = utf8mb4collation_server = utf8mb4_general_ciinit_connect = "SET NAMES 'utf8mb4'"[mysql]default-character-set = utf8mb4EOF
2.1.2 启动mysql并初始设置
systemctl start mysqldsystemctl enable mysqldmysql -u root -p`grep password /var/log/messages|awk '{print $NF}'`# 修改密码> set global validate_password_policy=0;> set global validate_password_length=1;> set password=password('123456');> flush privileges;# 检查字符集:需要四个都是utf8mb4> \s
3 初始化appllo数据库
configdb初始化脚本
portal初始化脚本3.1 configdb数据库
3.1.1下载脚本并执行:
wget -O apolloconfig.sql https://raw.githubusercontent.com/ctripcorp/apollo/1.5.1/scripts/db/migration/configdb/V1.0.0__initialization.sql# 导入sql文件mysql -uroot -p123456 < apolloconfig.sql# 检查是否导入成功mysql -uroot -p123456 -e "show databases;"|grep ApolloConfigDB
3.1.2 授权并修改初始数据:
mysql -uroot -p123456> grant INSERT,DELETE,UPDATE,SELECT on ApolloConfigDB.* to 'apollo'@'10.4.7.%' identified by "123456";# 修改数据> use ApolloConfigDB> update ServerConfig set Value='http://apollo-config.zq.com/eureka' where Id=1;
3.1.3 添加config域名解析:
vi /var/named/zq.com.zonemysql A 10.4.7.11apollo-config A 10.4.7.10apollo-admin A 10.4.7.10apollo-portal A 10.4.7.10# 重启并验证systemctl restart nameddig -t A apollo-config.zq.com @10.4.7.11 +short
3.2 portal数据库
由于portal使用的是另一个portaldb,我们需要在数据库中新建portdb,并初始化3.2.1 下载并执行
wget -O apollo-portal.sql https://raw.githubusercontent.com/ctripcorp/apollo/1.5.1/scripts/db/migration/portaldb/V1.0.0__initialization.sql# 导入sql文件mysql -uroot -p123456 < apollo-portal.sql# 检查是否导入成功mysql -uroot -p123456 -e "show databases;"|grep ApolloPortalDB
3.2.2 授权用户并更新初始数据
都使用apollo用户来管理数据库是为了方便,如果有相关的安全考虑可以给config和portal分别使用不同的数据库账号mysql -uroot -p123456> grant INSERT,DELETE,UPDATE,SELECT on ApolloPortalDB.* to "apollo"@"10.4.7.%" identified by "123456";# 更新部门名> update ApolloPortalDB.ServerConfig set Value='[{"orgId":"zq01","orgName":"研发部"},{"orgId":"zq02","orgName":"运维部"}]' where Id=2;
4 部署configservice
4.1 制作docker镜像
操作在7.200上完成4.1.1 下载程序包
wget https://github.com/ctripcorp/apollo/releases/download/v1.5.1/apollo-configservice-1.5.1-github.zipmkdir /data/dockerfile/apollo-configserviceunzip -o apollo-configservice-1.5.1-github.zip -d /data/dockerfile/apollo-configservice/
4.1.2 修改连接数据库配置:
cd /data/dockerfile/apollo-configservice/config# 修改数据库连接地址sed -i 's#fill-in-the-correct-server#mysql.zq.com#g' application-github.properties# 修改数据库连接用户和密码sed -i 's#FillInCorrectUser#apollo#g' application-github.propertiessed -i 's#FillInCorrectPassword#123456#g' application-github.properties# 查看结果config]# egrep -v "^#|$^" application-github.propertiesspring.datasource.url = jdbc:mysql://mysql.zq.com:3306/ApolloConfigDB?characterEncoding=utf8spring.datasource.username = apollospring.datasource.password = 123456
4.1.3 创建启动脚本:
程序中自带的start.sh启动脚本时不适用与K8S运行,因此需要专门下载他们提供的K8S内使用的脚本# 1.从官网下载启动脚本cd /data/dockerfile/apollo-configservice/scripts/wget https://raw.githubusercontent.com/ctripcorp/apollo/1.5.1/scripts/apollo-on-kubernetes/apollo-config-server/scripts/startup-kubernetes.sh# 2. 添加一行使用主机名的变量sed -i '5i APOLLO_CONFIG_SERVICE_NAME=$(hostname -i)' startup-kubernetes.sh# 3.根据需要修改下jvm限制
4.1.4 编写dockerfile
dockerfile官方地址cd ..cat >Dockerfile <<'EOF'FROM harbor.zq.com/base/jre8:8u112ENV VERSION 1.5.1RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\echo "Asia/Shanghai" > /etc/timezoneADD apollo-configservice-${VERSION}.jar /apollo-configservice/apollo-configservice.jarADD config/ /apollo-configservice/configADD scripts/ /apollo-configservice/scriptsCMD ["sh","/apollo-configservice/scripts/startup-kubernetes.sh"]EOF
4.1.5 构建docker镜像
docker build . -t harbor.zq.com/infra/apollo-configservice:v1.5.1docker push harbor.zq.com/infra/apollo-configservice:v1.5.1
4.2 编写资源配置清单:
mkdir /data/k8s-yaml/apollo-configservicecd /data/k8s-yaml/apollo-configservice
4.2.1 创建config的configmap资源清单
给configservice创建cm资源的清单的目的是方便修改
其实里面的内容就是前面修改的application-github.properties文件
如果确定不会修改,可以不创建此cm,直接写死配置到docker镜像中cat >cm.yaml <<'EOF'apiVersion: v1kind: ConfigMapmetadata:name: apollo-configservice-cmnamespace: infradata:application-github.properties: |# DataSourcespring.datasource.url = jdbc:mysql://mysql.zq.com:3306/ApolloConfigDB?characterEncoding=utf8spring.datasource.username = apollospring.datasource.password = 123456eureka.service.url = http://apollo-config.zq.com/eurekaapp.properties: |appId=100003171EOF
在同一个configmap资源中,可以添加多个配置文件,上述配置就有两个,分别是:
application-github.properties和app.properties
4.2.2 创建Deployment资源清单
cat >dp.yaml <<'EOF'kind: DeploymentapiVersion: extensions/v1beta1metadata:name: apollo-configservicenamespace: infralabels:name: apollo-configservicespec:replicas: 1selector:matchLabels:name: apollo-configservicetemplate:metadata:labels:app: apollo-configservicename: apollo-configservicespec:volumes:- name: configmap-volumeconfigMap:name: apollo-configservice-cmcontainers:- name: apollo-configserviceimage: harbor.zq.com/infra/apollo-configservice:v1.5.1ports:- containerPort: 8080protocol: TCPvolumeMounts:- name: configmap-volumemountPath: /apollo-configservice/configterminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentimagePullSecrets:- name: harborrestartPolicy: AlwaysterminationGracePeriodSeconds: 30securityContext:runAsUser: 0schedulerName: default-schedulerstrategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1maxSurge: 1revisionHistoryLimit: 7progressDeadlineSeconds: 600EOF
4.2.3 创建service资源清单
cat >svc.yaml <<'EOF'kind: ServiceapiVersion: v1metadata:name: apollo-configservicenamespace: infraspec:ports:- protocol: TCPport: 8080targetPort: 8080selector:app: apollo-configserviceEOF
4.2.4 创建ingress资源清单
cat >ingress.yaml <<'EOF'kind: IngressapiVersion: extensions/v1beta1metadata:name: apollo-configservicenamespace: infraspec:rules:- host: apollo-config.zq.comhttp:paths:- path: /backend:serviceName: apollo-configserviceservicePort: 8080EOF
service中不一定必须暴露8080,分配的clusterIP中所有的端口都可以 但ingress中的servicePort一定要与service中暴露的端口匹配
4.3 应用资源配置清单:
4.3.1 任意node执行
kubectl create -f http://k8s-yaml.zq.com/apollo-configservice/cm.yamlkubectl create -f http://k8s-yaml.zq.com/apollo-configservice/dp.yamlkubectl create -f http://k8s-yaml.zq.com/apollo-configservice/svc.yamlkubectl create -f http://k8s-yaml.zq.com/apollo-configservice/ingress.yaml
4.3.2 检查启动情况:
kubectl -n infra get pod|grep apollo-config# 检查命令kubectl -n infra logs apollo-configservice-64fc749978-9nz5h --tail=4



需要等到eureka启动以后才可以,接下来使用浏览器访问apollo-config.zq.com
5 部署adminservice
5.1 制作docker镜像
5.1.1 下载程序包
wget https://github.com/ctripcorp/apollo/releases/download/v1.5.1/apollo-adminservice-1.5.1-github.zipmkdir /data/dockerfile/apollo-adminserviceunzip -o apollo-adminservice-1.5.1-github.zip -d /data/dockerfile/apollo-adminservice/
5.1.2 修改连接数据库配置:
由于使用了configmap资源将配置文件挂载出来了,所以不在修改配置文件,如需修改配置文件,请参考部署apollo-configservice时候的修改方法:
5.1.3 创建启动脚本:
程序中自带的start.sh启动脚本时不适用与K8S运行,因此需要专门下载他们提供的K8S内使用的脚本
# 1.从官网下载启动脚本cd /data/dockerfile/apollo-adminservice/scripts/wget https://raw.githubusercontent.com/ctripcorp/apollo/1.5.1/scripts/apollo-on-kubernetes/apollo-admin-server/scripts/startup-kubernetes.sh# 2. 添加一行使用主机名的变量sed -i '5i APOLLO_CONFIG_SERVICE_NAME=$(hostname -i)' startup-kubernetes.sh# 3.修改端口为8080sed -i 's#8090#8080#g' startup-kubernetes.sh
官方配置文件端口改为8090的目的是虚拟机部署的时候端口不冲突 但我们用K8S部署,会给他单独的clusterIP,所以不用担心端口重复
5.1.4 编写dockerfile
cd ..cat >Dockerfile <<'EOF'FROM stanleyws/jre8:8u112ENV VERSION 1.5.1RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\echo "Asia/Shanghai" > /etc/timezoneADD apollo-adminservice-${VERSION}.jar /apollo-adminservice/apollo-adminservice.jarADD config/ /apollo-adminservice/configADD scripts/ /apollo-adminservice/scriptsCMD ["/bin/bash","/apollo-adminservice/scripts/startup-kubernetes.sh"]EOF
由于要使用cm配置资源,因此就不改config中的配置了
5.1.5 构建docker镜像
docker build . -t harbor.zq.com/infra/apollo-adminservice:v1.5.1docker push harbor.zq.com/infra/apollo-adminservice:v1.5.1
5.2 制作资源配置清单:
adminservice向注册中心注册服务,不直接对外提供服务,因此不需要暴露端口,只需要cm资源和dp资源
mkdir /data/k8s-yaml/apollo-adminservicecd /data/k8s-yaml/apollo-adminservice
5.2.1 创建configmap资源清单
cat >cm.yaml <<'EOF'apiVersion: v1kind: ConfigMapmetadata:name: apollo-adminservice-cmnamespace: infradata:application-github.properties: |# DataSourcespring.datasource.url = jdbc:mysql://mysql.zq.com:3306/ApolloConfigDB?characterEncoding=utf8spring.datasource.username = apollospring.datasource.password = 123456eureka.service.url = http://apollo-config.zq.com/eurekaapp.properties: |appId=100003172EOF
注意每个服务的appId都不会一样哦
5.2.2 创建Deployment资源清单
cat >dp.yaml <<'EOF'kind: DeploymentapiVersion: extensions/v1beta1metadata:name: apollo-adminservicenamespace: infralabels:name: apollo-adminservicespec:replicas: 1selector:matchLabels:name: apollo-adminservicetemplate:metadata:labels:app: apollo-adminservicename: apollo-adminservicespec:volumes:- name: configmap-volumeconfigMap:name: apollo-adminservice-cmcontainers:- name: apollo-adminserviceimage: harbor.zq.com/infra/apollo-adminservice:v1.5.1ports:- containerPort: 8080protocol: TCPvolumeMounts:- name: configmap-volumemountPath: /apollo-adminservice/configterminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentimagePullSecrets:- name: harborrestartPolicy: AlwaysterminationGracePeriodSeconds: 30securityContext:runAsUser: 0schedulerName: default-schedulerstrategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1maxSurge: 1revisionHistoryLimit: 7progressDeadlineSeconds: 600EOF
5.3 应用资源配置清单
5.3.1 任意node执行
kubectl create -f http://k8s-yaml.zq.com/apollo-adminservice/cm.yamlkubectl create -f http://k8s-yaml.zq.com/apollo-adminservice/dp.yaml
5.3.2 检查启动情况
~]# kubectl -n infra get pod|grep apollo-adminapollo-adminservice-6cd4fcfdc8-2drnq 1/1 Running 0 9s# 检查命令kubectl -n infra logs apollo-configservice-6cd4fcfdc8-2drnq --tail=4
通过 apollo-config.zq.com 检查是否注册到了eureka:
已经顺利的注册到了注册中心中。
6 部署portal
6.1 制作docker镜像
6.1.1 下载程序包
wget https://github.com/ctripcorp/apollo/releases/download/v1.5.1/apollo-portal-1.5.1-github.zipmkdir /data/dockerfile/apollo-portalunzip -o apollo-portal-1.5.1-github.zip -d /data/dockerfile/apollo-portal/
6.1.2 修改配置文件
由于使用concigmap资源,故不在这里修改
注意如果要修改的话,要分别修改两个文件
apollo-env.properties修改数据库配置apollo-env.properties修改支持的环境列表6.1.3 创建启动脚本
脚本官方地址# 1.从官网下载启动脚本cd /data/dockerfile/apollo-portal/scripts/wget https://raw.githubusercontent.com/ctripcorp/apollo/1.5.1/scripts/apollo-on-kubernetes/apollo-portal-server/scripts/startup-kubernetes.sh# 2. 添加一行使用主机名的变量sed -i '5i APOLLO_CONFIG_SERVICE_NAME=$(hostname -i)' startup-kubernetes.sh# 3.修改端口为8080sed -i 's#8070#8080#g' startup-kubernetes.sh
6.1.4 制作dockerfile:
cd /data/dockerfile/apollo-portal/cat >Dockerfile <<'EOF'FROM stanleyws/jre8:8u112ENV VERSION 1.5.1RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\echo "Asia/Shanghai" > /etc/timezoneADD apollo-portal-${VERSION}.jar /apollo-portal/apollo-portal.jarADD config/ /apollo-portal/configADD scripts/ /apollo-portal/scriptsCMD ["/bin/bash","/apollo-portal/scripts/startup-kubernetes.sh"]EOF
6.1.5 构建docker镜像
docker build . -t harbor.zq.com/infra/apollo-portal:v1.5.1docker push harbor.zq.com/infra/apollo-portal:v1.5.1
6.2 编写资源配置清单:
mkdir /data/k8s-yaml/apollo-portalcd /data/k8s-yaml/apollo-portal
6.2.1 创建configmap资源清单
cat >cm.yaml <<'EOF'apiVersion: v1kind: ConfigMapmetadata:name: apollo-portal-cmnamespace: infradata:application-github.properties: |# DataSourcespring.datasource.url = jdbc:mysql://mysql.zq.com:3306/ApolloPortalDB?characterEncoding=utf8spring.datasource.username = apollospring.datasource.password = 123456app.properties: |appId=100003173apollo-env.properties: |dev.meta=http://apollo-config.zq.comEOF
这里暂时只管理一个环境,等跑通了以后,再演示多环境问题
6.2.2 创建Deployment资源清单
cat >dp.yaml <<'EOF'kind: DeploymentapiVersion: extensions/v1beta1metadata:name: apollo-portalnamespace: infralabels:name: apollo-portalspec:replicas: 1selector:matchLabels:name: apollo-portaltemplate:metadata:labels:app: apollo-portalname: apollo-portalspec:volumes:- name: configmap-volumeconfigMap:name: apollo-portal-cmcontainers:- name: apollo-portalimage: harbor.zq.com/infra/apollo-portal:v1.5.1ports:- containerPort: 8080protocol: TCPvolumeMounts:- name: configmap-volumemountPath: /apollo-portal/configterminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentimagePullSecrets:- name: harborrestartPolicy: AlwaysterminationGracePeriodSeconds: 30securityContext:runAsUser: 0schedulerName: default-schedulerstrategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1maxSurge: 1revisionHistoryLimit: 7progressDeadlineSeconds: 600EOF
6.2.3 创建service资源清单
cat >svc.yaml <<'EOF'kind: ServiceapiVersion: v1metadata:name: apollo-portalnamespace: infraspec:ports:- protocol: TCPport: 8080targetPort: 8080selector:app: apollo-portalEOF
6.2.4 创建ingress资源清单
cat >ingress.yaml <<'EOF'kind: IngressapiVersion: extensions/v1beta1metadata:name: apollo-portalnamespace: infraspec:rules:- host: apollo-portal.zq.comhttp:paths:- path: /backend:serviceName: apollo-portalservicePort: 8080EOF
6.3 应用资源配置清单
6.3.1 在任意node执行
kubectl create -f http://k8s-yaml.zq.com/apollo-portal/cm.yamlkubectl create -f http://k8s-yaml.zq.com/apollo-portal/dp.yamlkubectl create -f http://k8s-yaml.zq.com/apollo-portal/svc.yamlkubectl create -f http://k8s-yaml.zq.com/apollo-portal/ingress.yaml
6.3.2 检查启动情况
6.3.3 网页验证
由于前面已经一起添加了域名解析,因此portal创建好后不需要在添加域名解析,直接浏览器登录验证
网页:apollo-portal.zq.com
默认用户名:apollo
默认密码:admin
登录成功后,立马修改密码为apollo123
到此,apollo的三个组件都已经交付到k8s里了。
7 配置服务使用apollo配置中心
使用配置中心,需要开发对代码进行调整,将一些配置,通过变量的形式配置到apollo中,服务通过配置中心来获取具体的配置
7.1 新建dubbo-service项目配置
7.1.1 在配置中心修改新增项目:
项目属性:
AppId:dubbo-demo-service
应用名称:dubbo服务提供者
部门:研发部
为新项目添加配置如下:
| key | value | 备注 |
|---|---|---|
| dubbo.registry | zookeeper://zk1.zq.com:2181 | 注册中心地址 |
| dubbo.port | 20880 | dubbo服务监听端口 |
7.1.2 重新打包service镜像
还是使用之前的流水线,但是使用分支为apollo的代码进行打包,参数如下:
| 参数名 | 参数值 |
|---|---|
| app_name | dubbo-demo-service |
| image_name | app/dubbo-demo-service |
| git_repo | https://gitee.com/noah-luo/dubbo-demo-service.git |
| git_ver | apollo |
| add_tag | 200512_0746 |
| mvn_dir | ./ |
| target_dir | ./dubbo-server/target |
| mvn_cmd | mvn clean package -Dmaven.test.skip=true |
| base_image | base/jre8:8u112 |
| maven | 3.6.1 |
7.1.3 重新应用资源配置清单
修改dp.yaml资源配置清单
- 将镜像改为刚刚打包的镜像名:
- 添加环境变量
C_OPTS,以便指定配置中心 ``` vim /data/k8s-yaml/dubbo-server/dp.yaml—————原内容—————
spec: containers:- name: dubbo-demo-service
image: harbor.zq.com/app/dubbo-demo-service:master_200509_0800
ports:
- containerPort: 20880 protocol: TCP env:
- name: JAR_BALL value: dubbo-server.jar
- name: dubbo-demo-service
image: harbor.zq.com/app/dubbo-demo-service:master_200509_0800
ports:
—————新内容—————
spec:containers:- name: dubbo-demo-serviceimage: harbor.zq.com/app/dubbo-demo-service:apollo_200512_0746ports:- containerPort: 20880protocol: TCPenv:- name: JAR_BALLvalue: dubbo-server.jar- name: C_OPTSvalue: -Denv=dev -Dapollo.meta=http://apollo-config.zq.com
**应用资源配置清单:**
kubectl apply -f http://k8s-yaml.zq.com/dubbo-server/dp.yaml
<a name="5ec08d42"></a>### 7.2 新建dubbo-web项目配置<a name="5b7c5187"></a>#### 7.2.1 在配置中心修改新增项目:**项目属性:**<br />AppId:dubbo-demo-web<br />应用名称:dubbo服务消费者<br />部门:运维部<br />**为新项目添加配置如下:**| key | value | 备注 || --- | --- | --- || dubbo.registry | zookeeper://zk1.zq.com:2181 | 注册中心地址 |**发布后效果图如下:**<br />略<a name="e4c05384-1"></a>#### 7.1.2 重新打包service镜像还是使用之前的流水线,但是使用分支为apollo的代码进行打包,参数如下:| 参数名 | 参数值 || --- | --- || app_name | dubbo-demo-consumer || image_name | app/dubbo-demo-consumer || git_repo | git@gitee.com:noah-luo/dubbo-demo-web.git || git_ver | apollo || add_tag | 200512_0801 || mvn_dir | ./ || target_dir | ./dubbo-client/target || mvn_cmd | mvn clean package -Dmaven.test.skip=true || base_image | base/jre8:8u112 || maven | 3.6.1 |构建完成后,修改资源配置清单并应用:<a name="0ded2449-1"></a>#### 7.1.3 重新应用资源配置清单修改dp.yaml资源配置清单1. 将镜像改为刚刚打包的镜像名:2. 添加环境变量`C_OPTS`,以便指定配置中心
vim /data/k8s-yaml/dubbo-consumer/dp.yaml
—————原内容—————
spec:containers:- name: dubbo-demo-consumerimage: harbor.zq.com/app/dubbo-demo-consumer:master_200506_1430ports:- containerPort: 8080protocol: TCP- containerPort: 20880protocol: TCPenv:- name: JAR_BALLvalue: dubbo-client.jar
—————新内容—————
spec:containers:- name: dubbo-demo-consumerimage: harbor.zq.com/app/dubbo-demo-consumer:apollo_200512_0801ports:- containerPort: 8080protocol: TCP- containerPort: 20880protocol: TCPenv:- name: JAR_BALLvalue: dubbo-client.jar- name: C_OPTSvalue: -Denv=dev -Dapollo.meta=http://apollo-config.zq.com
**应用资源配置清单:**
kubectl apply -f http://k8s-yaml.zq.com/dubbo-consumer/dp.yaml
<a name="5fb1f9f9"></a>### 7.3 验证结果<a name="6d24d797"></a>#### 7.3.1 修改dubbo-monitor资源管理机上,修改dubbo-monitor的dp资源的使用的cm资源
set -i ‘s#dubbo-monitor-cm-pro#dubbo-monitor-cm#g’ /data/k8s-yaml/dubbo-monitor/dp-cm.yaml
**任意node节点应用资源**
kubectl apply -f http://k8s-yaml.zq.com/dubbo-monitor/dp.yaml
```
登录dubbo-monitor查看
访问http://dubbo-monitor.zq.com/
浏览器查看
访问http://dubbo-demo.zq.com/hello?name=lg
apollo中看实例列表
转载自:https://www.cnblogs.com/noah-luo/p/13501802.html
