前言:前面写过一篇关于dapr入门安装的文章,self-host模式,使用docker安装的本地调试环境,并进行了测试;本篇介绍k8s方式安装dapr,此文主要基于的环境是k3s,通过rancher2.6.3版管理工具
- Rancher 添加商店helm源:添加 Dapr 源;https://dapr.github.io/helm-charts/ 最新的安装源,添加到商店
- 进入应用商店,搜索dapr
- 安装最新版本,1.7.2版
- 由于我们安装了1.6.1版本,我们选择升级版本
- 安装成功后,我们可以在Rancher管理界面看到几个dapr组件
- 我们这里使用官网推荐的redis作为状态存储
-
使用Rancher创建一个单实例的redis容器;Dapr使用redis存储,要求redis版本>5;镜像:index.docker.io/library/redis:6.2.6
设置密码命令:redis-server --requirepass 123456
环境变量也可以设置成空密码访问:ALLOW_EMPTY_PASSWORD=yes
- 去github官网下载demo-1.7版本代码:https://github.com/dapr/quickstarts/tree/release-1.7/tutorials/hello-kubernetes
-
创建一个daprdemo的命名空间,部署nodejs服务
命令:sudo kubectl apply -f node.yaml -n daprdemo 查看部署状态:sudo kubectl rollout status deploy/nodeapp -n daprdemo
- 修改node.yaml文件,因为80端口已被占用,会导致部署问题,把80端口改为3000端口,与nodeapp释放端口一致
- nodeapp服务部署完毕后,可以通过rancher查看或者编辑对外访问端口,然后可通过k8s任一节点ip+端口访问nodeapp服务
-
我们也可以通过命令指定对外访问的端口,这样我就可以通过30018端口访问nodeapp:
kubectl port-forward service/nodeapp 30018:3000
- 我们通过浏览器,可以访问nodeapp服务,返回dapr的端口信息
- 我们在daprdemo的命名空间下,创建一个state组件,供nodeapp服务使用;要保证state组件与nodeapp服务同属于同一命名空间下,否则nodeapp服务是无法访问到state组件的
-
输入命令,构建state组件
sudo kubectl apply -f redis-state.yaml -n daprdemo
- 使用apifox工具,请求nodeapp服务,新建一个订单
- 获取订单
- 找到Dapr dashbord服务信息
- 点击进入dashbord界面
-
输入命令部署app,并查看部署状态
kubectl apply -f python.yaml -n daprdemo kubectl rollout status deploy/pythonapp -n daprdemo
-
查看nodeapp的日志
kubectl logs --selector=app=node -c node --tail=-1 -n daprdemo
- 获取订单号
kubectl delete -f . -n daprdemo
8.Rancher查看Dapr组件信息
- 在Rancher管理界面的“更多资源”节点下,dapr.io节点下查看