You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

关键配置说明

  1. 自定义转发动作
    通过alb.ingress.kubernetes.io/actions.forward-to-marketing注解定义转发逻辑,明确指向marketing服务及3000端口,权重设为100(即100%转发)。该注解会被ALB Ingress Controller转换成对应的Target Group关联规则。

  2. Header匹配条件
    在path规则中添加conditions字段,指定仅当请求携带X-Custom-Header: cloudfront-header时,才触发该转发规则,确保只有CloudFront转发的请求能访问你的Kubernetes服务。

  3. 默认规则(可选)
    新增return-403服务及对应注解,定义固定返回403的动作,用于拦截非CloudFront来源的请求,避免未授权访问。

验证配置

应用修改后的Ingress YAML后,ALB Ingress Controller会自动更新ALB的规则。你可以在AWS控制台的ALB规则页面看到自动创建的Header匹配规则,替代之前的手动配置,后续Ingress变更时规则会同步更新,不会丢失。

内容的提问来源于stack exchange,提问作者Ash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:25:56