如何通过Ingress.yaml配置实现AWS ALB+CloudFront暴露EKS服务
配置AWS ALB Ingress实现基于自定义Header的请求转发
要解决手动配置ALB规则易丢失的问题,你可以通过AWS ALB Ingress Controller的自定义动作和条件规则,直接在Ingress YAML中定义基于X-Custom-Header的转发逻辑,确保配置持久化且随Ingress同步更新。
修改后的完整Ingress配置
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-southeast-1:xxxx:certificate/daxxx-xxx-43c8-ada-cb5c97a1366b alb.ingress.kubernetes.io/group.name: domain-web alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]' alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/ssl-redirect: "443" alb.ingress.kubernetes.io/target-type: ip # 定义自定义转发动作:指向marketing服务的Target Group alb.ingress.kubernetes.io/actions.forward-to-marketing: | { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "ServiceName": "marketing", "ServicePort": "3000", "Weight": 100 } ] } } finalizers: - group.ingress.k8s.aws/domain-web labels: app.kubernetes.io/instance: domain-web app.kubernetes.io/name: domain-web name: domain-web spec: ingressClassName: alb rules: - host: market.domain.com http: paths: - pathType: ImplementationSpecific path: /* # 使用自定义转发动作替代直接指定backend backend: service: name: forward-to-marketing port: name: use-annotation # 添加Header匹配条件:仅当X-Custom-Header等于cloudfront-header时触发此规则 conditions: - type: HttpHeader httpHeaderConfig: headerName: X-Custom-Header values: - cloudfront-header # 可选:添加默认规则处理无匹配Header的请求(示例返回403) - pathType: ImplementationSpecific path: /* backend: service: name: return-403 port: name: use-annotation --- # 定义返回403的自定义动作(配合默认规则使用) apiVersion: v1 kind: Service metadata: annotations: alb.ingress.kubernetes.io/actions.return-403: | { "Type": "fixed-response", "FixedResponseConfig": { "ContentType": "text/plain", "MessageBody": "Forbidden", "StatusCode": "403" } } name: return-403 spec: type: ClusterIP ports: - port: 80 targetPort: 80
关键配置说明
自定义转发动作
通过alb.ingress.kubernetes.io/actions.forward-to-marketing注解定义转发逻辑,明确指向marketing服务及3000端口,权重设为100(即100%转发)。该注解会被ALB Ingress Controller转换成对应的Target Group关联规则。Header匹配条件
在path规则中添加conditions字段,指定仅当请求携带X-Custom-Header: cloudfront-header时,才触发该转发规则,确保只有CloudFront转发的请求能访问你的Kubernetes服务。默认规则(可选)
新增return-403服务及对应注解,定义固定返回403的动作,用于拦截非CloudFront来源的请求,避免未授权访问。
验证配置
应用修改后的Ingress YAML后,ALB Ingress Controller会自动更新ALB的规则。你可以在AWS控制台的ALB规则页面看到自动创建的Header匹配规则,替代之前的手动配置,后续Ingress变更时规则会同步更新,不会丢失。
内容的提问来源于stack exchange,提问作者Ash
相关产品推荐
相关产品推荐

