当前位置: 首页 > news >正文

K8S如何基于Istio实现全链路HTTPS

K8S如何基于Istio实现全链路HTTPS

  • Istio 简介
    • Istio 是什么?
    • 为什么选择 Istio?
  • Istio 的核心概念
    • Service Mesh(服务网格)
    • Data Plane(数据平面)
      • Sidecar Mode(边车模式)
      • Ambient Mode(环境模式)
    • Control Plane(控制平面)
  • Istio 的架构与组件
    • Envoy Proxy
    • Istiod
    • 其他组件
  • Istio 的流量管理
    • 核心流量管理功能
      • 流量路由
      • 负载均衡
      • 网关控制
      • 重试和熔断
    • Istio 资源对象
  • Istio 的安全性
    • 身份与证书管理
    • 认证
    • 授权
  • 实践:K8s 中开启全链路 HTTPS
    • 步骤一:环境准备
    • 步骤二:创建 TLS 证书和密钥
    • 步骤三:配置 Istio Gateway
    • 步骤四:配置 VirtualService
    • 步骤五:启用服务间的mTLS
    • 步骤六:测试 HTTPS 通信
  • 总结与 Q&A
  • 参考链接

Istio 简介

Istio 是什么?

  • 定义

Istio是一个开源服务网格,可以透明地分层部署在现有的分布式应用程序上。Istio强大的功能提供了一种统一且更高效的方式来保护、连接和监控服务。Istio 是实现负载均衡、服务到服务身份验证和监控的途径——只需更改很少或不需要更改服务代码。

  • 功能

简化服务间通信、增强系统的可观察性和安全性。

  1. 在集群中通过双向 TLS 加密、基于身份的强身份验证和授权实现安全的服务到服务通信

  2. HTTP、gRPC、WebSocket 和 TCP 流量的自动负载均衡

  3. 通过丰富的路由规则、重试、故障转移和故障注入对流量行为进行精细控制

  4. 支持访问控制、速率限制和配额的可插拔策略层和配置 API;

  5. 集群内所有流量的自动指标、日志和跟踪,包括集群入口和出口。

为什么选择 Istio?

  • 简单而强大

Kubernetes 具有数百种功能和数十个 API,但您只需一个命令即可开始使用它。我们以相同的方式构建了 Istio。渐进式披露意味着您可以使用一小部分 API,并且仅在需要时转动更强大的旋钮。

而其他"simple service meshes"花了数年时间赶上 Istio 第一天就拥有的功能集。

  • Envoy 代理

Istio 继承了 Envoy 的所有功能和灵活性(流量管理与控制、监控跟踪、安全性和扩展等),包括使用 Istio 团队在 Envoy 中开发的 WebAssembly 的世界级可扩展性。

  • 其他

社区强大、定期发布安全补丁等。

Istio 的核心概念

Service Mesh(服务网格)

管理微服务之间的复杂通信。

Data Plane(数据平面)

数据平面是一组代理,用于调解和控制微服务之间的所有网络通信。它们还收集和报告所有网状流量的遥测数据。

Sidecar Mode(边车模式)

将 Sidecar Proxy(如:Envoy 代理) 与在集群中启动的每个 Pod 一起部署,或者与虚拟机上运行的服务一起运行。以捕获流量并提供可观察性和控制能力。

Ambient Mode(环境模式)

使用每个节点的第 4 层代理,以及可选的每个命名空间的 Envoy 代理来实现第 7 层功能。

Ztunnel(Zero Trust Tunnel):负责所有 L4 层的网络流量,将服务之间的流量进行加密和认证。它是一种“零信任”的隧道,确保服务间流量安全。所有 Pod 会自动将流量导向 Ztunnel。

Waypoint Proxy:可选的 L7 层代理,负责服务的 HTTP 路由、负载均衡、鉴权等操作。它的使用是可选的,只有在需要 L7 功能时才会启用。

Control Plane(控制平面)

