from https://github.com/apache/dubbo-go-samples/tree/master/mesh
可以按照下文步骤,将 Demo 部署到本地集群。
- 1 总体目标
- 2 基本流程
- 3 详细步骤
- 3.1 环境要求
- 3.2 前置条件
- 3.3 部署到 Kubernetes
- 3.3.1 部署 Provider
- 3.3.2 部署 Consumer
- 3.4 检查 Provider 和 Consumer 正常通信
- 3.5 Istio 流量治理
1 总体目标
- 部署 dubbo-go 应用到 Kubernetes
- Istio 自动注入 Envoy 并实现流量拦截
- 基于 Istio 规则进行流量治理
2 基本流程与工作原理
这个示例演示了如何将 dubbo-go 开发的应用部署在 Istio 体系下,以实现 Envoy 对 Dubbo 服务的自动代理,示例总体架构如下图所示。
thinsdk
完成示例将需要的步骤如下:
- 创建一个 dubbo-go 应用,可直接使用( dubbo-go-samples )
- 构建容器镜像并推送到镜像仓库,可直接使用 (本示例官方镜像)
- 分别部署 dubbo-go Provider 与 dubbo-go Consumer 到 Kubernetes 并验证 Envoy 代理注入成功
- 验证 Envoy 发现服务地址、正常拦截 RPC 流量并实现负载均衡
- 优化并配置健康检查流程
3 详细步骤
3.1 环境要求
请确保本地安装如下环境,以提供容器运行时、Kubernetes集群及访问工具
- Docker
- Minikube
- Kubectl
- Istio
- Kubens(optional)
通过以下命令启动本地 Kubernetes 集群
通过 kubectl 检查集群正常运行,且 kubectl 绑定到默认本地集群
3.2 前置条件
通过以下命令为示例项目创建独立的 Namespace dubbo-demo
,同时开启 sidecar 自动注入。
3.3 部署到 Kubernetes
3.3.1 部署 Provider
以上命令创建了一个名为 server-demo
的 Service,注意这里的 service name 与项目中的 dubbo 应用名是一样的。
接着 Deployment 部署了一个 2 副本的 pod 实例,至此 Provider 启动完成。
可以通过如下命令检查启动日志。
这时 pod 中应该有一个 dubbo provider 容器实例,同时还有一个 Envoy Sidecar 容器实例。
3.3.2 部署 Consumer
部署 consumer 与 provider 是一样的,这里也保持了 K8S Service 与 Dubbo consumer application name(在 dubbogo.yml 中定义) 一致
Dubbo Consumer 服务声明中还指定了要消费的 Provider 服务(应用)名
3.4 检查 Provider 和 Consumer 正常通信
继执行 3.3 步骤后, 检查启动日志,查看 consumer 完成对 provider 服务的消费。
具体日志情况可参考 Java 版本对应 demo
3.5 Istio 流量治理
参考 Java 版本对应 demo
查看 dashboard
Istio 官网查看 如何启动 dashboard。