6

Dapr学习(4)之eShopOnDapr部署(Rancher2.63&k3s) - xjk27400861

 1 year ago
source link: https://www.cnblogs.com/kunwn/p/16564295.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本篇主要讲述一下github上基于Dapr实现的商城demo在(K8s or K3s)环境中的部署实践,本文环境基于k3s&rancher2.6.3

1、eShopOnDapr源代码及概述

  • 源代码地址:

    https://github.com/dotnet-architecture/eShopOnDapr
  • 方案体系结构如下图:

    image
      1. 前后端分离项目,前端Blazor项目,系统入口,发送api请求到apigateway
      2. API 网关从前端客户端抽象出后端核心微服务,为后端调用总入口。 它是使用 Envoy(一个高性能的开放源代码服务代理)实现的。 Envoy 将传入请求路由到后端微服务。 大多数请求都是简单的 CRUD 操作(例如,从目录中获取品牌列表),通过直接调用后端微服务进行处理。通过转换uri请求地址,通过Dapr的边车就行通信
      3. 核心后端微服务:购物车,商品管理,订单管理,支付管理
      4. 事件总线包装 Dapr 发布/订阅组件。 它实现了跨微服务异步发布/订阅消息传送。
    
  • ApiGateway Envoy重写uri截图如下:

    image

2、环境准备(k3s&rancher2.6.3)

关于Dapr安装见前面文章:https://www.cnblogs.com/kunwn/p/16271944.html

3、eShopOnDapr部署

  • 下载eShopOnDapr源代码,目录中有deploy文件夹,参考k8s部署模板文件

    image
  • 拷贝文件夹到k3s任意节点上(安装有helm)

    image

  • 方法1:命令行,进入到eShopOnDapr文件夹里,执行命令部署:

      部署:sudo helm install --set hostName=eshop.local.com myeshop .
      卸载:sudo helm uninstall myeshop
      指定路径卸载:sudo helm uninstall myeshop /eShopOnDapr
    

    image

  • 方法2:命令行,本地chart压缩包,执行命令部署:

      压缩包:sudo helm package eShopOnDapr
      部署:sudo helm install eshop eshopondapr-1.0.0.tgz #注意:压缩包名称改为小写,否则会报错
      卸载:sudo helm uninstall eshop eshopondapr-1.0.0.tgz
    
    image
  • 部署成功如下图:

    image
  • 通过rancher界面查看部署状态,等待一段时间,看所有的pod都已创建完毕

    image
  • 我们部署的域名为:eshop.local.com myeshop,我们通过修改hosts文件,指定地址;指定地址:192.168.231.133 eshop.local.com myeshop

      sudo kubectl get ingress -n eshopondapr
    
    image
  • 因为k3s默认的ingress controller使用的traefik,所以我们需要变动template模板文件都设置为traefik;我本地部署集群不能安装nginx ingress controller,不知何故,应该是有冲突的;我想如果是k3s管理的k8s集群,安装nginx ingress controller应该是没问题的;资源有限,只能traefik了,况且如果卸载了traefik,就会导致rancher ui不能使用,慎卸

  • 通过地址访问eshop:http://eshop.local.com/ ,发现报错

    image
  • 点击LOGIN,可以跳到登录界面,且可以登录;证明identity服务是可以访问的

    image
  • 只有通过apigateway调用后端各个微服务的api是报错的,一直没有解决,有traefik配置经验的大佬可以给与指点;如果通过nodeport暴露catalog api服务,是可以调通的,应该是还gateway的配置上出了问题

    image
    image

  • 部署文件模板已上传到地址:https://gitee.com/xujk-27400861/eshopondapr-k3s-template

4、traefik dashboard配置

  • port-forward 直接端口映射到本地访问,生产环境推荐

      sudo kubectl port-forward $(sudo kubectl get pods --selector "app.kubernetes.io/name=traefik" --output=name -n kube-system) 9000:9000 -n kube-system
    

    image

    image

    备注:访问本地的 localhost:9000/dashboard/ 即可,dashboard 后边的 /一定要有,否则会报 404;且只能虚拟机内部(k3s节点)查看,不能使用IP地址访问

5、K8s删除无用镜像

sudo crictl images | awk '{print $3}' | xargs crictl rmi #参考命令
sudo crictl images | grep 'eshopdapr' | awk '{print $3}' | xargs sudo crictl rmi # 删除eshopdapr相关的镜像

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK