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

等保.三级要求下Redis 安全测评应该怎么做?低

在之前的文章中我们花了大量的篇幅从记录后端pod真实ip开始说起然后引入envoy再解决了各种各样的需求配置自动重载、流量劫持、sidecar自动注入到envoy的各种能力熔断、流控、分流、透明代理、可观测性等等已经可以支撑起一个完整的服务治理框架了而今天介绍的istio正是前面提到的这些所有功能的集大成者从本文开始我们将详细介绍istio并且与之前手搓的功能做一个详细的对比为大家以后选择服务治理的某个功能提供参考istio架构┌──────────────┐│ istiod │ ← 控制面│ (PilotCA) │└──────┬───────┘│ xDS (gRPC / TLS)│┌────────────┐ │ ┌────────────┐│ Envoy │?───┼───?│ Envoy │ ← 数据面│ (Sidecar) │ │ (Sidecar) │└─────▲──────┘ └─────▲──────┘│ iptables ││ │App Pod App Pod数据面就是之前一直在研究的envoy包括4/7代理、熔断、限流、可观测性等等envoy就是执行由控制面下发的配置控制面istiod主要的职责将配置下发到每一个envoy去。由于istio中配置以crd的形式成为了k8s的资源所以要不断的监听k8s apiserver将资源的变化翻译成envoy看得懂的配置并且下发到envoy去至于其余istio的资源我们后面详细介绍istio安装不说废话先把istio安装上去再说首先准备好k8s集群其次下载istio这一步有可能需要上网curl -L https://istio.io/downloadIstio | sh -cd istio-*sudo ln -s $PWD/istioctl /usr/local/bin/istioctl验证兼容性istioctl x precheck开始安装istioctl install --set profiledefault -y由于镜像仓库没法直接使用所以需要一些特殊的方法具体可以看这篇文章 快速拉取docker镜像需要的镜像有docker.io/istio/pilot:1.28.2docker.io/istio/proxyv2:1.28.2安装完成? kubectl -n istio-system get podNAME READY STATUS RESTARTS AGEistio-ingressgateway-865c448856-qs8s2 1/1 Running 0 8sistiod-86c75775bb-j7qbg 1/1 Running 0 12s安装完成要从哪儿开始呢istio的自动注入kubectl label namespace default istio-injectionenabled同之前envoy一样给namespace打上标签之后重启服务即可kubectl rollout restart deploy nginx-test重启之后sidecar已经注入进去了我们来观察一下istio注入到底做了什么事情先describe看看eventsEvents:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 8s default-scheduler Successfully assigned default/nginx-test-6f855b9bb9-9phsv to wilsonNormal Pulled 8s kubelet Container image docker.io/istio/proxyv2:1.28.2 already present on machineNormal Created 8s kubelet Created container: istio-initNormal Started 8s kubelet Started container istio-initNormal Pulled 8s kubelet Container image docker.io/istio/proxyv2:1.28.2 already present on machineNormal Created 8s kubelet Created container: istio-proxyNormal Started 8s kubelet Started container istio-proxyNormal Pulled 6s kubelet Container image registry.cn-beijing.aliyuncs.com/wilsonchai/nginx:latest already present on machineNormal Created 6s kubelet Created container: nginx-testNormal Started 5s kubelet Started container nginx-test1个initContainer1个业务container和1个sidecar其中initContainerInit Containers:istio-init:Container ID: containerd://2bf56cd37703d82a2a43e94e8c8d683ed66b0afe22bf7148a597d67b89a727a8Image: docker.io/istio/proxyv2:1.28.2Image ID: docker.m.daocloud.io/istio/proxyv2sha256:39065152d6bd3e7fbf6bb04be43c7a8bbd16b5c7181c84e3d78fa164a945ae7fPort:Host Port:Args:istio-iptables-p15001-z15006-u1337-mREDIRECT-i*-x-b*-d15090,15021,15020--log_output_leveldefault:info...和之前envoy中劫持流量的做法一样istio依然是使用iptables将端口流量导入到代理之中处理尝试访问一下? curl 10.22.12.178:30785/testi am backend in backend-6d76f54494-g6srz成功再次查看istio-proxy日志。空的为了调试方便将其打开并且输出至控制台kubectl -n istio-system edit cm istioapiVersion: v1data:mesh: |-accessLogFile: /dev/stdout...至此istio的第一个功能探索完毕自动注入sidecar container并且完成了流量劫持Upgrade Required 426 的问题当前的架构是左图现在要前进到右图watermarked-istio_1其实就是在backend注入istio-proxy直接重启就好? kubectl get pod -owideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESbackend-5d4d7b598c-f7852 2/2 Running 0 13s 10.244.0.49 wilsonnginx-test-6f855b9bb9-9phsv 2/2 Running 0 58m 10.244.0.48 wilson注入完成测试一下? curl 10.22.12.178:30785/testUpgrade Required? kubectl logs -f -l appnginx-test -c istio-proxy[2026-01-26T07:54:42.977Z] GET /test HTTP/1.1 426 - upstream10.244.0.48:80 duration6ms routedefault[2026-01-26T07:54:42.978Z] - - - 0 - upstream10.105.148.194:10000 duration9ms route-在nginx注入istio-proxybackend没有注入的时候并没有报错。而一旦nginx与backend都注入的时候就会出现Upgrade Required (426)错误Nginx Sidecar 发现目标Backend是一个纯文本服务它会回退到“透明代理”模式简单地把 Nginx 发出的流量透传出去Nginx Sidecar 发现目标也有 Sidecar它会尝试建立一个高度优化的、基于 mTLS 的隧道关于mTLS后面会详细介绍。如果此时 Nginx 发出的请求头比如缺少 Host 字段或者使用了 HTTP/1.0不符合 Envoy 对这种隧道协议的预期Envoy 可能会向 Nginx 发送一个特殊的响应或者 Nginx 在尝试通过这种隧道通信时因为某些 Header 冲突如 Connection: close自发产生了 426 错误想要解决这个问题有两种方法改造nginx中加入标记location /test {proxy_http_version 1.1; # 必须添加这一行proxy_set_header Host $host; # 这一行也是必须的proxy_pass http://backend_ups;}Nginx 的 proxy_pass 默认使用 HTTP/1.0。在 Istio 环境中HTTP/1.0 不支持长连接Keep-Alive以及一些现代的协议协商这与 Istio SidecarEnvoy默认的 L7 代理行为冲突Istio 需要 HTTP/1.1 来支持复杂连接管理问题改造backend service如果nginx改造有难度那也可以尝试改造backend-serviceapiVersion: v1kind: Servicemetadata:name: backend-servicenamespace: defaultspec:ports:- name: tcp-80 # 原为 http-80 改为 tcp-80port: 10000protocol: TCPtargetPort: 10000selector:app: backendIstio 只有在识别到流量是 HTTP 时才会进行深度的协议检查和转换。如果你把这个服务声明为 TCPIstio 就会将其视为原始字节流进行透传不再关心它是 HTTP/1.0 还是 1.1。优点就是彻底解决 426 问题无需改 Nginx。缺点则是你会失去 Istio 针对该服务的 HTTP 监控指标如请求数、4xx/5xx 统计、分布式追踪以及基于路径的路由功能http 1.0 与 http 1.1这里再简单介绍一下两个协议版本的区别连接管理最显著的区别HTTP 1.0短连接 (Short-lived)默认情况下客户端每发起一个请求都要与服务器建立一次 TCP 三次握手。请求结束并收到响应后TCP 连接立即关闭。如果页面有 10 张图片浏览器就要建立 10 次 TCP 连接。这带来了极高的延迟和资源开销。HTTP 1.1持久连接 (Persistent Connection / Keep-Alive)。默认开启 Connection: keep-alive。一个 TCP 连接可以被多个请求复用。只有在明确声明 Connection: close 或连接超时后才会关闭。在 Istio 中 Envoy 极度依赖持久连接来维持高性能的 Sidecar 间隧道。HTTP 1.0 的频繁断开会让 Envoy 感到“压力山大”甚至认为这是一种非标准的协议行为。Host HeaderHTTP 1.0人们认为一个 IP 对应一个网站所以请求头里不需要带域名信息。HTTP 1.1随着虚拟主机一个 IP 跑多个网站的流行HTTP 1.1 规定请求头必须包含 Host 字段。在 K8s/Istio 中 Istio 的路由决策、Service 的匹配完全依赖 Host 头。这也是为什么 Nginx 使用 HTTP 1.0 转发时如果不手动补全 Host 头后端往往会返回 404 或协议错误。以上是istio必须要求HTTP 1.1最主要的两个因素当然还有其他非常重要的区别特性 HTTP 1.0 HTTP 1.1连接模型 默认短连接每次请求新开 TCP 默认持久连接 (Keep-Alive)复用 TCPHost 头部 可选 (导致无法支持虚拟主机) 必须 (支持一 IP 多域名)流水线 (Pipelining) 不支持 支持 (但在实际应用中受限)断点续传 不支持 支持 (通过 Range 头部)缓存控制 简单 (Expires) 复杂且强大 (Cache-Control, ETag)默认协议版本 许多旧软件(如 Nginx proxy)的默认值 现代 Web 应用的基石标准小结本章内容算是一个开胃小菜成功安装了istio并且解决了一个非常常见的426问题至于怎么把之前在envoy的那些最佳实践搬迁到istio那就是后面的内容了敬请期待后记如果整个namespace都已经有了注入标签istio-injectionenabled但是某个deployment不想让istio注入kubectl patch deployment nginx -p {spec:{template:{metadata:{annotations:{sidecar.istio.io/inject:false}}}}}判返俣嘿

