ALB Ingress资源配置ssl-redirect注解实现HTTP跳转HTTPS(AWS ALB v2.4.2)
AWS ALB Controller v2.4.2 配置Ingress HTTP自动跳转HTTPS方案
针对v2.4.2版本的AWS ALB Controller,直接通过官方内置注解即可实现SSL重定向,不需要额外部署重定向后端服务,具体配置方式如下:
核心配置规则
你需要在Ingress资源的metadata.annotations段添加两个必填注解:
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]':必须同时声明80(HTTP)和443(HTTPS)两个监听端口,只配置443端口的话ALB不会接收HTTP请求,重定向逻辑完全不触发。alb.ingress.kubernetes.io/ssl-redirect: "443":SSL重定向核心开关,值为HTTPS监听端口,固定填字符串格式的"443"即可。配置生效后ALB会自动给80端口的所有请求返回308永久重定向响应,跳转到对应HTTPS地址,不会将HTTP流量转发到后端业务Pod。
最小可用配置示例
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: business-ingress annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' alb.ingress.kubernetes.io/ssl-redirect: "443" # 替换为你自己的ACM证书ARN alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:区域:账号ID:certificate/证书唯一标识 # 原有其他注解(如ALB公网/内网模式、安全组、子网选择等)可正常保留 spec: rules: - host: your-domain.com http: paths: - path: / pathType: Prefix backend: service: name: your-business-service port: number: 80
常见踩坑说明
- 注意格式要求:
ssl-redirect的取值必须加双引号,以字符串格式传入,不要直接写裸数字443,否则YAML序列化后类型不匹配,控制器无法识别该注解。 - 不需要手动为80端口配置任何后端转发规则,控制器识别到SSL重定向注解后会自动覆盖80端口的转发逻辑,手动配置80端口转发规则反而会导致重定向失效。
- v2.4.2版本默认返回308永久重定向状态码,该状态码会保留原请求的方法、请求体,适配GET/POST/PUT等所有请求类型,不需要额外添加注解修改重定向状态码,默认配置即可满足绝大多数业务场景。
- 配置后如果重定向未生效,优先排查两点:一是80端口是否在listen-ports中正确声明,二是注解值格式是否符合要求,90%以上的不生效问题都是这两个原因导致的。
内容的提问来源于stack exchange,提问作者Nerd_coder
相关产品推荐
相关产品推荐

