使用ALB Ingress Controller时如何避免生成路径条件
解决ALB规则条件数超限问题:仅保留主机头条件
要让ALB Ingress Controller只生成主机头规则,不自动添加路径条件,只需在Ingress资源中添加一个关键注解,同时保留原有配置即可:
具体修改步骤
- 在Ingress的
metadata.annotations中添加:alb.ingress.kubernetes.io/skip-default-path-condition: "true" - 保留原有的
host配置和自定义条件注解,这样控制器就会只生成主机头条件 + 你定义的4个额外条件,总共5个条件,刚好符合ALB单规则最多5个条件的限制。
修改后的完整Ingress示例
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/certificate-arn: mycertificatearn alb.ingress.kubernetes.io/conditions.my-service: '[{"field":"source-ip",...}]' alb.ingress.kubernetes.io/group.name: my-alb-group alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80},{"HTTPS":443}]' alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=150 alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-2016-08 alb.ingress.kubernetes.io/ssl-redirect: "443" alb.ingress.kubernetes.io/target-type: ip kubernetes.io/ingress.class: alb # 添加这个注解跳过默认路径条件 alb.ingress.kubernetes.io/skip-default-path-condition: "true" name: my-ingress namespace: my-namespace spec: rules: - host: blabla.mycompany.com http: paths: - backend: service: name: my-service port: number: 80 pathType: ImplementationSpecific
原理说明
alb.ingress.kubernetes.io/skip-default-path-condition注解会告诉ALB Ingress Controller:不要为Ingress的路径配置自动生成对应的ALB规则条件。此时控制器只会基于Ingress的host字段生成主机头条件,再加上你通过conditions.my-service定义的4个额外条件,总条件数刚好为5,不会触发ALB的规则条件数限制。
内容的提问来源于stack exchange,提问作者uylmz
相关产品推荐
相关产品推荐

