ALB Ingress支持自定义转发规则。转发规则包含转发条件和转发动作。您可以自定义转发条件,指定请求的域名、路径、请求头、查询字符串、请求方法、Cookie、源IP等。您也可以自定义转发动作,配置固定响应、重定向、插入请求头、删除请求头、流量镜像、转发至后端多服务器组和重写。您可通过控制台或在Ingress资源中通过配置Annotations字段来配置自定义转发规则。
场景索引
| 自定义规则 | 适用场景 | 
| 转发条件 | |
| 转发动作 | |
| 转发条件与动作实践 | 
前提条件
已安装ALB Ingress Controller组件,且组件为v2.5.0及以上版本。具体操作,请参见管理组件。
转发条件
- 转发规则的条件条目上限为10个,一旦达到规定数量上限,您将无法再添加更多的条件。 
- 转发条件ResponseHeader和ResponseStatusCode仅在自定义响应方向转发规则中有效。 
转发条件介绍
ALB Ingress支持在alb.ingress.kubernetes.io/conditions.<Service的名称>注解中配置转发条件。不同的路由规则块之间是与的关系,同一个路由规则块中的值是或的关系,例如,如果是两个不同的Header规则块,那么这两个规则块是与的关系,但是同一个Header规则块中设置的值是或的关系。详细的路由规则说明如下。
| 转发条件 | 描述 | 
| 域名 | 匹配请求域名,只有正确的域名的请求才能访问服务。示例如下。 
 | 
| 路径 | 匹配请求路径,只有正确的路径的请求才能访问服务。示例如下。 
 | 
| Header | 匹配请求Header,只有正确的Header的请求才能访问服务。示例如下。 
 | 
| 查询字符串 | 匹配查询字符串, 只有包含正确的查询字符串的请求才能访问服务。示例如下。 
 | 
| 请求方法 | 匹配请求方法,只有正确的请求方法的请求才能访问服务。示例如下。 
 | 
| Cookie | 匹配Cookie,只有包含正确的Cookie的请求才能访问服务。示例如下。 
 | 
| SourceIP | 匹配请求源IP,只有正确的源IP的请求才能访问服务。示例如下。 
 | 
| ResponseHeader | 匹配响应Header,只对携带正确的Header的响应执行转发动作。示例如下。 
 | 
| ResponseStatusCode | 匹配响应状态码,只有返回正确的状态码才能访问服务。示例如下。 
 | 
场景一:基于SourceIP和Header实现流量分发
同一条转发规则的自定义条件设置的SourceIp数量限制为5个。
以下代码块定义了当请求的IP、Header和路径符合配置时,才能实现目标流量分发。
即当请求源IP为192.168.0.0/16或172.16.0.0/16中的IP地址,请求Header中包含gray-hello,值必须为value1或value2,请求路径为/hello,请求才能路由到gray-hello服务,否则将路由到其他服务。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/order: "1"
   alb.ingress.kubernetes.io/conditions.gray-hello: |
     [{
       "type": "Header",
       "headerConfig": {
          "key":"gray-hello",
           "values": [
              "value1",
              "value2"
           ]
       }
      },
      {
         "type": "SourceIp",
         "sourceIpConfig": {
           "values": [
             "192.168.0.0/16",
             "172.16.0.0/16"
           ]
         }
     }]
  name: gray-hello
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /hello
        pathType: ImplementationSpecific
        backend:
          service:
            name: gray-hello
            port:
              number: 88alb.ingress.kubernetes.io/order:标识Ingress的优先级,数字越小,优先级越高。
