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-service
  http:
  - route:
    - destination:
        host: my-service
        subset: v1
      weight: 80
    - destination:
        host: my-service
        subset: v2
      weight: 20



负载均衡

  • 概述

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/913971.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手动搭建 Ghost 博客

操作场景 Ghost 是使用 Node.js 语言编写的开源博客平台&#xff0c;您可使用 Ghost 快速搭建博客&#xff0c;简化在线出版过程。本文档介绍如何在腾讯云云服务器&#xff08;CVM&#xff09;上手动搭建 Ghost 个人网站。 进行 Ghost 网站搭建&#xff0c;您需要熟悉 Linux …

MySQL之索引(3)(索引基本语法、SQL执行计划、常见索引失效原因与解决方法)

目录 一、索引基本语法。 &#xff08;1&#xff09;创建索引。 &#xff08;2&#xff09;查看索引。 &#xff08;3&#xff09;删除索引。 &#xff08;4&#xff09;给多列添加组合索引。 1、何时添加索引&#xff1f;&#xff1f; 2、组合索引。 二、SQL执行计划。 &#…

前端中的 File 和 Blob两个对象到底有什么不同

JavaScript 在处理文件、二进制数据和数据转换时&#xff0c;提供了一系列的 API 和对象&#xff0c;比如 File、Blob、FileReader、ArrayBuffer、Base64、Object URL 和 DataURL。每个概念在不同场景中都有重要作用。下面的内容我们将会详细学习每个概念及其在实际应用中的用法…

一步一步从asp.net core mvc中访问asp.net core WebApi

"从asp.net core mvc中访问asp.net core WebApi"看到这个标题是不是觉得很绕口啊&#xff0c;但的确就是要讲一讲这样的访问。前面我们介绍了微信小程序访问asp.net core webapi(感兴趣的童鞋可以看看前面的博文有关WEBAPI的搭建)&#xff0c;这里我们重点不关心如何…

【Linux系列】VNC安装ssh后,ssh无法登录

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

温度虽寒,其道犹变:OpenAI接口之温度参数设置为0,为何每次回复仍有不确定性?

问题描述 调用openai API&#xff0c;使用templature 0&#xff0c;每次返回的内容仍有一些不同 >>> client OpenAI( ... api_keyapi_key, ... base_urlapi_base) #第一次尝试 >>> response client.chat.completions.create(mo…

【软件测试】需求的概念和常见模型(瀑布、螺旋、增量、迭代)

1. 什么是需求 在企业中&#xff0c;经常会听到&#xff1a;用户需求和软件需求 用户需求&#xff1a;没用经过合理的评估&#xff0c;通常就是一句话&#xff08;开发一个五彩斑斓的黑&#xff09;软件需求&#xff1a;开发人员和测试人员执行工作的依据 1.2 软件需求 在工…

食品配送管理系统(源码+文档+部署+讲解)

食品配送管理系统是成品商业化项目&#xff0c;系统可基于源码二开。 系统概述 餐饮食品配送&#xff0c;包含配送人APP、下单APP、管理端等&#xff0c;实现订餐、配餐&#xff0c;用于食品店、中央厨房等订餐、团餐业务 本项目名称为食品配送系统&#xff0c;是针对食品配…

./bin/mindieservice_daemon启动成功

接MindIE大模型测试及报错Fatal Python error: PyThreadState_Get: the function must be called with the GIL held,-CSDN博客经过调整如下红色部分参数&#xff0c;昇腾310P3跑起来了7b模型&#xff1a; rootdev-8242526b-01f2-4a54-b89d-f6d9c57c692d-qjhpf:/home/apulis-de…

我谈维纳(Wiener)复原滤波器

Rafael Gonzalez的《数字图像处理》中&#xff0c;图像复原这章内容几乎全错。上篇谈了图像去噪&#xff0c;这篇谈图像复原。 图像复原也称为盲解卷积&#xff0c;不处理点扩散函数&#xff08;光学传递函数&#xff09;的都不是图像复原。几何校正不属于图像复原&#xff0c…