控制平面管理和配置数据平面中的代理,如 Istiod。

Istio 的架构与组件

  • 架构

Istio 会拦截所有的网络流量,并且会在每个 pod 上以 sidecar 的形式注入一个智能代理,从而能够应用一组特定的规则。让所有特性生效的代理是由**数据平面(Data Plane)组成的,而数据平面是由控制平面(Control Plane)**动态配置的。

Istio 架构演进

Envoy Proxy

执行数据平面功能,为每个微服务分发的代理。Envoy 代理是唯一与数据平面流量交互的 Istio 组件

Envoy 是如何实现重试和断路器

流程说明:

  1. 服务 A 发送请求给服务 B 的第一个实例,不过调用失败了;
  2. Envoy Sidecar 会进行重试;(1)
  3. 失败的请求返回发起调用的代理;
  4. 开启断路器并在随后的请求中调用下一个服务。(2)

Istiod

控制平面的核心组件,Istiod 提供服务发现、配置和证书管理。负责配置和管理数据平面的 Envoy。

  • Pilot

负责 Istio 数据平面的 xDS 配置管理,具体包括:

服务、配置规则发现

为 Sidecar 提供服务发现、用于智能路由的流量管理功能(例如,A/B 测试、金丝雀发布等)以及弹性功能(超时、重试、熔断器等)。通过提供通用的流量管理模型和服务发现适配器(Service Discovery Adapter),来对接不同平台的适配层。

xDS 配置下发

提供统一的 xDS API,供 Sidecar 调用。将路由规则等配置信息转换为 Sidecar 可以识别的信息,并下发给数据平面。

  • Citadel

负责安全证书的管理和发放,可以实现授权和认证等操作。

Citadel 并不是唯一的证书管理方式,Istio 当前支持 Citadel、Vault 和 Google 等多种证书管理方式,Citadel 是当前默认的证书管理方式

  • Galley

Galley 是 Istio 1.1 版本中新引入的配置管理组件,主要负责配置的验证、提取和处理等功能。其目的是将 Istio 和底层平台(如 Kubernetes)进行解耦。

在引入 Galley 之前,Istio 控制平面的各个组件需要分别对 Kubernetes 资源进行管理,包括资源的配置验证,监控资源配置变化,并针对配置变更采取相应的处理等。

其他组件

Gateway、VirtualService、DestinationRule 等。

Gateway控制外部流量进入服务网格的入口点,并负责协议、端口及 TLS 等基本设置。

VirtualService定义流量的路由规则,控制流量如何从 Gateway 或服务之间路由到特定的服务和服务版本。

DestinationRule定义路由目标的策略和配置,例如负载均衡、连接池、断路器及 mTLS 等,用于流量到达目标服务后进行更细粒度的控制。

Istio 的流量管理

核心流量管理功能

  • 概述

Istio 的流量管理模型源于和服务一起部署的 Envoy 代理。 网格内服务发送和接收的所有 data plane 流量都经由 Envoy 代理, 这让控制网格内的流量变得异常简单,而且不需要对服务做任何的更改。

流量路由

  • 概述

流量路由功能允许 Istio 根据流量属性(如请求路径、HTTP 头、Cookie 等)将流量引导至特定的服务版本。主要功能包括:

条件路由:可以基于请求内容(如路径、头信息、Cookie)或用户属性,将流量引导到不同的服务版本,实现路径分离和定制化服务体验。

权重路由:可以按比例将流量分配到多个服务版本,支持金丝雀发布、蓝绿部署等场景。

流量镜像:将一部分流量克隆到新的服务版本上,用于测试和监控,但不影响实际用户。

  • 示例

通过 VirtualService 配置 80% 的流量到 v1,20% 到 v2 版本

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: weighted-routing
spec:hosts:- my-servicehttp:- route:- destination:host: my-servicesubset: v1weight: 80- destination:host: my-servicesubset: v2weight: 20

负载均衡

  • 概述