场景二:基于域名、请求方法、Cookie实现流量分发
以下代码块定义了只有当请求的域名、请求方法和Cookie符合配置时,才能实现目标流量分发。
即当请求方法为GET或HEAD,请求域名为example.com或*.edu,请求Cookie的键为cookiekey1,值为cookievalue1,请求路径为/test时,请求才能路由到service-a服务,否则将路由到service-b服务。
基于域名的转发规则支持泛域名匹配。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: |
     [{
       "type": "Cookie",
       "cookieConfig": {
         "values": [
           {
             "key":"cookiekey1",
             "value":"cookievalue1"
           }
        ]
       }
      },
      {
       "type": "Method",
       "methodConfig": {
         "values": [
           "GET",
           "HEAD"
         ]
       }
      },
     {
       "type": "Host",
       "hostConfig": {
           "values": [
              "example.com",
              "*.edu" 
           ]
       }
      }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88场景三:基于查询字符串、多个Header、多个路径实现流量分发
以下代码块定义了只有当请求的查询字符串、Header、路径符合配置时,才能实现目标流量分发。
即当请求路径是/pathvalue1、/pathvalue2或/test,查询字符串的键为querystringkey1,值为querystringvalue2,请求Header中必须包含headerkey1和headerkey2,请求Header中包含headerkey1,值必须为headervalue1或headervalue2,请求Header包含headerkey2,值必须为headervalue3或headervalue4,才能路由到service-a服务,否则将路由到service-b服务。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: |
     [{
       "type": "Path",
       "pathConfig": {
           "values": [
              "/pathvalue1",
              "/pathvalue2"
           ]
       }
      },
      {
       "type": "QueryString",
       "queryStringConfig": {
         "values": [
           {
             "key":"querystringkey1",
             "value":"querystringvalue2"
           }
        ]
       }
      },
     {
       "type": "Header",
       "headerConfig": {
          "key":"headerkey1",
           "values": [
              "headervalue1",
              "headervalue2"
           ]
       }
     },
     {
       "type": "Header",
       "headerConfig": {
          "key":"headerkey2",
           "values": [
              "headervalue3",
              "headervalue4"
           ]
       }
     }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88转发动作
转发动作介绍
ALB Ingress支持使用alb.ingress.kubernetes.io/actions.<服务名称>注解配置请求方向和响应方向的转发动作。支持固定响应、重定向、插入请求头、删除请求头、流量镜像、转发至后端多服务器组和重写。通过定义这些转发动作,您可以在ALB Ingress中灵活地管理请求和响应的转发规则。
- alb.ingress.kubernetes.io/actions.<服务名称>确保注解中的服务名称与- rule字段- backend下的服务名称一致。
- 确保在同一条转发规则中,只使用重定向、固定响应、转发至多服务器组等其中一种终结类型的转发动作。 
- 配置重定向、固定响应、转发至多服务器组时, - rule字段- backend下的servicePort的名称必须为use-annotation。
请求方向的转发动作
| 转发动作 | 描述 | 
| 固定响应 | 设置通过ALB给客户端返回固定响应内容,可以设置响应状态码,正文内容和正文类型。示例如下。 
 | 
| 重定向 | 通过HTTP 3xx状态码,指导客户端跳转到其他地址访问服务。示例如下。 重要  除了httpCode,重定向的其他参数不能都设置为默认值。 
 | 
| 流量镜像 | 设置流量镜像转发服务器组ID,将复制请求转发至流量镜像服务器组。示例如下。 重要  
 
 | 
| 转发至后端多服务器组 | 设置将ALB请求转发至后端多个服务器组,可以通过ServerGroupID指定后端挂载的服务器组,也可以通过ServiceName+ServicePort创建或挂载服务器组。可以设置请求转发至各后端服务器组的权重,也支持开启服务器组间会话保持。 重要  
 
 | 
| 重写 | 设置ALB支持重写,将覆盖请求的域名、路径和查询字符串。示例如下。 重要  
 
 更多Rewrite重写规则,请参见支持Rewrite重写。 | 
| 插入请求头 | 设置头字段名称和头字段内容,将覆盖请求中已有的头变量。示例如下。 
 | 
| 删除请求头 | 删除头字段名称和头字段内容。示例如下。 type:转发动作类型,设置为RemoveHeader,表示配置删除请求头。 key:请求头的字段名称。 | 
| QPS限速 | 设置ALB的转发规则时,可以同时配置总体请求速率限制和基于客户端源IP的请求速率限制。 具体配置示例如下: 重要  
 
 | 
响应方向的转发动作
| 转发动作 | 描述 | 
| 插入请求头 | 设置头字段名称和头字段内容,将覆盖请求中已有的头变量。示例如下。 
 | 
| 删除请求头 | 删除头字段名称和头字段内容。示例如下。 type:转发动作类型,设置为 key:请求头的字段名称。 | 
场景一:设置固定响应503状态码和内容
控制台
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。 
- 在路由页面,单击创建 Ingress,在创建 Ingress对话框配置路由。 - 配置项 - 说明 - 示例值 - 网关类型 - 可按需选择ALB Ingress、MSE Ingress和Nginx Ingress三种网关类型。 - 关于三种网关的差异,请参见Nginx Ingress、ALB Ingress和MSE Ingress对比。 - ALB应用型负载均衡 - 名称 - 自定义路由名称。 - ingress - Ingress Class - 选择关联AlbConfig的资源类。 - alb - 规则 - 单击+ 添加规则可新增多个路由规则。 - 域名:自定义域名。 
- 路径映射:配置如下配置项。 - 路径:指定服务访问的URL路径。 
- 匹配规则: - 前缀匹配(Prefix):匹配请求URL路径的前缀部分。 
- 完整匹配(Exact):完全匹配请求URL路径。 
- 默认(ImplementationSpecific):由Ingress控制器实现的具体逻辑决定。 
 - 更多详情请参见基于URL路径转发请求。 
- 服务名称:选择目标服务,即K8s内的Service。 
- 端口:选择服务需要暴露的端口。 
 
- Ingress支持同一个域名下配置多条路径。单击+ 添加路径新增路径。 
 - 域名:不填写 
- 路径映射: - 路径:/ 
- 匹配规则:默认(前缀匹配Prefix) 
- 服务名称:response-503 
- 端口:80 
 
 - 自定义转发规则 - 开启自定义转发规则,可精细化管理入站流量。 说明- 转发规则的条件条目上限为10个。 - 在转发条件下拉框中选择: - 域名: - 匹配请求域名,如果设置了多个域名,则域名之间是或的关系。设置后会添加注释 - alb.ingress.kubernetes.io/conditions.host-example。
- 路径: - 匹配请求路径,如果设置了多个路径,则路径之间是或的关系。设置后会添加注释 - alb.ingress.kubernetes.io/conditions.path-example。
- HTTP标头: - 以键值对形式匹配请求的头部信息。例如,键是: - headername值是:- headervalue1。如果设置了多个Header值,则Header之间是或的关系。设置后会添加注释- alb.ingress.kubernetes.io/conditions.http-header-example。
 
- 在转发动作下拉框中选择: - 返回固定响应 - 设置通过ALB给客户端返回固定响应内容,可以设置响应状态码,正文内容和正文类型。按需求配置响应状态码,响应正文类型(可选)、响应正文(可选)。 - 响应正文类型: - text/plain:表示无格式的内容类型。 
- text/css:表示XML格式的内容。 
- text/html:表示HTML格式的内容。 
- application/javascript:表示JavaScript格式的内容。 
- application/json:表示JSON格式内容类型。 
 
 - 转发条件:选择路径。(保持默认) 
- 转发动作:返回固响应 - 响应状态码:503 
- 响应正文类型(可选):text/plain 
- 响应正文(可选):error 
 
 - 其他配置保持默认。 
- 配置成功后,单击确定。 
kubectl
以下代码块定义了请求服务时,将返回503状态码和503 error text。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.response-503: |
      [{
          "type": "FixedResponse",
          "FixedResponseConfig": {
              "contentType": "text/plain",
              "httpCode": "503",
              "content": "503 error text"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: response-503
                port:
                  name: use-annotation # servicePort的名称必须为use-annotation。场景二:使用301重定向到HTTPS端口
以下代码块定义了请求服务时,将重定向到服务的HTTPS端口。
重定向
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.redirect: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "${host}",
              "path": "${path}",
              "port": "443",
              "protocol": "https",
              "query": "${query}",
              "httpCode": "301"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: redirect
                port:
                  name: use-annotation # servicePort的名称必须为use-annotation。多重定向
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.redirect-1: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "${host}",
              "path": "${path}",
              "port": "443",
              "protocol": "https",
              "query": "${query}",
              "httpCode": "301"
          }
      }]
    alb.ingress.kubernetes.io/actions.redirect-2: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
          "host": "${host}",
          "path": "${path}",
          "port": "443",
          "protocol": "https",
          "httpCode": "301"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: redirect
                port:
                  name: use-annotation # servicePort的名称必须为use-annotation。场景三:插入source: alibaba请求头
以下代码块定义了请求服务时,将使用source: alibaba覆盖原有请求头。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
  # 注解中的服务为集群中事实存在的服务,且服务名称必须和rule字段backend下的服务名称一致。
    alb.ingress.kubernetes.io/actions.insert-header: |
      [{
          "type": "InsertHeader",
          "InsertHeaderConfig": {
              "key": "source",
              "value": "alibaba",
              "valueType": "UserDefined"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: insert-header
                port:
                  number: 80场景四:流量镜像至服务器组
以下代码块定义了请求服务时,将请求复制到流量镜像服务器组
登录应用型负载均衡ALB控制台,在左侧导航栏选择,在服务器组页面获取服务器组ID。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: traffic-mirror-ingress
  annotations:
  # mirror-svc必须为下方填入的backend.service之一。
  # ALB Ingress会将转发至mirror-svc的流量镜像到"ServerGroupID"中填入的后端服务器
  # 如果有多个Serice需要配置流量镜像,请为每个Service分别填写一条annotation
   alb.ingress.kubernetes.io/actions.mirror-svc: |
       [{
           "type": "TrafficMirror",
           "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
       }]
spec:
  ingressClassName: alb
  rules:
   - host: demo.domain.ingress.top
     http:
      paths:
      - path: /test
        pathType: Prefix
        backend:
          service:
            name: mirror-svc
            port:
              number: 80场景五:请求转发至多个后端服务器组
控制台
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。 
- 在路由页面,单击创建 Ingress,在创建 Ingress对话框配置路由。 - 配置项 - 说明 - 示例值 - 网关类型 - 可按需选择ALB Ingress、MSE Ingress和Nginx Ingress三种网关类型。 - 关于三种网关的差异,请参见Nginx Ingress、ALB Ingress和MSE Ingress对比。 - ALB应用型负载均衡 - 名称 - 自定义路由名称。 - forward-ingress - Ingress Class - 选择关联AlbConfig的资源类。 - alb - 规则 - 单击+ 添加规则可新增多个路由规则。 - 域名:自定义域名。 
- 路径映射:配置如下配置项。 - 路径:指定服务访问的URL路径。 
- 匹配规则: - 前缀匹配(Prefix):匹配请求URL路径的前缀部分。 
- 完整匹配(Exact):完全匹配请求URL路径。 
- 默认(ImplementationSpecific):由Ingress控制器实现的具体逻辑决定。 
 - 更多详情请参见基于URL路径转发请求。 
- 服务名称:选择目标服务,即K8s内的Service。 
- 端口:选择服务需要暴露的端口。 
 
- Ingress支持同一个域名下配置多条路径。单击+ 添加路径新增路径。 
 - 域名:demo.domain.ingress.top 
- 路径映射: - 路径:/path 
- 匹配规则:默认(前缀匹配Prefix) 
- 服务名称:forward 
- 端口:80 
 
 - 自定义转发规则 - 开启自定义转发规则,可精细化管理入站流量。 说明- 转发规则的条件条目上限为10个。 - 在转发条件下拉框中选择: - 域名: - 匹配请求域名,如果设置了多个域名,则域名之间是或的关系。设置后会添加注释 - alb.ingress.kubernetes.io/conditions.host-example。
- 路径: - 匹配请求路径,如果设置了多个路径,则路径之间是或的关系。设置后会添加注释 - alb.ingress.kubernetes.io/conditions.path-example。
- HTTP标头: - 以键值对形式匹配请求的头部信息。例如,键是: - headername值是:- headervalue1。如果设置了多个Header值,则Header之间是或的关系。设置后会添加注释- alb.ingress.kubernetes.io/conditions.http-header-example。
 
- 在转发动作下拉框中选择: - 转发至 - 转发到后端多服务器组。在服务名称中,请选择目标服务。在端口中,选择目标端口号。然后自定义配置权重值。 说明- 如果是Flannel网络插件集群则不支持ClusterIP类型服务。 
- 选择转发至,就不需要配置规则中的路径映射。 
 
 - 转发条件:选择域名。域名:demo.domain.ingress.top 
- 转发动作:转发至 - 服务名称:tea-svc 
- 端口:80 
- 配置权重:80 
 
- 添加服务 - 服务名称:coffee-svc 
- 端口:80 
- 配置权重:20 
 
 - 其他配置保持默认。 
- 配置完成,在创建Ingress页面的左下角,单击确定。 
kubectl
以下代码块定义了请求服务时,将请求转发至集群内的多个服务。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: forward-ingress
  annotations:
  # 注解中的服务为集群中事实存在的服务,且服务名称必须和rule字段backend下的服务名称一致。
    alb.ingress.kubernetes.io/actions.forward: |
       [{
           "type": "ForwardGroup",
           "ForwardConfig": {
             "ServerGroups" : [{
               "ServiceName": "tea-svc",
               "Weight": 80,
               "ServicePort": 80
             },
             {
               "ServiceName": "coffee-svc",
               "Weight": 20,
               "ServicePort": 80
             }]
           }
       }]
spec:
  ingressClassName: alb
  rules:
   - host: demo.domain.ingress.top
     http:
      paths:
      - path: /path
        pathType: Prefix
        backend:
          service:
            name: forward
            port:
              name: use-annotation # servicePort的名称必须为use-annotation。场景六:重写请求配置信息
以下代码块定义了请求服务时,重写请求的域名、路径和查询字符串。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/actions.rewrite: |
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "demo.domain.ingress.top",
               "Path": "/test",
               "Query": "querystring"
           }
       }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: rewrite
                port: 
                  number: 80场景七:基于ResponseHeader对响应方向的请求头进行修改
- 自定义的ALB ingress转发规则在默认情况下为请求方向,如果您希望创建响应方向的转发规则,则需要将注解项 - alb.ingress.kubernetes.io/rule-direction.<Service的名称>配置为Response(该注解项默认配置为Request)。
- 当创建响应方向的转发规则时, - ingressSpec.rules.backend字段下的- servicePort的名称必须为- use-annotation。
以下代码块定义了当匹配到ResponseHeader时,即Header中包含response-hello,值必须为value1或value2,那么将在Header中插入新的请求头source: alibaba。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/rule-direction.response-header: Response
   alb.ingress.kubernetes.io/conditions.response-header: |
     [{
         "type": "ResponseHeader",
         "responseHeaderConfig": {
            "key": "response-hello",
            "values": [
               "value1",
               "value2"
            ]
         }
     }]
   alb.ingress.kubernetes.io/actions.response-header: |
     [{
         "type": "InsertHeader",
         "InsertHeaderConfig": {
             "key": "source",
             "value": "alibaba",
             "valueType": "UserDefined"
         }
     }]
  name: response-header
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-header
            port:
              name: use-annotation # servicePort的名称必须为use-annotation。场景八:基于响应状态码对响应方向的请求头进行修改
- 自定义的ALB ingress转发规则在默认情况为请求方向,如果您希望创建响应方向的转发规则,则需要将注解项 - alb.ingress.kubernetes.io/rule-direction.<Service的名称>配置为Response(该注解项默认配置为Request)。
- 当创建响应方向的转发规则时, - ingressSpec.rules.backend字段下的- servicePort的名称必须为- use-annotation。
以下代码块定义了仅当响应状态码为200或300时,才会对请求头执行移除操作(将response-hello从请求Header中移除)。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/rule-direction.response-hello: Response
   alb.ingress.kubernetes.io/conditions.response-hello: |
     [{
       "type": "ResponseStatusCode",
       "responseStatusCodeConfig": {
         "values": [
             "200",
             "300"
         ]
       }
     }]
   alb.ingress.kubernetes.io/actions.response-hello: |
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "response-hello"
         }
     }]
  name: response-hello
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /*
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-hello
            port:
              name: use-annotation # servicePort的名称必须为use-annotation。转发条件与动作实践
场景一:基于域名的转发条件和动作,转发至指定的服务
在本节中,介绍如何在ACK控制台中,通过基于域名的转发条件和配置相应的转发动作,将流量转发至指定的服务。
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。 
- 在路由页面,单击创建 Ingress,在创建 Ingress对话框配置路由。 - 配置项 - 说明 - 示例值 - 网关类型 - 可按需选择ALB Ingress、MSE Ingress和Nginx Ingress三种网关类型。 - 关于三种网关的差异,请参见Nginx Ingress、ALB Ingress和MSE Ingress对比。 - ALB应用型负载均衡 - 名称 - 自定义路由名称。 - alb_ingress - Ingress Class - 选择关联AlbConfig的资源类。 - alb - 规则 - 单击+ 添加规则可新增多个路由规则。 - 域名:自定义域名。 
- 路径映射:配置如下配置项。 - 路径:指定服务访问的URL路径。 
- 匹配规则: - 前缀匹配(Prefix):匹配请求URL路径的前缀部分。 
- 完整匹配(Exact):完全匹配请求URL路径。 
- 默认(ImplementationSpecific):由Ingress控制器实现的具体逻辑决定。 
 - 更多详情请参见基于URL路径转发请求。 
- 服务名称:选择目标服务,即K8s内的Service。 
- 端口:选择服务需要暴露的端口。 
 
- Ingress支持同一个域名下配置多条路径。单击+ 添加路径新增路径。 
 - 域名:*.example.com 
- 路径映射: - 路径:/tes 
- 匹配规则:默认(ImplementationSpecific) 
- 服务名称:tea-svc 
- 端口:80 
 
 - 自定义转发规则 - 开启自定义转发规则,可精细化管理入站流量。 说明- 转发规则的条件条目上限为10个。 - 在转发条件下拉框中选择: - 域名: - 匹配请求域名,如果设置了多个域名,则域名之间是或的关系。设置后会添加注释 - alb.ingress.kubernetes.io/conditions.host-example。
- 路径: - 匹配请求路径,如果设置了多个路径,则路径之间是或的关系。设置后会添加注释 - alb.ingress.kubernetes.io/conditions.path-example。重要- 设置路径转发条件后,控制台将会在Ingress中自动添加一条路径为 - /created-by-<ALB-ID>的转发规则。
- HTTP标头: - 以键值对形式匹配请求的头部信息。例如,键是: - headername值是:- headervalue1。如果设置了多个Header值,则Header之间是或的关系。设置后会添加注释- alb.ingress.kubernetes.io/conditions.http-header-example。
 
- 在转发动作下拉框中选择: - 转发至 - 转发到后端多服务器组。在服务名称中,请选择目标服务。在端口中,选择目标端口号。然后自定义配置权重值。 说明- 如果是Flannel网络插件集群则不支持ClusterIP类型服务。 
- 选择转发至,就不需要配置规则中的路径映射。 
 
 
 - 转发条件:选择域名、路径及HTTP标头。 - 域名:是example.com,单击添加域名,或test.com。 
 
- 转发动作:选择转发至。 - 服务名称:tea-svc 
- 端口:80 
- 权重:100 
 
 - 其他配置,保持默认。 
- 配置完成,在创建Ingress页面的左下角,单击确定。