当前位置: 首页 > 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的各种能力:熔断、流控、分流、透明…...

终极跨平台串口调试工具:5个秘诀让硬件调试效率翻倍

终极跨平台串口调试工具:5个秘诀让硬件调试效率翻倍 【免费下载链接】SerialPortAssistant This project is a cross-platform serial port assistant. It can run on WINDOWS, linux、android、macos system. 项目地址: https://gitcode.com/gh_mirrors/se/Seri…...

GitHub中文界面插件终极指南:3分钟实现全平台中文化

GitHub中文界面插件终极指南:3分钟实现全平台中文化 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾被GitHub满屏…...

YOLO与强化学习的融合:构建智能视觉决策系统

1. 为什么需要YOLO与强化学习的融合 在智能系统领域,视觉感知和决策能力就像人的眼睛和大脑。YOLO(You Only Look Once)作为当前最先进的目标检测算法之一,能够快速准确地识别图像中的物体。而强化学习则擅长通过与环境交互来学习…...

使用DevEco Studio创建你的第一个鸿蒙应用

首先我们打开安装好的DevEco Studio开发工具,点击“新建项目”:在新建项目界面,我们直接使用默认的“Empty Ability”模板,该模板可以直接生成一个带有Hello World页面的项目结构,直接点击“下一步”即可:配…...

AIAgent状态机设计实战手册(从单体FSM到分布式Saga-State双模引擎)