Istio 支持如下的负载均衡模型, 可以在 DestinationRule 中为流向某个特定服务或服务子集的流量指定这些模型:

轮询 (Round Robin):将流量按顺序轮流分配给不同实例,简单高效(默认)。

最小连接数 (Least Connection):优先选择连接数最少的实例,适用于高并发环境。

随机选择 (Random):随机选择实例,避免热点服务。

权重(Weight):请求根据指定的百分比转发到池中的实例。<

相关文章:

K8S如何基于Istio实现全链路HTTPS

K8S如何基于Istio实现全链路HTTPS Istio 简介Istio 是什么?为什么选择 Istio?Istio 的核心概念Service Mesh(服务网格)Data Plane(数据平面)Sidecar Mode(边车模式)Ambient Mode(环境模式)Control Plane(控制平面)Istio 的架构与组件Envoy ProxyIstiod其他组件Istio 的流量管…...

React Query在现代前端开发中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 React Query在现代前端开发中的应用 React Query在现代前端开发中的应用 React Query在现代前端开发中的应用 引言 React Query …...

【HAProxy09】企业级反向代理HAProxy高级功能之压缩功能与后端服务器健康性监测

HAProxy 高级功能 介绍 HAProxy 高级配置及实用案例 压缩功能 对响应给客户端的报文进行压缩&#xff0c;以节省网络带宽&#xff0c;但是会占用部分CPU性能 建议在后端服务器开启压缩功能&#xff0c;而非在HAProxy上开启压缩 注意&#xff1a;默认Ubuntu的包安装nginx开…...

PostgreSQL中表的数据量很大且索引过大时怎么办

在PostgreSQL中&#xff0c;当表的数据量很大且索引过大时&#xff0c;可能会导致性能问题。以下是一些优化索引和表数据的方法&#xff1a; 1. 评估和删除不必要的索引 识别未使用的索引&#xff1a;使用pg_stat_user_indexes和pg_index系统视图来查找未被使用的索引&#x…...

【QML】QML多线程应用(WorkerScript)

1. 实现功能 QML项目中&#xff0c;点击一个按键后&#xff0c;运行一段比较耗时的程序&#xff0c;此时ui线程会卡住。如何避免ui线程卡住。 2. 单线程&#xff08;会卡住&#xff09; 2.1 界面 2.2 现象 点击delay btn后&#xff0c;执行耗时函数&#xff08;TestJs.func…...

认证鉴权框架SpringSecurity-1--概念和原理篇

1、基本概念 Spring Security 是一个强大且高度可定制的框架&#xff0c;用于构建安全的 Java 应用程序。它是 Spring 生态系统的一部分&#xff0c;提供了全面的安全解决方案&#xff0c;包括认证、授权、CSRF防护、会话管理等功能。 2、认证、授权和鉴权 &#xff08;1&am…...

计算器上的MC、MR、M+、M—、CE是什么意思?

在计算器中&#xff0c; MC键叫做memory clear&#xff0c;中文 清除存储&#xff0c;是一个清除寄存器中存储数字的指令。 MS键叫做memory save&#xff0c;中文 存入存储。 而MR键&#xff0c;则是一个读取原先存储在寄存器中的数字的指令。 M键指将当前数值存入寄存器以…...

无人机飞手执照处处需要,森林、石油管道、电力巡检等各行业都需要

无人机飞手执照在多个行业中确实具有广泛的应用需求&#xff0c;包括森林、石油管道、电力巡检等领域。以下是对这些领域无人机飞手执照需求的具体分析&#xff1a; 一、森林领域 在森林领域&#xff0c;无人机飞手执照对于进行高效、准确的森林资源管理和监测至关重要。无人机…...

计算机网络——路由选择算法

路由算法 路由的计算都是以子网为单位计算的——找到从原子网到目标子网的路径 链路状态算法...

【前端】技术演进发展简史

