1. 前言

上篇文章我们讲了dapr,dapr作为开发阶段使用的组件,需要开发人员知道怎么使用,到此篇文章之前,开发人员的开发任务已经完成了,剩下的就是一些运维相关的事情了。假设我们的服务已经开发完成,也已经完成了镜像的构建和部署文件的编写,那我们就可以领略下服务网格的魅力了。

2. 什么是服务网格(Service Mesh)

服务网格为工作负荷提供流量管理、复原能力、策略、安全性、强标识和可观测性等功能。 应用程序与这些操作功能相分离,服务网格将这些功能移出应用层并移到基础结构层。

对于什么是服务网格大家可以根据网上的一些资料和我给的文章链接进行学习阅读。这里就不展开了。

关于服务网格

什么是服务网格?

全方位解读服务网格(Service Mesh)的背景和概念

3. 不得不说的Istio

服务网格作为服务间通信的基础设施层有很多种实现,市面上比较流行的有以下一些。

Linkerd

Istio

Open Service Mesh

作为服务网格的火热程度最高的Isito,我们肯定要着重讲讲了。

Istio 核心特性

我个人在实际中主要用到了Isito的流量管理和安全。

架构

Istio 服务网格从逻辑上分为数据平面和控制平面。

  • 数据平面 由一组智能代理(Envoy)组成,被部署为 Sidecar。这些代理负责协调和控制微服务之间的所有网络通信。它们还收集和报告所有网格流量的遥测数据。
  • 控制平面 管理并配置代理来进行流量路由。

下图展示了组成每个平面的不同组件:

组件

以下各节概述了 Istio 的每个核心组件。

Envoy

Istio 使用 Envoy 代理的扩展版本。Envoy 是用 C++ 开发的高性能代理,用于协调服务网格中所有服务的入站和出站流量。Envoy 代理是唯一与数据平面流量交互的 Istio 组件。

Envoy 代理被部署为服务的 Sidecar,在逻辑上为服务增加了 Envoy 的许多内置特性,例如:

  • 动态服务发现
  • 负载均衡
  • TLS 终端
  • HTTP/2 与 gRPC 代理
  • 熔断器
  • 健康检查
  • 基于百分比流量分割的分阶段发布
  • 故障注入
  • 丰富的指标

这种 Sidecar 部署允许 Istio 可以执行策略决策,并提取丰富的遥测数据,接着将这些数据发送到监视系统以提供有关整个网格行为的信息。

Sidecar 代理模型还允许您向现有的部署添加 Istio 功能,而不需要重新设计架构或重写代码。

由 Envoy 代理启用的一些 Istio 的功能和任务包括:

  • 流量控制功能:通过丰富的 HTTP、gRPC、WebSocket 和 TCP 流量路由规则来执行细粒度的流量控制。
  • 网络弹性特性:重试设置、故障转移、熔断器和故障注入。
  • 安全性和身份认证特性:执行安全性策略,并强制实行通过配置 API 定义的访问控制和速率限制。
  • 基于 WebAssembly 的可插拔扩展模型,允许通过自定义策略执行和生成网格流量的遥测。

Istiod

Istiod 提供服务发现、配置和证书管理。

Istiod 将控制流量行为的高级路由规则转换为 Envoy 特定的配置,并在运行时将其传播给 Sidecar。Pilot 提取了特定平台的服务发现机制,并将其综合为一种标准格式,任何符合 Envoy API 的 Sidecar 都可以使用。

Istio 可以支持发现多种环境,如 Kubernetes 或 VM。

您可以使用 Istio 流量管理 API 让 Istiod 重新构造 Envoy 的配置,以便对服务网格中的流量进行更精细的控制。

Istiod 安全通过内置的身份和凭证管理,实现了强大的服务对服务和终端用户认证。您可以使用 Istio 来升级服务网格中未加密的流量。使用 Istio,运营商可以基于服务身份而不是相对不稳定的第 3 层或第 4 层网络标识符来执行策略。此外,您可以使用 Istio 的授权功能控制谁可以访问您的服务。

Istiod 充当证书授权(CA),并生成证书以允许在数据平面中进行安全的 mTLS 通信。

4. Isito的实际应用

既然讲到了这么多的Isito,我们肯定也要说说Istio结合Dapr做些使用场景的介绍。

我以eShop on Dapr的项目为例,讲下改进的地方。

上图为官方仓库里的架构图。

下图是我基于Isito和Dapr改进后的架构图。

  • K8s的Ingress分发简单请求
  • 前端调用认证服务获取凭证
  • Istio的Envoy边车可以做到基于pod标签拦截请求并提供Jwt token认证中间件,认证通过可以将token内容转发到后端服务,结合丰富的授权策略,可以将认证授权这部分代码从项目中抽离出来。
  • 请求到达服务,通过Dapr提供的能力就可以做服务调用或者状态读写等操作。

这只是Istio的一部分能力,Istio还可以通过一些配置进行蓝绿部署,金丝雀发布,流量镜像等功能,这个可以参考官方的Bookinfo 应用教程进行学习。

云原生的学习,大家可以参考以下网站学习。

从.net开发做到云原生运维(七)——服务网格Istio的更多相关文章

  1. 从.net开发做到云原生运维(零)——序

    1. 为什么要写这个系列的文章 大家看到标题的时候肯定会感觉到困惑,这个标题里的两件事物好像并不是很搭.说到.net开发大家一般都会想到asp.net做网站,或者是wpf和winform这类桌面开发, ...

  2. 从.net开发做到云原生运维(八)——DevOps实践

    1. DevOps的一些介绍 DevOps(Development和Operations的组合词)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA)部门之间的 ...

  3. 从.net开发做到云原生运维(二)——.net core生态

    1. 新的开始从.net 6.0开始 .net 6.0作为一个长期支持版,具有里程碑的意义.从.net5.0将.net framework和.net core合并以后,在.net5.0的功能上再次完善 ...

  4. 直播报名|资深云原生架构师分享服务网格在腾讯 IT 业务的落地实践

    云原生在近几年的发展越来越火热,作为云上最佳实践而生的设计理念,也有了越来越多的实践案例,而一个个云原生案例的背后,是无声的巨大变革. 腾讯云主办首个云原生百科知识直播节目--<云原生正发声&g ...

  5. 华为刘腾:华为终端云Cassandra运维实践分享

    点击此处观看完整活动视频 各位线上的嘉宾朋友大家好,我是来自华为消费者BG云服务部的刘腾,我今天给大家分享的主题是华为终端云Cassandra运维实践.和前面王峰老师提到的Cassandra在360中 ...

  6. 从On-Premise本地到On-Cloud云上运维的演进

    摘要: 从用户的声音中,我们听到用户对稳定.弹性.透明的诉求,我们也在不断升级ECS的运维能力和体验,助力用户建立主动运维体系,赋能业务永续运行.为了让大家更好的了解和用好ECS弹性计算服务,从本期开 ...

  7. Linux云自动化运维第三课

    Linux云自动化运维第三课 一.正则表达式 1.匹配符 * ###匹配0到任意字符 ? ###匹配单个字符 [[:alpha:]] ###匹配单个字母 [[:lower:]] ###匹配单个小写字母 ...

  8. Linux云自动化运维第四课

    Linux云自动化运维第四课 一.vim 1.vim光标移动 1)在命令模式下 :数字  ###移动到指定的行 G  ###文件最后一行 gg  ###文件第一行 2)在插入模式下 i  ###光标所 ...

  9. Linux云自动化运维第五课

    Linux云自动化运维第五课 一.进程定义 进程就是cpu未完成的工作 二.ps命令 ps a ###关于当前环境的所有进程 x ###与当前环境无关的所有进程 f ###显示进程从属关系 e ### ...

  10. 微服务平台(Micro Service Platform : MSP)旨在提供一个集开发、测试、运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效。

    微服务平台(Micro Service Platform : MSP)旨在提供一个集开发.测试.运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效. MSP采用业界 ...

随机推荐

  1. [SWPUCTF 2021 新生赛]gift_F12

    首先我们打开环境会发现花里胡哨的,而题目中有提示:F12,所以我们直接F12查看源码 然后ctrl+f信息检索flag.直接找到flag提交 但要注意提交格式为NSSCTF{}

  2. linux系统下,安装redis教程,以redis 6.2.6为例

    1.下载安装包 手动下载:进入官网选择下载版本https://download.redis.io/releases/ 命令下载: cd /usr/local wget http://download. ...

  3. 让Easysearch运行在LoongArch(3C5000L)上

    简介 在上一次,我介绍了在国产操作系统 Kylin V10 (Lance)-aarch64 上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen,小伙伴们可查 ...

  4. 项目管理--PMBOK 读书笔记(6)【项目进度管理】

    1.紧前关系绘图法(PDM): 2.三点估算(PERT): 最可能时间(Tm).最乐观时间(To)和 最悲观时间(Tp): 三角分布: 平均估算值=(Tm+To+Tp)/3: 3.估算方法对比及应用场 ...

  5. 增补博客 第二十三篇 python 对比Python中的列表、元组、字典、集合、字符串等之间异同

    1. 列表(List): - 异同:列表是可变(Mutable)的有序容器,使用方括号 [] 定义,可以存储任意类型的元素.可以通过索引访问和修改列表中的元素.列表支持切片操作和列表推导式. - 相同 ...

  6. JavaScript 中判断 {}是空对象

    Javascript 中判断空对象 简介:在 JavaScript 判断字符串是否是一个空字符串 可以 !"" 返回 true 来判断, 要是判断 {} 是否是空对象,也用 !{} ...

  7. JSONObject应用Json字符串和Object对象之间的转换,Map封装数据思路

    JSONObject应用Json字符串和Object对象之间的转换,Map封装数据思路 package com.example.core.mydemo.json5; import com.alibab ...

  8. MySQL查询关于区分字母大小写问题

    前段时间在工作中测试提出了一个BUG,让我把根据ID查询区分大小写的功能去掉,大小写都随便查,然后我在SQL的位置加上了UPPER(id) = UPPER(#{id})的写法,而同事知道这个问题后的反 ...

  9. 实验7.Vlan划分实验

    # 实验7.Vlan划分实验 本实验用于划分Vlan,并对划分的Vlan做隔离测试. 实验组 拓扑 Vlan隔离配置 在配置vlan前,测试PC1234互通 具体配置vlan 这里给出其中一台交换机的 ...

  10. Hbase第二课:Hbase架构与基础命令

    目录 HBase架构与基础命令 一.了解HBase 1.1 HBase概述 1.2 HBase处理数据 1.3 HBase与HDFS 二.HBase相关概念 2.1 分布式数据库 2.2 列式存储 2 ...