在本章节中,我们将使用应用模板快速创建一组 Dubbo-go Server和 Client 端应用,部署在 Istio 集群中;观察、调试和验证服务发现和调用成功。
生成项目包括几个目录:
api:放置接口文件:proto文件和生成的pb.go文件
build:放置构建相关文件
chart:放置发布用 chart 仓库、基础环境chart 仓库:nacos、mesh(开发中)
cmd:程序入口
conf:框架配置
pkg/service:RPC 服务实现
Makefile:
编译接口
开发人员需要修改 proto 文件,本任务中直接使用默认接口即可。
拉取依赖
编写业务逻辑
修改 pkg/service/service.go 实现函数, 返回字符串中显示版本为 v1.0.0
修改配置如下字段,从而使用xds协议作为注册中心
conf/dubbogo.yaml
至此,应用开发完成。
指定需要构建的镜像:
修改 Makefile 如下字段,指定好需要构建的镜像地址和版本。
指定好需要通过 helm 安装的名称。
指定需要部署的应用和镜像:
修改 chart/app/Chart.yaml 如下字段,指定当前应用名为 dubbo-go-server
,部署时会创建一个名为 dubbo-go-server 的 service ,关联当前应用的所有版本。
修改 chart/app/values.yaml 如下字段,指定需要部署的镜像以及当前开发的应用版本 dubbogoAppVersion 为 v1。
部署的镜像需要和上述构建的镜像一致。当前应用版本用于 mesh 流量规则控制。
至此,构建参数和发布参数都已指定好,可以进行构建和部署了。
构建、推送镜像
$ make build
(本地为 amd64机器)
或者
$ make buildx-publish
(本地为 arm64机器,依赖 docker buildx 命令)
发布 Dubbo-go 应用至集群
可看到通过 helm 部署成功
查看部署好的 deployment ,版本为 v1。
查看部署好的 service。
使用 kubectl port-forward Dubbo-go 应用到本地
使用 grpc_cli 调试集群内的应用,参考任务【使用 grpc_cli 调试 Dubbo-go 应用】
使用 grpc_cli 发起调用,测试接口
至此,我们成功开发了一个应用,把它部署在了 istio 集群内。
修改如下配置文件,使用xds协议作为注册中心,加载名为 GreeterClientImpl 的客户端服务。
conf/dubbogo.yaml
至此,应用开发完成。
指定需要构建的镜像:
修改 Makefile 如下字段,指定好需要构建的镜像地址和版本。
指定好需要通过 helm 安装的名称。
指定需要部署的应用和镜像:
修改 chart/app/Chart.yaml 如下字段,指定当前应用名为 dubbo-go-client
,部署时会创建一个名为 dubbo-go-client 的 service ,关联当前应用的所有版本。对于一个只有客户端的应用,可以不创建sevice,可以由开发者在模板中修改,本教程中我们默认创建。
修改 chart/app/values.yaml 如下字段,指定需要部署的镜像以及当前开发的应用版本 dubbogoAppVersion 为 v1。
部署的镜像需要和上述构建的镜像一致。当前应用版本用于 mesh 流量规则控制。
至此,构建参数和发布参数都已指定好,可以进行构建和部署了。
构建、推送镜像
$ make build
(本地为 amd64机器)
或者
$ make buildx-publish
(本地为 arm64机器,依赖 docker buildx 命令)
发布 Dubbo-go Client 应用至集群
可看到通过 helm 部署成功, 目前已经在集群中存在 Client 和 Server 两个应用。
查看部署好的 client 和 server 两个 deployment。
查看客户端调用日志
验证调用成功
dubbogo-cli 提供的应用模板可以方便地支持开发者进行镜像的构建、推送、部署。
在 Istio 环境中,server 应用将自身服务信息注册在 Isito 上,由客户端监听 xds 资源,查询 istio debug 端口进行接口级别的服务发现。开发人员无需关心 service名、主机名、集群名等概念,只需要引入接口,发起调用即可。