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

K8s Ingress Nginx 控制器配置 HTTPS 自动重定向的 YAML 要怎么写?

在 Kubernetes 集群中,要实现 Ingress Nginx 控制器将 HTTP 请求自动重定向到 HTTPS,最标准的方法是在 Ingress 资源的 metadata.annotations 中配置 ssl-redirect 注解,并确保 spec.tls 绑定了有效的证书 Secret。

核心结论:通过注解 nginx.ingress.kubernetes.io/ssl-redirect: "true" 开启重定向,粒度最细,适合按域名独立管理。

  • 适用场景:单个或少数几个 Ingress 需要强制 HTTPS,不影响全局配置。
  • 前置条件:必须先在相同命名空间创建好 TLS 类型的 Secret,否则 443 端口无法握手。
  • 验收标准:curl 测试 HTTP 请求返回 308 状态码,且 Location 头指向 HTTPS。

1. 前置准备:创建 TLS Secret

在配置 Ingress 之前,必须确保证书文件(.crt 和 .key)已就绪,并在集群中创建 Secret。假设证书文件在当前目录:

kubectl create secret tls my-tls-secret \`--cert`=path/to/tls.crt \`--key`=path/to/tls.key \-n <your-namespace>

创建完成后,使用以下命令确认 Secret 状态:

kubectl get secret my-tls-secret -n <your-namespace>

2. 完整 Ingress YAML 配置模板

以下是一个包含 HTTPS 重定向配置的完整 Ingress 示例。注意 annotations 的缩进层级必须与 name 同级,且 spec.tls 中 secretName 需与上述创建的 Secret 一致。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: my-ingressnamespace: <your-namespace>annotations:# 开启 HTTPS 强制重定向nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:ingressClassName: nginxtls:- hosts:- example.comsecretName: my-tls-secretrules:- host: example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: my-serviceport:number: 80

配置关键点说明:

  • annotations:必须包含 nginx.ingress.kubernetes.io/ssl-redirect: "true"。
  • spec.tls:必须配置,否则控制器不会监听 443 端口,重定向后用户无法访问。
  • secretName:必须与第一步创建的 Secret 名称完全一致。

3. 应用配置与验证

保存上述 YAML 为 ingress.yaml,执行应用命令:

kubectl apply -f ingress.yaml

检查 Ingress 状态是否为 READY:

kubectl get ingress my-ingress -n <your-namespace>

验证重定向:在能解析域名的客户端执行 curl 命令,观察 HTTP 请求是否被重定向:

curl -I http://example.com

预期结果:返回状态码应为 308 Permanent Redirect 或 301 Moved Permanently,且 Location 头以 https:// 开头。

4. 常见故障与排查

  • 重定向后无法访问(握手失败):检查 spec.tls 是否配置,以及 secretName 对应的 Secret 是否存在且包含有效的 cert 和 key。
  • 注解不生效:检查 Ingress Nginx 控制器的 ConfigMap 是否全局关闭了 ssl-redirect(use-ssl-redirect: "false"),全局配置优先级可能高于注解。
  • 重定向循环:如果后端服务本身也强制跳转 HTTPS,而 Ingress 透传了 HTTP 请求给后端,可能导致循环。确保后端服务能处理 HTTP 请求或 Ingress 配置正确。
  • 日志排查:查看控制器日志确认配置加载情况:kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx

原文链接:https://www.zjcp.cc/ask/11726.html

http://www.jsqmd.com/news/861948/

相关文章:

  • 2026年四川颗粒板厂家评测:靠谱供应商核心维度解析 - 优质品牌商家
  • 卷赢了!山东大学学者七库联合发文一区TOP(IF 10.6),解锁痴呆研究新赛道!
  • Mythos骨架式推理:企业级AI能力治理与因果建模新范式
  • C++静态成员与静态方法
  • 2026年q2天津闲置酒水回收正规机构实力盘点:天津名贵酒品回收回收/天津洋酒回收/天津礼盒酒水回收/优选推荐 - 优质品牌商家
  • Transformer架构优化与高效计算实践
  • C++强制类型转换的四种方式
  • 国内不发火水泥砂浆高性价比厂家实测排行权威盘点:环氧灌浆料/环氧砂浆/环氧胶泥/硅烷浸渍剂/硅烷膏体/优选指南 - 优质品牌商家
  • 【助睿实验指导】助睿ETL-订单利润分流数据加工
  • 台湾话TTS自然度卡在3.2/5?用MOS-LQO双维度测评法定位8类发音失真源(附自动化诊断脚本)
  • 预测性线索评分:用机器学习提升B2B销售转化率的实战指南
  • 警惕AI领域未经证实的技术传闻与虚构命名
  • 留学生遭遇大厂 PIP 晴天霹雳?2026 北美科技圈绩效提升计划深度解码与生存闭环
  • CAN模型:让GAN具备审美判断与风格突破能力
  • 智慧铁路之钢轨缺陷识别 自动化轨道检测系统开发 铁路养护车辆计算机视觉功能实现 轨道交通腐蚀识别 钢轨磨损识别10340期
  • LeetCode--112. 路径总和(二叉树)
  • 动态图神经网络实现多商品时序协同预测
  • 大模型技能训练:从模仿到自主进化
  • 千问 LeetCode 2532.过桥的时间 public int findCrossingTime(int n, int k, int[][] time)
  • 神经网络工程化:从信号处理视角解剖CNN/RNN/Transformer设计逻辑
  • 8051汇编DW指令字节序问题与解决方案
  • 用LLM嵌入向量破解工业微缺陷检测的长尾难题
  • 巴别鸟vs坚果云:企业云盘同步机制踩坑与实战配置
  • Lovable框架实战速成:3天掌握UI动效、状态管理与热重载调试全流程
  • AI周报如何成为技术决策的精准导航仪
  • AI算力增长的绿色悖论:硬件生产与模型训练的环境成本分析
  • Predictive Lead Scoring实战:B2B销售线索智能评分与CRM集成
  • 千问 LeetCode 2532.过桥的时间 TypeScript实现
  • 工业级神经网络实战:从训练崩溃到稳定上线的工程手册
  • AI Agent Runtime 正在成为新基础设施层