Administrator
发布于 2026-08-20 / 0 阅读
0
0

第十章.k8sHELM-Ingress-nginx-5

来源链接:https://www.bilibili.com/video/BV1PbeueyE8V?spm_id_from=333.788.videopod.episodes&vd_source=d8c71ff24a3359a807967fc4b5daa0e4&p=77

视频内容概述

本段为Kubernetes Ingress Nginx 实操教程,核心演示了Ingress的四大高级功能:黑白名单配置、速率限制、灰度发布(金丝雀部署),所有操作均基于k8s集群环境实操验证。

一、黑白名单配置与验证

1.1 黑名单(Deny List)配置

  • 配置逻辑:仅允许指定网段访问Ingress,拒绝其他所有请求
  • 配置方式:修改Ingress Nginx控制器的ConfigMap资源,调整deny规则,将拒绝网段从1011修改为仅允许6611网段,清理Ingress Pod强制配置生效
  • 验证结果:
    • 1011网段机器访问Ingress返回403,请求被拒绝
    • 6611网段机器访问Ingress正常,请求成功
  • 结论:黑名单规则仅针对当前配置的Ingress资源生效

1.2 白名单(Allow List)配置

白名单逻辑:仅允许名单内的IP/网段访问,非名单内请求全部拒绝,支持两种配置方式:

方式1:基于ConfigMap全局配置

修改Ingress Nginx控制器的ConfigMap,添加allow规则(如允许6611网段),清理Ingress Pod强制生效。配套创建测试Deployment、Service、Ingress资源,通过修改/etc/hosts文件模拟域名解析后验证:

  • 白名单内IP访问正常,非白名单IP返回403,规则生效
    演示完成后还原ConfigMap配置,清理Ingress Pod。

方式2:基于Ingress注解单资源配置(推荐)

无需修改全局ConfigMap,仅针对单个Ingress生效,配置方式为在Ingress的metadata中添加注解:
nginx.ingress.kubernetes.io/whitelist-source-range: "192.168.66.12/32"(示例为允许单个IP,也可配置CIDR网段)
配套创建测试Deployment、Service、Ingress资源,配置域名解析后验证:

  • 白名单内IP访问正常,非白名单IP返回403,规则生效

二、Ingress速率限制配置与验证

2.1 限流作用与核心注解

速率限制用于控制单个IP的访问频率,降低后端服务压力、防止恶意攻击,Ingress Nginx提供的常用限流注解如下:

  • nginx.ingress.kubernetes.io/limit-connections:限制单个IP的每秒并发连接数
  • nginx.ingress.kubernetes.io/limit-rpm:限制单个IP的每分钟并发请求数
  • nginx.ingress.kubernetes.io/limit-rps:限制单个IP的每秒请求速率,单位为KB
  • nginx.ingress.kubernetes.io/limit-whitelist:配置限流白名单,白名单内IP不受限流规则限制,多规则可共同生效

2.2 限流实操演示

  1. 准备测试环境:创建测试Deployment(spider-deployment,nginx:alpine镜像,10个Pod副本)、Service(spider-service)、Ingress(spider-ingress),配置域名解析。
  2. 无限制测试:使用ab(Apache Bench,属于httpd-tools工具包)发送100个总请求,测试结果为失败请求0个,总耗时0.419秒,全部请求成功。
  3. 添加限流规则:在Ingress资源中添加nginx.ingress.kubernetes.io/limit-connections: "1"注解,限制单个IP每秒最多1个并发连接,重新应用Ingress配置。
  4. 限流验证:再次使用ab工具(参数-n指定总请求数、-c指定并发数)发送请求,测试结果为总请求188个,大量请求失败,总耗时0.828秒,证明限流规则生效。

三、灰度发布(金丝雀部署)演示

3.1 灰度发布概念

灰度发布(也称金丝雀部署,Canary Deployment)是指将新版本应用先开放给部分用户使用,逐步扩大流量比例,直到全量上线,降低版本发布风险。

3.2 灰度发布实操演示

  1. 部署v1稳定版本:创建v1-deployment(镜像版本1.0,10个Pod副本)、v1-service、v1-ingress,配置域名解析,验证可正常访问v1版本。
  2. 部署v2灰度版本:创建v2-deployment(镜像版本2.0)、v2-service,注意v2-service名称需与v1-service名称一致,确保Ingress可以路由到v2版本。
  3. 配置灰度规则:创建v2-ingress,域名与v1-ingress一致,添加灰度相关注解:
    • nginx.ingress.kubernetes.io/canary: "true":开启灰度模式
    • nginx.ingress.kubernetes.io/canary-weight: "10":设置10%的流量切到v2版本,剩余90%流量仍走v1版本
  4. 灰度验证:循环100次访问域名,统计返回版本,结果约为95个v1请求、5个v2请求,符合10%的灰度比例。
  5. 调整灰度比例:修改canary-weight为50,等待配置生效后再次测试,结果接近50%的请求返回v2版本,证明可按需调整灰度比例,实现平滑版本迭代。

AI 总结

本段视频通过实操演示完整梳理了Ingress Nginx的四大核心高级功能:黑白名单支持全局ConfigMap和单Ingress注解两种配置模式,满足不同场景的访问控制需求;速率限制可通过多类注解实现连接数、请求频率的灵活管控,搭配白名单可适配差异化限流规则;灰度发布通过注解配置即可实现流量按比例切分,是版本平滑发布的核心方案。所有功能均通过集群环境实操验证,可直接落地到生产环境的Ingress配置中。


评论