在上一篇文章中,我们从头创建了一个 Dubbo 应用并详细介绍了它的代码结构,接下来,我们将学习部署这个 Dubbo 应用。
本文将以 Kubernetes 集群作为基础环境来讲解 Dubbo 应用的部署,部署架构如下图所示。
Dubbo 社区提供了工具和解决方案来简化整个 Kubernetes 环境的打包与部署过程,所以开始前我们需要先安装相关工具。
curl -L https://raw.githubusercontent.com/apache/dubbo-kubernetes/master/release/downloadDubbo.sh | sh -
cd dubbo-$version
export PATH=$PWD/bin:$PATH
dubboctl 安装完成之后,接下来通过以下命令初始化微服务部署环境
dubboctl manifest install --profile=demo
作为演示目的,以上命令会一键安装 Zookeeper、Dubbo Control Plane、Prometheus、Grafana、Zipkin、Ingress 等组件,关于 --profile=demo
更多解释及配置请参见文档说明。
检查环境准备就绪
kubectl get services -n dubbo-system
最后,为目标 kubernetes namespace 开启自动注入模式,以便应用部署后能够自动连接到刚刚安装的 Zookeeper 注册中心等组件。
kubectl label namespace dubbo-demo dubbo-injection=enabled --overwrite
接下来我们为之前创建的应用打包镜像(请确保本地安装有 Docker 环境并且已经启动 Docker 进程),在应用根目录分别运行以下命令:
dubboctl build --dockerfile=./Dockerfile
build
命令会将源码打包为镜像,并推送到远端仓库,取决于网络情况,可能需要一定时间等待命令执行完成。
接下来,我们需要生成部署应用的 Kubernetes 资源文件,运行以下命令:
dubboctl deploy
deploy
命令会使用刚刚 build
打包的镜像生成 Kubernetes 资源清单。命令执行成功后,在当前目录看到生成的 kube.yaml
文件,其中包括 deployment、service 等 kubernetes 资源定义。
本地构建可能会花费比较长时间,如您本地构建遇到问题,也可以使用以下命令跳过 build
过程。
dubboctl deploy --image=apache/dubbo-demo:quickstart_0.1
# `--image` 指定使用官方预先准备好的示例镜像
接下来,将应用部署到 Kubernetes 环境。
kubectl apply -f ./kube.yaml
检查部署状态
kubectl get services -n dubbo-demo
部署成功后,可以通过以下方式检查应用状态。
如果使用的本地 Kubernetes 集群,请使用以下方式访问应用验证部署状态:
dubboctl dashboard admin
以上命令会自动打开 admin 控制台,如果在您的环境下没有打开,请使用浏览器访问以下地址:
http://localhost:38080/admin
通过 triple 协议,可以继续测试 Dubbo 服务,执行以下命令进行端口映射:
kubectl port-forward <pod-name> 50051:50051
通过 curl 访问服务:
curl \
--header "Content-Type: application/json" \
--data '["Dubbo"]' \
http://localhost:50051/com.example.demo.dubbo.api.DemoService/sayHello/
对于云上托管的哦 Kubernetes 集群,可以使用以下方式验证,这里以阿里云 ACK 集群为例:
ACK ingerss-controller 的访问方式……