一、前端 1、概述 1990 年&#xff0c;第一个web浏览器诞生&#xff0c;Tim 以超文本语言 HTML 为基础在 NeXT 电脑上发明了最原始的 Web 浏览器。 1991 年&#xff0c;WWW诞生&#xff0c;这标志着前端技术的开始。 前端&#xff08;Front-end&#xff09;和后端&#xff08;…...

深入解析贪心算法及其应用实例

标题&#xff1a;深入解析贪心算法及其应用实例 一、引言 贪心算法&#xff08;Greedy Algorithm&#xff09;是一类简单、直观的算法设计策略&#xff0c;广泛应用于优化问题中。其基本思想是每一步都选择当前状态下最优的选择&#xff0c;即在每一步做出局部最优的决策&…...

电子工牌独立双通道定向拾音方案(有视频演示)

现在一些行业的客服人员在面对客户都要求使用电子工牌分别记录客服和顾客的声音,我们利用双麦克风阵列双波束拾音的方案设计了一个电子工牌方案.可以有效分别记录客服和顾客的声音. 方案思路: 我们采用了一个双麦阵列波束拾音的模块A-59,此模块可以利用2个麦克风组成阵列进行双…...

举例理解LSM-Tree,LSM-Tree和B+Tree的比较

写操作 write1&#xff1a;WAL 把操作同步到磁盘中WAL做备份&#xff08;追加写、性能极高&#xff09; write2&#xff1a;Memtable 完成WAL后将(k,v)数据写入内存中的Memtable&#xff0c;Memtable的数据结构一般是跳表或者红黑树 内存内采用这种数据结构一方面支持内存…...

React Native 全栈开发实战班 - 核心组件与导航

在 React Native 中&#xff0c;组件是构建用户界面的基本单元。React Native 提供了丰富的内置组件&#xff0c;涵盖了从基础布局到复杂交互的各种需求。本章节将详细介绍常用的内置组件&#xff0c;并重点讲解列表与滚动视图的使用。 1. 常用内置组件详解 React Native 提供…...

Leecode热题100-35.搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入:…...

密码学知识点整理二:常见的加密算法

常用的加密算法包括对称加密算法、非对称加密算法和散列算法。 对称加密算法 AES&#xff1a;高级加密标准&#xff0c;是目前使用最广泛的对称加密算法之一&#xff0c;支持多种密钥长度&#xff08;128位、192位、256位&#xff09;&#xff0c;安全性高&#xff0c;加密效率…...

Linux如何将文件或目录打成rpm包?-- rpmbuild打包详解

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…...

RabbitMQ-死信队列(golang)

1、概念 死信&#xff08;Dead Letter&#xff09;&#xff0c;字面上可以理解为未被消费者成功消费的信息&#xff0c;正常来说&#xff0c;生产者将消息放入到队列中&#xff0c;消费者从队列获取消息&#xff0c;并进行处理&#xff0c;但是由于某种原因&#xff0c;队列中的…...

爬虫开发工具与环境搭建——环境配置

第二章&#xff1a;爬虫开发工具与环境搭建 第二节&#xff1a;环境配置 在进行爬虫开发之前&#xff0c;首先需要配置好开发环境。一个良好的开发环境不仅能提高开发效率&#xff0c;还能避免因环境不一致带来的问题。以下是环境配置的详细步骤&#xff0c;涵盖了Python开发…...

15.UE5等级、经验、血条,魔法恢复和消耗制作

2-17 等级、经验、血条、魔法消耗_哔哩哔哩_bilibili 目录 1.制作UI&#xff0c;等级&#xff0c;经验&#xff0c;血条 ​2.为属性面板绑定角色真实的属性&#xff0c;实现动态更新 3.魔法的消耗和恢复 1.制作UI&#xff0c;等级&#xff0c;经验&#xff0c;血条 创建控…...

昇腾C FMA临时缓冲区因子大小接口

GetFmaTmpBufferFactorSize 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: http…...

