Administrator
发布于 2026-08-19 / 2 阅读
0
0

第十章.k8sHELM-Ingress-nginx-3

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

1. 基于用户的Ingress Basic Auth认证配置

1.1 前置准备

  • 安装http-tools工具包,用于生成Basic Auth所需的认证文件
  • 通过htpasswd命令生成认证文件,配置用户名为xinxianghongfu,密码为123

1.2 资源创建流程

  1. 创建类型为Opaque的Secret资源,将生成的认证文件封装其中,供Ingress调用
  2. 配置Ingress资源:
    • 开启Basic Auth功能,通过3个注解实现:
      • nginx.ingress.kubernetes.io/auth-type: basic:指定认证类型为基础认证
      • nginx.ingress.kubernetes.io/auth-secret: <Secret名称>:指定存储认证文件的Secret
      • nginx.ingress.kubernetes.io/auth-realm: <认证提示信息>:配置认证弹窗的提示文案
    • 配置Ingress规则:匹配目标主机名,后端指向对应Service,端口为80

1.3 验证与注意事项

  • 访问Ingress绑定的域名时,会弹出认证弹窗,输入用户名xinxianghongfu、密码123即可正常访问后端服务
  • 注意:新版浏览器默认会隐藏认证提示信息,仅显示输入框,属于正常现象,可通过Chrome DevTools或旧版浏览器验证提示信息是否生效

2. Ingress重定向(Redirect)配置

2.1 配置方法

在Ingress资源的annotations中添加nginx.ingress.kubernetes.io/permanent-redirect: <目标地址>注解,即可实现请求永久重定向,示例中配置为重定向到https://www.baidu.com,返回301状态码。

2.2 验证方式

  1. 将目标域名(如xinxianghongfu.com)解析到Ingress所在节点的IP
  2. 浏览器访问该域名,会自动跳转到配置的目标地址
  3. 通过curl -I <域名>或Chrome DevTools的网络面板可查看返回的301状态码,确认重定向生效

3. Ingress重写(Rewrite)配置与原理

3.1 新旧版本Ingress类指定差异

  • 老版本Ingress:通过annotationnginx.ingress.kubernetes.io/configuration-snippet指定Ingress类名
  • 新版本Ingress:直接在spec.ingressClassName字段指定类名,无需额外annotation,更简洁

3.2 重写配置方法

在Ingress资源的annotations中添加nginx.ingress.kubernetes.io/rewrite-target: <重写后的路径>注解,结合路径匹配的正则表达式规则实现路径重写。
示例配置逻辑:匹配/api/<任意路径>的请求,通过正则捕获分组将路径重写为/<任意路径>,转发给后端服务,解决前后端路径不一致的问题。

3.3 重写与重定向的核心区别

特性 重写(Rewrite) 重定向(Redirect)
执行主体 Ingress控制器内部处理,无额外请求 客户端收到3xx状态码后主动发起新请求
客户端感知 无感知,浏览器URL地址栏不变 有感知,URL地址栏会变更为目标地址
返回状态码 无特殊状态码,直接返回后端服务响应 返回3xx状态码(如301永久重定向、302临时重定向)
适用场景 统一域名下不同路径转发到不同后端、隐藏后端真实路径、前后端路径对齐等 域名迁移、HTTP跳HTTPS、旧地址跳转新地址、协议跳转等

3.4 典型应用场景

统一域名下区分前端/后端服务:例如访问xinxianghongfu.com/xxx转发到前端服务,访问xinxianghongfu.com/api/xxx通过重写将路径转为/xxx转发到后端服务,无需修改业务代码即可实现路径对齐,降低业务改造成本。

4. 自定义Ingress全局错误页面配置

4.1 配置前提

自定义错误页面为Ingress-nginx全局配置,需在安装Ingress-nginx时提前规划配置,若安装后需修改,需重新部署Ingress-nginx组件。

4.2 配置步骤

  1. 准备错误页面镜像:可使用提前封装好的镜像wangyanglanus/tools:errweb1.0,内置各类通用错误页面,容器端口为80,也可自行封装包含自定义错误页面的镜像
  2. 修改Ingress-nginx的配置参数:
    • 开启自定义错误页面功能
    • 指定错误页面镜像的仓库地址、镜像名称、版本号、端口
  3. 重新部署Ingress-nginx,指定修改后的配置文件和命名空间ingress-nginx

4.3 效果验证

当Ingress后端的服务出现404、502等错误时,会自动返回配置的自定义错误页面,无需在每个业务服务中单独实现错误页面逻辑,降低重复开发成本。

AI 总结

本视频是Kubernetes Ingress-nginx的进阶实操教程,围绕Ingress的3个核心高级能力展开:首先演示了基于用户的Basic Auth认证全流程配置与验证;其次详细讲解了Ingress重定向、重写的配置方法,明确了两者的本质区别与适用场景;最后介绍了全局自定义错误页面的部署方案。所有内容均通过实操演示验证,适合K8s运维人员学习Ingress的高级用法,解决实际生产中的访问控制、路径管理、异常处理等需求。


评论