腾讯云容器服务(Tencent Kubernetes Engine,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务。腾讯云容器服务完全兼容原生 kubernetes API ,扩展了腾讯云的云硬盘、负载均衡等 kubernetes 插件,为容器化的应用提供高效部署、资源调度、服务发现和动态伸缩等一系列完整功能,解决用户开发、测试及运维过程的环境一致性问题,提高了大规模容器集群管理的便捷性,帮助用户降低成本,提高效率。容器服务提供免费使用,涉及的其他云产品另外单独计费。

对于中小规模的应用来说采用TKE的 弹性集群是比较经济的一个方案,弹性容器服务(Elastic Kubernetes Service,EKS)是腾讯云容器服务推出的无须用户购买节点即可部署工作负载的服务模式。弹性容器服务 EKS 完全兼容原生 Kubernetes,支持使用原生方式购买及管理资源,按照容器真实使用的资源量计费。弹性容器服务 EKS 还扩展支持腾讯云的存储及网络等产品,同时确保用户容器的安全隔离,开箱即用。

这篇文章主要向你介绍如何在EKS上面部署基于Dapr的应用程序,我们选择了Dapr 参考应用程序eshopondapr 作为示例。

几年前,Microsoft 与技术领先的社区专家合作发布了一本受欢迎的指导书,标题为适用于容器化 .NET 应用程序的 .NET 微服务。这本书深入探讨了构建分散式应用程序的原则、模式和最佳做法。 其中包括一个功能齐全的微服务参考应用程序,展示了体系结构概念。 名为 eShopOnContainers 的应用程序托管了一个电子商务店面,该店面销售各种商品,包括服装和咖啡杯。 该应用程序在 .NET 中构建,是跨平台的,可以在 Linux 或 Windows 容器中运行。随着Dapr的发布,eShop 的一个更新版本。 它就是 eShopOnDapr, 同时还配套了一本电子书:面向 .NET 开发人员的 Dapr。 此更新通过集成 Dapr 构建基块来改进早期 eShopOnContainers 应用程序。 下图 显示了新的解决方案体系结构:

虽然 eShopOnDapr 侧重于 Dapr,但体系结构也进行了简化。

  1. Blazor WebAssembly 上运行的单页应用程序将用户请求发送到 API 网关。

  2. API 网关从前端客户端抽象出后端核心微服务。 它是使用 Envoy(一个高性能的开放源代码服务代理)实现的。 Envoy 将传入请求路由到后端微服务。 大多数请求都是简单的 CRUD 操作(例如,从目录中获取品牌列表),通过直接调用后端微服务进行处理。

  3. 其他请求在逻辑上更加复杂,需要多个微服务调用协同工作。 对于这些情况,eShopOnDapr 实现了聚合器微服务,用于在完成操作所需的那些微服务之间编排工作流。

  4. 核心后端微服务实现了电子商务商店所需的功能。 每个微服务都是独立存在的。 按照广泛接受的域分解模式,每个微服务都隔离一个特定的业务功能:

    • 购物篮服务管理客户的购物篮体验。
    • 目录服务管理可供销售的产品项。
    • 标识服务管理身份验证和标识。
    • 订单处理服务处理下达订单和管理订单的所有方面。
    • 付款服务处理客户的付款。
  5. 每个微服务都遵循最佳做法,维护其自己的持久性存储。 应用程序不共享单个数据存储。

  6. 最后,事件总线包装 Dapr 发布/订阅组件。 它实现了跨微服务异步发布/订阅消息传送。 开发人员可以插入任何 Dapr 支持的消息代理组件。

接下来我们参照  Run eShopOnDapr on an external Kubernetes cluster 在EKS 上部署eshopondapr 。当然您可以在任何外部 Kubernetes 集群上运行 eShopOnDapr,例如 Azure Kubernetes Service 或 腾讯云 EKS。以下步骤介绍如何将 eShopOnDapr 部署到 腾讯云EKS 集群:

1、创建一个EKS 集群,这部分可以参考腾讯云的文档 创建EKS 集群

2、配置以连接到新集群,这部分可以参考腾讯云的文档 连接EKS 集群

3、安装NGINX入口控制器,这部分可以参考腾讯云的文档 Nginx 类型 Ingress。 这里要注意的一点是 tke官方文档,使用annotation的方式,在metadata.annotation中声明kubernetes.io/ingress.class: "nginx",来指定您所使用的nginx ingress实例。ehsopondapr的 helm 包里面声明ingress实例,是使用的spec.ingressClassName这个字段进行的,这里后面要进行调整。

4、开通EKS 集群访问外网。默认的弹性容器服务(Elastic Kubernetes Service,EKS)访问不了外网,支持通过配置 NAT 网关路由表 来实现集群内服务访问外网,具体文档参见 通过 NAT 网关访问外网。如果没有开通访问外网,在EKS 中拉取不了mcr.microsoft.com/azure-sql-edge:latest。 这个repo 不是 docker hub,腾讯云的TKE 默认对docker hub做了内部加速。

5、将 Dapr 部署到集群(有关详细信息,请参阅将 Dapr 安装到 Kubernetes 集群中操作方法):

6、获取集群负载均衡器的公共终端节点的 IP 地址

kubectl get services nginx-ingress-nginx-controller -n kube-system -o=jsonpath='{.status.loadBalancer.ingress[0].ip}'

7、配置 DNS  :eshopondapr.weyhd.com ,使用该别名来访问 Kubernetes 集群, 这一步可以配置你自己的域名 。

8、eShopOnDapr 包括一个 Helm 图表,以便轻松部署到 Kubernetes 集群。这里我们要修改一下 Ingress 的特性声明:

保存后,到该文件夹deploy\k8s\helm下 运行以下命令:


helm install --set hostName=eshopondapr.weyhd.com myeshop .

过了一会儿,您应该能够在 http://eshopondapr.weyhd.com/status 访问eShopOnDapr健康UI。

当所有微服务都正常运行时,可以导航到 http://eshopondapr.weyhd.com/ 以查看 eShopOnDapr UI。

腾讯云EKS 上部署 eshopondapr的更多相关文章

  1. PHP--腾讯云服务器上部署LNMP环境

    本文参考 云服务器上部署Laravel的实例教程 腾讯云 创建 Laravel5.4 项目 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PH ...

  2. 怎样将本地web数据库项目部署到腾讯云服务器上?

    怎样将本地web数据库项目 部署到腾讯云服务器上? 1.本地计算机的工作: 1.1用eclipse或者myeclipse做好一个web项目,可以只做一个数据库的增删改查,本地部署到Tomcat服务器, ...

  3. 怎样将本地web项目部署到腾讯云服务器上?

    怎样将本地web项目部署到腾讯云服务器上? 1.本地计算机的工作: (1).用eclipse新建一个web项目,然后在webcontent下新建一个index.html,然后在本地部署到Tomcat服 ...

  4. unigui在阿里云服务器上部署

    unigui在阿里云服务器上部署 客户租用了阿里云WINDOWS2008服务器,部署UNIGUI发现死活不行,WINDOWS2008自带的IE9浏览器打开URL,卡死在loading...... 我远 ...

  5. 在腾讯云服务器上体验Docker

    版权声明:本文由姚俊刚原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/85 来源:腾云阁 https://www.qclou ...

  6. Navicat连接腾讯云服务器上的数据库

    下面介绍Navicat连接腾讯云服务器上的数据库的两种方法: 方法一:[不需要修改相关远程客户端连接权限] 点击安装好的桌面navicat图标,进入后如下图: 连接方法:ssh中输入自己服务器的外网i ...

  7. 将禅道部署到腾讯云linux 上

    部署环境 :linux(腾讯云),用到了 xshell   FileZilla 使用禅道集成环境lampp直接部署 1.首先下载 lampp j集成环境包.https://sourceforge.ne ...

  8. 在腾讯云服务器上实现java web项目部署

    ----------------------------博主讲废话 几天前搞了一台体验七天的腾讯云服务器.之前已实现在新浪云下java web项目的部署,不需要自己搭建环境,比较简单,而且自 己也偷懒 ...

  9. 腾讯云centos 7部署 dotnetcore+Angular2 实践

    版权声明:本文由屈政斌原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/239 来源:腾云阁 https://www.qclo ...

随机推荐

  1. vue-cli4 vue-config.js配置及其备注

    // vue.config.js const path = require('path'); const CompressionWebpackPlugin = require("compre ...

  2. C#使用进程调用bash,不断往bash内插入命令并执行

    呃呃呃,遇到了一个非常恶心得问题,现在就是,有几十万条数据需要当作参数调用python脚本 一次一次输入命令过去缓慢,经过了多层考虑决定使用进程来解决(不知道线程怎么开启bash得) 原理非常简单,类 ...

  3. stm32F103RCT6的DMA使用经历

    ​ DMA可以直接传输数据,减少了CPU的负担,是个很好的功能,但是用的时候难免会一头雾水.这次做个小小的串口收发程序就碰到了许多问题. 之前没有注意,选择了DMA的circular模式,然后奇怪的事 ...

  4. 修改本地仓库Maven,设置镜像

    修改本地仓库的位置: 先建立 文件路径: 进入文件夹目录: 就可以看到一个配置文件夹 就在里面修改本地仓库的路径,设置阿里云镜像 添加本地阿里云镜像: 如下图: 内容如下: <mirror> ...

  5. [题解][ARC089D] ColoringBalls

    题目大意 有 \(n\) 个白色的小球排成一排,有一个长为 \(k\) 的字符串 \(S\).接下来进行 \(k\) 次操作. 第 \(i\) 个操作,选择一段连续的小球(可以为空),若 \(S\) ...

  6. Java多线程——实现

    "java多线程的实现--几乎都要和java.lang.Thread打交道" 方式一:继承于Thread类 1.创建一个继承于Thread类的子类 2.重写Thread类的run( ...

  7. Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询

    Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...

  8. 了解mybatis

    什么是mybatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作.MyBati ...

  9. Windows与Linux如何实现相互远程桌面连接?

    今天跟大家一起讨论下,利用Windows自带的远程桌面连接工具,实现远程Linux桌面及在Linux系统中远程Windows桌面 一.Windows远程Linux桌面 1)本次实验以CentOS 7. ...

  10. 详解Docker中Image、Container与 Volume 的迁移

    开源Linux 长按二维码加关注~ 上一篇:Linux Used内存到底哪里去了? 已经部署的容器化服务,也不是不需要维护的.而且,由于生产环境往往有这样那样的严格要求,往往需要些非常规操作.Imag ...