相关文章:

等保.三级要求下Redis 安全测评应该怎么做?低

在之前的文章中,我们花了大量的篇幅,从记录后端pod真实ip开始说起,然后引入envoy,再解决了各种各样的需求:配置自动重载、流量劫持、sidecar自动注入,到envoy的各种能力:熔断、流控、分流、透明…...

SWSPI软件SPI协议栈原理与嵌入式工程实践

1. SWSPI 软件模拟 SPI 协议栈深度解析与工程实践指南1.1 技术定位与工程必要性SWSPI(Software SPI)并非一个具体某家厂商发布的标准库,而是一类在嵌入式系统中广泛存在的纯软件实现的 SPI 主机协议栈。其核心价值在于:当硬件 SPI…...

mysql如何在指定位置添加新列_After关键字用法实操

MySQL 8.0.19 稳定支持 ALTER TABLE ... ADD COLUMN ... AFTER,仅适用于 ADD COLUMN,AFTER 后必须为已存在列名,不适用于 MODIFY/CHANGE COLUMN;5.7 及早期 8.0 版本存在兼容性问题。ALTER TABLE … ADD COLUMN … AFTER 语法是否…...

嵌入式GPIO镜像与锁存:亚微秒级确定性I/O控制库

1. 项目概述hardwareIO是一个面向嵌入式底层开发的轻量级硬件I/O抽象与控制库,其设计目标并非提供通用外设驱动(如UART、SPI协议栈),而是聚焦于物理层信号的确定性操控与状态同步——即对GPIO引脚进行高精度镜像(mirro…...

如何免费提升Windows性能51%?Win11Debloat终极系统优化指南

如何免费提升Windows性能51%?Win11Debloat终极系统优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter a…...

MIMO-UNet:重新思考单图像去模糊中的多尺度融合策略

1. 为什么我们需要重新思考图像去模糊? 每次看到手机里拍糊的照片,我都忍不住想:要是能一键修复该多好。这就是图像去模糊技术要解决的问题。传统方法就像用PS手动修复,费时费力效果还一般。后来深度学习来了,特别是那…...

差分进化算法调参实战:Mutation Factor和Crossover Rate怎么设?附Python代码与可视化分析

差分进化算法调参实战:Mutation Factor和Crossover Rate怎么设?附Python代码与可视化分析 差分进化算法(Differential Evolution, DE)作为一种高效的全局优化算法,在机器学习超参数调优、工程优化等领域展现出强大的性…...

嵌入式通用传感器驱动框架:协议解耦与数据归一化设计

1. Energesis_GenericSensor 库概述Energesis_GenericSensor 是一个面向嵌入式系统的通用传感器驱动抽象框架,其核心目标并非实现具体硬件的寄存器操作,而是构建一套可互换、可复用、可验证的软件接口层。在工业现场、IoT终端与消费类电子产品的生命周期…...

SSD1306/SSD1315 OLED滚动显示:硬件指令与软件算法的实战抉择

1. 硬件滚动与软件滚动的本质区别 第一次接触OLED滚动显示功能时,我也被硬件和软件两种方案搞得一头雾水。后来在几个实际项目中反复折腾才发现,这两种方案最根本的区别在于谁来承担计算负担。硬件滚动是把计算压力转嫁给驱动芯片,软件滚动则…...

KIM库解析:Arduino上实现6502总线时序与复古计算仿真

1. KIM库:面向KIM1 Shield v2的Arduino底层驱动框架解析1.1 历史背景与硬件定位KIM1 Shield v2 是一款已停产的Arduino扩展板,专为复刻与教学用途设计,其核心目标是模拟1975年MOS Technology推出的KIM-1单板计算机(Keyboard Input…...

ST-LINK Reset and Run失效?教你3步搞定STM32复位问题

ST-LINK Reset and Run失效?3步精准定位STM32复位异常 最近在调试STM32项目时,遇到一个令人抓狂的问题——明明在Keil中勾选了Reset and Run选项,程序烧录后芯片却像睡着了一样毫无反应。这种看似简单的复位问题,往往藏着开发环境…...

告别数据丢包!用Qt实现高可靠串口数据采集的3个关键策略(附线程安全队列代码)

工业级串口数据采集:Qt高可靠通信架构设计与实战 在工业自动化与物联网设备监控领域,数据采集的可靠性直接关系到系统决策的准确性。我曾参与过一个风电监测项目,现场振动传感器通过RS485串口每秒上传2000个采样点,但初期版本的数…...

MPL3115A2气压高度传感器嵌入式驱动开发与FreeRTOS集成

1. MPL3115A2气压高度传感器技术解析与嵌入式驱动开发实践1.1 器件定位与工程价值MPL3115A2是NXP(原Freescale)推出的高精度数字气压/高度/温度传感器,采用IC接口,工作电压范围为1.95V–3.6V,典型功耗仅7μA&#xff0…...

【架构实战】SQL调优实战:从执行计划到索引优化

一、为什么需要SQL调优 在应用开发中,SQL性能直接影响系统响应速度: 慢SQL的影响: 页面加载缓慢,用户体验差数据库CPU使用率飙升连接池耗尽,应用不可用甚至引发连锁故障 调优的目标: 查询时间从秒级降到毫秒…...

OFA-Image-Caption模型微调实战:使用自定义数据集提升垂直领域描述精度

OFA-Image-Caption模型微调实战:使用自定义数据集提升垂直领域描述精度 你是不是也遇到过这种情况?一个通用的图片描述模型,用来描述日常照片效果还不错,但一旦面对专业领域的图片,比如医学影像、工业设计图或者艺术品…...

DeOldify服务监控方案:Prometheus+Grafana实时跟踪GPU利用率与QPS

DeOldify服务监控方案:PrometheusGrafana实时跟踪GPU利用率与QPS 1. 监控方案概述 在实际的AI服务部署中,仅仅能够运行服务是不够的。我们需要实时了解服务的运行状态、资源使用情况以及性能指标。对于DeOldify这样的深度学习图像上色服务,…...

Python3.9镜像新手入门:从零开始配置开发环境

Python3.9镜像新手入门:从零开始配置开发环境 1. 为什么选择Python3.9镜像 Python作为当今最流行的编程语言之一,其3.9版本在性能优化和语法特性上都有显著提升。使用预配置的Python3.9镜像可以让你: 快速开始:省去繁琐的环境配…...

LVGL Linux模拟器实战:从GUI-Guider设计到EVDEV按键事件处理的完整链路

LVGL Linux模拟器实战:从GUI-Guider设计到EVDEV按键事件处理的完整链路 在嵌入式GUI开发领域,LVGL凭借其轻量级、高性能的特性已成为众多开发者的首选。本文将带您深入探索一个常被忽视但至关重要的技术环节:如何让GUI-Guider设计的界面在Lin…...

STM32F429开发实战:手把手教你开启FPU并验证性能提升(含Lazy Stacking详解)

STM32F429开发实战:FPU性能优化与Lazy Stacking深度解析 在嵌入式系统开发中,浮点运算性能往往是制约算法实时性的关键瓶颈。STM32F429作为Cortex-M4内核的代表性产品,其内置的浮点运算单元(FPU)能显著提升计算效率——但前提是开发者必须正确…...

【向量检索实战】FAISS + BGE-M3:构建高效RAG系统的核心引擎

1. 为什么需要FAISSBGE-M3组合? 在构建RAG系统时,最头疼的问题就是如何快速从海量文档中找到最相关的信息。想象一下,你正在整理一个超大的衣柜,里面有成千上万件衣服。当你想找"适合夏天穿的蓝色衬衫"时,如…...

2026届毕业生推荐的六大AI科研平台推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能技术于学术写作领域的运用愈发广泛,其关键价值展现于文献检索、数据整理…...

F28335项目功耗优化实战:如何通过精细管理外设时钟(PCLKCR)来省电

F28335项目功耗优化实战:精细管理外设时钟(PCLKCR)的省电艺术 在电池供电的电机控制或物联网传感节点开发中,系统功耗直接决定了产品的续航能力。TMS320F28335作为一款高性能DSP控制器,其动态功耗往往成为系统优化的重…...

Qwen3-ForcedAligner-0.6B在Dify平台上的无代码部署方案

Qwen3-ForcedAligner-0.6B在Dify平台上的无代码部署方案 1. 引言 语音和文本的对齐技术在实际应用中越来越重要,无论是制作字幕、语音分析还是内容创作,都需要精确的时间戳对齐。传统方法往往需要复杂的代码编写和配置,让很多非技术背景的用…...

SITS2026图谱深度解读:从LlamaFactory到vLLM再到Prometheus-Metrics,谁才是真正可规模化的工程底座?

第一章:SITS2026发布:大模型工程化工具链图谱 2026奇点智能技术大会(https://ml-summit.org) SITS2026(Scalable Intelligent Toolchain Summit 2026)正式发布面向生产级大模型开发的全栈工程化工具链图谱,聚焦模型训…...

YOLOFuse功能体验:支持多种融合策略,实测中期融合性价比最高

YOLOFuse功能体验:支持多种融合策略,实测中期融合性价比最高 1. 多模态目标检测的挑战与机遇 在目标检测领域,单一传感器已经难以满足全天候、复杂环境下的应用需求。传统RGB摄像头在低光照、烟雾、雨雪等恶劣条件下性能急剧下降&#xff0…...

【大模型上线前必过隐私审计关】:7类高危数据场景识别表+3套自动化检测脚本(附开源工具链)

第一章:大模型工程化中的数据隐私保护 2026奇点智能技术大会(https://ml-summit.org) 在大模型工程化落地过程中,原始训练数据、微调语料及推理输入往往蕴含敏感个人信息、企业专有知识或受监管的行业数据。若缺乏系统性隐私防护机制,模型可…...

嵌入式传感器抽象框架:ArduSensorPlatformCoreBase核心解析

1. ArduSensorPlatformCoreBase 框架核心组件深度解析ArduSensorPlatformCoreBase 是 ArdusensorPlatform 框架的底层基石模块,其定位并非通用传感器驱动集合,而是为构建可扩展、可复用、跨平台的嵌入式传感系统提供标准化抽象层与基础设施支撑。该模块不…...

ESP8266接入AWS IoT Core的SigV4+WebSocket实战指南

1. AWS IoT ESP8266 Arduino Websockets 库深度解析 1.1 项目定位与工程价值 AWS IoT ESP8266 Arduino Websockets 是一个面向资源受限嵌入式设备的轻量级物联网接入库,专为 ESP8266 平台在 Arduino IDE 或 PlatformIO 环境下构建安全、可靠、低开销的云连接能力而…...

【大模型可观测性生死线】:为什么你的Prometheus告警总在凌晨爆炸?7步阈值校准工作流曝光

第一章:大模型可观测性生死线:阈值设定的战略意义 2026奇点智能技术大会(https://ml-summit.org) 在大模型生产化落地过程中,可观测性并非仅关乎“能否看到指标”,而本质是“能否在失效前精准干预”。阈值设定正是这条生死线的锚…...

向量检索准确率从82%跃升至99.4%——2026奇点大会闭门报告(仅限首批技术决策者解密)

第一章:向量检索准确率从82%跃升至99.4%——2026奇点大会闭门报告(仅限首批技术决策者解密) 2026奇点智能技术大会(https://ml-summit.org) 这一跃升并非源于单一模型升级,而是由三层协同优化构成的系统性突破:语义对…...