精选 Top10 开源调度工具,解锁高效工作负裁自动化

在大数据和现代 IT 环境中&#xff0c;任务调度与工作负载自动化&#xff08;WLA&#xff09;工具是优化资源利用、提升生产效率的核心驱动力。随着企业对数据分析、实时处理和多地域任务调度需求的增加&#xff0c;这些工具成为关键技术。 本文将介绍当前技术发展背景下的Top …

高效视觉方案:AR1335与i.MX8MP的完美结合

方案采用NXP i.MX8MP处理器和onsemi AR1335图像传感器&#xff0c;i.MX8MP集成四核Cortex-A53、NPU及双ISP技术。AR1335是一颗分辨率为13M的CMOS传感器。它使用了先进的BSI技术&#xff0c;提供了超高的分辨率和出色的低光性能&#xff0c;非常适合于需要高质量图像的应用。此外…

Ubuntu+ROS 机械臂拾取和放置

官方链接&#xff1a;https://github.com/skumra/baxter-pnp 1.下载并安装 SDK 依赖项 sudo apt-get install python-wstool python-rosdep 2.创建新的 catkin 工作区 mkdir -p ~/ros_ws/src cd ~/ros_ws/src 3.使用 wstool 下载 rosinstall 文件并将其复制到 Catkin 工作区…

论文阅读《Structure-from-Motion Revisited》

摘要 增量式地运动结构恢复是从无序图像集合中进行三维重建的一个普遍策略。虽然增量式地重建系统在各个方面上都取得了巨大的进步&#xff0c;但鲁棒性、准确性、完整度和尺度仍然是构建真正通用管道的关键问题。我们提出了一种新的运动结构恢复技术&#xff0c;它改进了目前…

基于Spring Boot的船运物流管理系统的设计与实现,LW+源码+讲解

摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定船运物流管理系统的总体功能模块。然后&#xff0…

威联通Docker Compose搭建NAS媒体库资源工具NAS Tools

文章目录 一、环境配置1-1 需要的配件1-2 环境安装及配置注意:获取PUID/PGID1-3 目录位置准备总结,这里我们要做5件事备注:Docker无法下载解决办法二、登录配件,进行配件连接和配置2-1 jackett设置2-2 qBittorrent设置!!!设置文件下载地址2-3 jellyfin设置2-4 NASTools设…

Spring Boot - 扩展点 EnvironmentPostProcessor源码分析及真实案例

文章目录 概述EnvironmentPostProcessor 作用EnvironmentPostProcessor 实现和注册创建类并实现接口注册到 Spring Boot常见应用场景 源码分析1. EnvironmentPostProcessor 接口定义2. 扩展点加载流程3. 加载 EnvironmentPostProcessor 实现类4. EnvironmentPostProcessor 执行…

【eNSP】企业网络架构链路聚合、数据抓包、远程连接访问实验(二)

一、实验目的 网络分段与VLAN划分&#xff1a; 通过实验了解如何将一个大网络划分为多个小的子网&#xff08;VLAN&#xff09;&#xff0c;以提高网络性能和安全性。 VLAN间路由&#xff1a; 学习如何配置VLAN间的路由&#xff0c;使不同VLAN之间能够通信。 网络设备配置&am…

Python 智取京东商品详情:代码秘籍大公开

介绍使用 Python 获取京东商品详情的背景和意义&#xff0c;强调其在数据收集和分析中的重要性。 &#xff08;一&#xff09;数据收集的需求 在当今数字化的商业环境中&#xff0c;对京东商品详情数据的需求日益增长。市场调研人员需要这些数据来了解不同产品的市场份额、价格…

[C++]——位图与布隆过滤器

目录 一、前言 二、正文 1.位图 1.1 位图概念 1.2 位图的实现 1.2.1 Set 1.2.2 ReSet 1.2.3 Text 1.3 位图的应用 2.布隆过滤器 2.1布隆过滤器的提出 2.2 布隆过滤器概念 2.3 布隆过滤器的实现 2.3.1布隆过滤器的插入 2.3.2 布隆过滤器的查找 2.3.3 布隆过滤器…