第一章:AIAgent状态机设计概览 2026奇点智能技术大会(https://ml-summit.org) AI Agent 的行为稳定性与任务可追溯性高度依赖于其底层状态管理机制。状态机设计为 AI Agent 提供了清晰的生命周期边界、确定性的状态迁移路径以及可观测的执行上下文,是构…...

鸿蒙应用开发的第一步:集成开发环境DevEco Studio的下载

鸿蒙应用开发需要用的开发工具是DevEco Studio,通过华为开发者联盟官网-开发进入,点击DevEco Studio图标,如下图所示: 点击立即下载,进入下载页面,见下图: 靠前显示的一般是最新版,可…...

抖音爬虫避坑实战:从基础requests到进阶DrissionPage,我的踩坑记录与完整代码分享

从requests到DrissionPage:抖音数据采集的进阶实战与避坑指南 第一次尝试用Python爬取抖音视频时,我天真地以为几行requests代码就能搞定。直到实际动手才发现,从接口参数构造到动态加载处理,处处都是坑。这篇文章记录了我从基础r…...

物业费不用白交!日常消费直接抵扣

家人们,发现个神奇操作!最近有公司在搞“智慧社区”,玩法挺有意思:你在小区周边吃饭、买菜、充电费…这些日常花的钱,居然能变成物业费!👇💰 核心就一句:花该花的钱&…...

千问3.5-2B与YOLOv5联动:实现智能视频内容分析与描述

千问3.5-2B与YOLOv5联动:实现智能视频内容分析与描述 1. 场景需求与技术方案 在视频内容爆炸式增长的今天,如何快速理解视频内容成为许多行业的共同需求。以安防监控为例,传统人工查看录像的方式效率低下,一个8小时的监控视频可…...

5分钟快速上手:Buzz离线语音转文字终极指南,保护隐私的完整解决方案

5分钟快速上手:Buzz离线语音转文字终极指南,保护隐私的完整解决方案 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/…...

Linux CFS 的 throttled_cfs_rq:被限流任务组的管理与恢复

一、简介在现代云计算和容器化环境中,CPU资源的公平分配与限制是系统稳定性的关键保障。Linux内核的CFS(Completely Fair Scheduler)带宽控制机制通过cpu.cfs_quota_us和cpu.cfs_period_us(cgroup v2中统一为cpu.max)为…...

macOS光标个性化终极指南:如何用Mousecape打造专属高效工作流

macOS光标个性化终极指南:如何用Mousecape打造专属高效工作流 【免费下载链接】Mousecape Cursor Manager for OSX 项目地址: https://gitcode.com/gh_mirrors/mo/Mousecape 在macOS的视觉交互体验中,鼠标指针作为我们与数字世界最直接的连接点&a…...

5分钟上手lilToon:打造专业级卡通角色渲染的终极指南

5分钟上手lilToon:打造专业级卡通角色渲染的终极指南 【免费下载链接】lilToon Feature-rich shaders for avatars 项目地址: https://gitcode.com/gh_mirrors/li/lilToon lilToon是一款功能强大的Unity着色器工具,专为虚拟角色和卡通渲染设计。无…...

刚考上研究生的小白怎么写综述?

除了传统的写作方法,我们需要的是一种能够将传统数周的文献调研压缩至分钟级的高效解决方案,这便是智能化科研工具的核心价值所在。 MedPeer基于国内科研现状,打造出了Deep Search这款智能文献检索与分析工具。它覆盖了3亿篇文献数据库&…...

Go语言怎么用Kafka_Go语言Kafka消息队列教程【对比】

Kafka在Go中可靠性取决于配置匹配:sarama需显式设RequiredAcksWaitForAll、Return.Successestrue及正确Version;kafka-go更简洁但兼容性弱;网络配置、advertised.listeners和认证易致生产超时。Kafka 在 Go 里不是“装个包就能用”&#xff0…...

别再为建筑高度数据发愁了!手把手教你用QGIS加载2024版全国SHP建筑轮廓(含高度字段)

2024版全国建筑轮廓数据实战:QGIS三维可视化全流程解析 城市规划师拿到最新建筑轮廓数据后,最迫切的需求往往不是数据本身,而是如何快速将其转化为可分析的视觉成果。本文将彻底解决从SHP文件加载到三维渲染的完整工作流问题,特别…...

AWVS在Ubuntu 22.04上的Docker化部署与实战配置指南

1. 为什么选择Docker部署AWVS? 如果你是一名安全工程师或者渗透测试人员,AWVS(Acunetix Web Vulnerability Scanner)应该是你工具箱里的常客。这款老牌Web漏洞扫描器以精准的SQL注入和XSS检测闻名,但传统安装方式总是…...

华为OD机试 - 符合条件的元组个数 - 递归、双指针(Java 新系统 100分)

华为OD机试 新系统 题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有…...

免费降AI率哪个好?嘎嘎降AI、比话降AI、率零实测推荐

免费降AI率哪个好?嘎嘎降AI、比话降AI、率零实测推荐 “免费降AI率到底用哪个好?”——这个问题最近被问烂了。 在各种毕业论文群里、知乎上、小红书上,到处都是这个问题。答案五花八门,有推荐这个的有推荐那个的,但大…...

HiRAG:层级知识检索增强生成,小白程序员也能轻松掌握大模型技术,速收藏!

HiRAG是一种层级知识检索增强生成框架,旨在解决现有RAG方法在处理领域特定任务时面临的语义相似实体结构距离和局部与全局知识鸿沟两大挑战。通过构建多层级知识图谱和实施三层知识检索(局部、全局、桥接),HiRAG有效增强了语义关联…...

收藏!小白也能看懂:用“天才学生”培养法揭秘大模型训练全过程

本文用“培养天才学生”的比喻,将大模型训练过程分为四个阶段:博览群书(预训练)构建知识基础,教养规矩(后训练与对齐)学习人类价值观和指令理解,独立思考(推理增强&#…...

VS2022性能剖析器实战:精准测量算法的时间与内存消耗

1. 为什么需要性能剖析工具? 写算法代码时,我们经常会遇到这样的场景:代码逻辑明明正确,但运行时间就是超出限制,或者内存消耗过大导致程序崩溃。这时候就需要性能剖析工具来帮我们找出问题所在。 我最近在准备算法竞赛…...

多仪器数字电子实验箱,数字电路实验箱,电路实验箱

数字电子实验教学系统 型号:QyDE02一、实验教学系统主要特点1.实验教学系统采用主实验箱模块化的结构组合方式设计;配有实验板安装接口底座,实验板更换简便;多模块集成,支持数字电子电路系统设计与性能验证&#xff0…...

CD-HIT安装踩坑实录:从Conda到源码编译,哪种方式最适合你的Linux服务器?

CD-HIT安装踩坑实录:从Conda到源码编译,哪种方式最适合你的Linux服务器? 生物信息学工具CD-HIT作为序列去冗余的黄金标准,几乎出现在每篇涉及高通量测序分析的论文方法部分。但当你第一次在实验室服务器上尝试安装它时&#xff0c…...

避坑指南:STM32CUBEMX串口配置常见问题及解决方案(USART/printf重定向)

STM32CubeMX串口开发实战:从原理到调试的完整避坑手册 第一次在STM32CubeMX里配置串口时,我盯着那个115200的波特率数值发呆了十分钟——这个看似简单的数字背后,隐藏着多少新手会踩的坑?从时钟树配置到DMA缓冲区,从p…...

计算机视觉需要哪些数学基础?如何高效学习线性代数和概率论?

计算机视觉需要哪些数学基础?如何高效学习线性代数和概率论? 标签:#计算机视觉、#线性代数、#人工智能、#深度学习、#自然语言处理、#神经网络、#机器学习 ### 一、痛点引入:为什么很多人怕CV数学?真相是什么&#xf…...

Java的MethodHandle与反射的性能对比

Java的MethodHandle与反射的性能对比 在Java开发中,动态调用方法是一个常见的需求,而传统的反射(Reflection)和Java 7引入的MethodHandle是两种主要实现方式。虽然反射功能强大,但因其性能开销较大,Method…...

音乐魔法解密:用Spleeter实现专业级音频分离的完整指南

音乐魔法解密:用Spleeter实现专业级音频分离的完整指南 【免费下载链接】spleeter Deezer source separation library including pretrained models. 项目地址: https://gitcode.com/gh_mirrors/sp/spleeter 你是否曾梦想过拥有"音乐魔法"&#xf…...

AI Agent工作流分布式追踪实战:OpenTelemetry从黑盒到透明化的调试方案

一、背景与挑战 在构建复杂的AI Agent工作流时,你是否遇到过这样的调试困境:一个包含数据获取、多模型推理、结果整合的流程突然失败,却无法快速定位具体卡在哪一步?日志分散在各个组件,指标只能告诉你"有错误&qu…...