告别编译报错!手把手教你为最新版Keil MDK安装ARM Compiler 5(保姆级图文)

嵌入式开发者的救星&#xff1a;彻底解决Keil MDK缺失ARM Compiler 5的终极方案 当你满怀信心地打开一个历史遗留的嵌入式项目&#xff0c;准备进行功能迭代时&#xff0c;Keil MDK突然弹出一个冰冷的错误窗口&#xff1a;"Error: Compiler V5.06 update 7 (build 960) no…...

Nginx、Tengine、OpenRestry的http和tcp后端健康检查【20260520-004篇】

文章目录 企业级生产环境 Nginx/Tengine/OpenResty 健康检查 完整部署+配置+压测+故障演练+验收交付文档 一、环境基线与生产规范 1. 版本选型(生产强制) 2. 生产统一参数规范(全局通用) 3. 生产前置约束 二、三大组件 生产完整配置 2.1 开源Nginx 生产配置(仅被动检查,无…...

硬件入门 + 单片机基础(第16天)ESP32 阿里云身份认证 超简版教程

一、准备工作阿里云物联网平台创建产品 设备&#xff0c;拿到三元组ProductKeyDeviceNameDeviceSecretArduino 安装库&#xff1a;AliyunIoTSDK&#xff08;阿里云官方 MQTT&#xff09;WiFiPubSubClient二、直接可用代码&#xff08;只需要改 4 处信息&#xff09;#include &…...

RVC-WebUI语音克隆:如何在5分钟内打造你的专属AI声优

RVC-WebUI语音克隆&#xff1a;如何在5分钟内打造你的专属AI声优 【免费下载链接】rvc-webui liujing04/Retrieval-based-Voice-Conversion-WebUI reconstruction project 项目地址: https://gitcode.com/gh_mirrors/rv/rvc-webui 想象一下&#xff0c;用你自己的声音为…...

一道2厘米的伤口,照见了人间的双重标准

一道2厘米的伤口&#xff0c;照见了人间的双重标准简介昨天清晨六点&#xff0c;天色刚泛白。我照例牵着家里那只黑白分明的边牧出门。它在晨光里撒腿跑开的姿势依旧敏捷而优雅——这个品种天生属于旷野&#xff0c;即使被圈养在城市的钢筋水泥里&#xff0c;那股源自苏格兰边境…...

别等 SQL 跑慢了再靠猜,NineData 怎样把问题一步步看清

SQL 变慢最怕的不是慢本身&#xff0c;而是大家一开始只能靠猜。明明语法没报错&#xff0c;业务一上线却卡住了&#xff1b;多了一个函数、少了一个索引&#xff0c;或者关联顺序不合适&#xff0c;就可能让数据库白白扫描一大堆数据。在很多团队里&#xff0c;这类问题最早往…...

把ESP-01S变成智能开关:51单片机+ESP8266的简易物联网项目实战

从零打造智能灯控系统&#xff1a;51单片机ESP-01S物联网实战指南 项目背景与核心思路 在智能家居领域&#xff0c;远程控制灯光是最基础却最实用的功能之一。传统方案往往需要购买成套的智能家居设备&#xff0c;成本高昂且灵活性不足。而借助51单片机和ESP-01S WiFi模块的组合…...

39. UE5 GAS RPG:利用Motion Warping实现技能释放时的智能角色转向

1. Motion Warping插件基础与启用 Motion Warping是UE5官方提供的一个实验性插件&#xff0c;专门用于解决角色动画过程中的动态转向问题。这个插件的工作原理是在动画播放过程中插入一个"变形窗口"&#xff0c;允许开发者指定某个时间段内角色的朝向或位置变化。我刚…...

番茄小说下载器终极指南:如何轻松下载EPUB、TXT和有声小说

番茄小说下载器终极指南&#xff1a;如何轻松下载EPUB、TXT和有声小说 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否曾经在番茄小说上找到一部精彩的作品&#xff0c;…...