Dapr学习(4)之eShopOnDapr部署(Rancher2.63&k3s)
本篇主要讲述一下github上基于Dapr实现的商城demo在(K8s or K3s)环境中的部署实践,本文环境基于k3s&rancher2.6.3
1、eShopOnDapr源代码及概述
源代码地址:
方案体系结构如下图:

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

2、环境准备(k3s&rancher2.6.3)
关于Dapr安装见前面文章:https://www.cnblogs.com/kunwn/p/16271944.html
3、eShopOnDapr部署
下载eShopOnDapr源代码,目录中有deploy文件夹,参考k8s部署模板文件

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

方法1:命令行,进入到eShopOnDapr文件夹里,执行命令部署:
部署:sudo helm install --set hostName=eshop.local.com myeshop .
卸载:sudo helm uninstall myeshop
指定路径卸载:sudo helm uninstall myeshop /eShopOnDapr

方法2:命令行,本地chart压缩包,执行命令部署:
压缩包:sudo helm package eShopOnDapr
部署:sudo helm install eshop eshopondapr-1.0.0.tgz #注意:压缩包名称改为小写,否则会报错
卸载:sudo helm uninstall eshop eshopondapr-1.0.0.tgz

部署成功如下图:

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

我们部署的域名为:eshop.local.com myeshop,我们通过修改hosts文件,指定地址;指定地址:192.168.231.133 eshop.local.com myeshop
sudo kubectl get ingress -n eshopondapr

因为k3s默认的ingress controller使用的traefik,所以我们需要变动template模板文件都设置为traefik;我本地部署集群不能安装nginx ingress controller,不知何故,应该是有冲突的;我想如果是k3s管理的k8s集群,安装nginx ingress controller应该是没问题的;资源有限,只能traefik了,况且如果卸载了traefik,就会导致rancher ui不能使用,慎卸
通过地址访问eshop:http://eshop.local.com/ ,发现报错

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

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


部署文件模板已上传到地址: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


备注:访问本地的 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相关的镜像
Dapr学习(4)之eShopOnDapr部署(Rancher2.63&k3s)的更多相关文章
- Dapr学习(2)之Rancher2.63(k8s&k3s)环境安装Dapr
前言:前面写过一篇关于dapr入门安装的文章,self-host模式,使用docker安装的本地调试环境,并进行了测试:本篇介绍k8s方式安装dapr,此文主要基于的环境是k3s,通过rancher2 ...
- Java学习-032-JavaWeb_001 -- Tomcat环境部署及基本配置
首先到 Tomcat 官网,下载对应的版本,我本机的系统是 WIN7 64BIT 的,因而我选择的是64bit 的zip包,如下图所示:
- ActionBarSherlock学习笔记 第一篇——部署
ActionBarSherlock学习笔记 第一篇--部署 ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...
- OGG学习笔记04-OGG复制部署快速参考
OGG学习笔记04-OGG复制部署快速参考 源端:Oracle 10.2.0.5 RAC + ASM 节点1 Public IP地址:192.168.1.27 目标端:Oracle 10.2.0.5 ...
- Docker学习-Kubernetes - 集群部署
Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...
- k8s学习笔记(2)- Rancher2.x部署springboot应用及高可用、扩容
前言:上一篇介绍基于k3s环境,使用kubectl部署springboot简单项目应用,本篇介绍基于rancher2.x部署应用程序 1.上篇已部署一个springboot应用,我们可以通过ranch ...
- dapr学习:dapr介绍
该部分主要是给出学习dapr的入门,描述dapr全貌告诉你dapr是啥以及介绍dapr的主要功能与组件 该部分分为两章: 第一章:介绍dapr 第二章:调试dapr的解决方案项目 1. 介绍dapr ...
- Activiti工作流学习(一)部署对象和流程定义
一.前言 前一段时间在工作中,使用了流程审批,对api的调用非常不熟悉,都是调用别人写好的接口在界面上进行显示,基本了解了流程审批的主要步骤,现对流程审批进行学习,主要是调用api进行CRUD操作,感 ...
- ThinkPHP 学习笔记 ( 一 ) 项目部署:应用部署方式与模块分组部署方式
/** * ThinkPHP version 3.1.3 */ ThinkPHP ( 官方网站:http://www.thinkphp.cn/ ) 目前最新版本是 3.2.2,它要求 PHP 的版本高 ...
随机推荐
- unity---光照基础
发射光源类型 光照参数介绍 让摄像头看到Flare 耀斑 改变影子
- 【单片机】CH32V103C8T6 ——窗口看门狗
本章教程通过串口调试助手打印显示程序运行状态,具体现象如下: 若计数器值在上窗口值和下窗口值0X40之间的时候,进行喂狗操作,计数器重新计数,程序正常运行,串口打印显示:The program run ...
- MongoDB 各项命名规范
每日一句 Progress is the result of a bunch of failures. 进步是不断失败的成果. 概述 MongoDB涉及到的一些比如集合啥的命令规范. 集合的命名规范 ...
- 聊聊OOP中的设计原则以及访问者模式
一 设计原则 (SOLID) 1. S - 单一职责原则(Single Responsibllity Principle) 1.1 定义 一个类或者模块只负责完成一个职责(或功能), 认为&qu ...
- MySQL并行复制(MTS)原理(完整版)
目录 MySQL 5.6并行复制架构 MySQL 5.7并行复制原理 Master 组提交(group commit) 支持并行复制的GTID slave LOGICAL_CLOCK(由order c ...
- mybatis-plus对空字段 时间进行填充
package com.tanhua.sso.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; imp ...
- .NET中按预定顺序执行任务
更新记录 本文迁移自Panda666原博客,原发布时间:2021年7月1日. 一.说明 在.NET中线程可以定义按先后顺序进行执行,适合部分有先后次序的业务逻辑.Task也可以按照预定义的先后顺序执行 ...
- 【Redis】集群请求命令处理
集群请求命令处理 在Redis的命令处理函数processCommand(server.c)中有对集群节点的处理,满足以下条件时进入集群节点处理逻辑中: 启用了集群模式,通过server.cluste ...
- 聊聊Adapter模式
今天我们聊一个最简单的设计模式,适配器Adapter.跟以往一样,我们还是从一个例子出发. 一个例子 最开始的结构 假设我们有个数据分析软件,其中包含了数据收集器和数据分析器,数据收集器基于XML格式 ...
- openssl客户端编程:一个不起眼的函数导致的SSL会话失败问题
我们目前大部分使用的openssl库还是基于TLS1.2协议的1.0.2版本系列,如果要支持更高的TLS1.3协议,就必须使用openssl的1.1.1版本或3.0版本.升级openssl库有可能会导 ...