在自建的k8s上用ALB ingress控制器时支持配置根据header、Cookie的转发规则吗?[阿里云负载均衡SLB]

请问在自建的k8s上面使用ALB ingress控制器时支持配置根据header头、Cookie的转发规则吗?在这个 https://github.com/alibaba/alibaba-load-balancer-controller/blob/main/docs/zh/usage.md 文档里面没有看到案例。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
4 条回复 A 作者 M 管理员
  1. 是的,ALB Ingress Controller 支持根据 Header 头和 Cookie 的转发规则。您可以在 Ingress 中使用 annotations 来配置转发规则。下面是一些示例:

    1. 根据 Header 头进行转发:

      apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: my-ingress annotations:   nginx.ingress.kubernetes.io/server-snippet: |     map $http_my_header $my_service {       default my-default-service;       value1 my-service-1;       value2 my-service-2;     }     server {       location / {         proxy_pass http://$my_service;       }     }spec: rules: - host: example.com   http:     paths:     - path: /       pathType: Prefix       backend:         service:           name: my-default-service           port:             name: http

      在上面的示例中,根据 Header 头 my_header 的值来选择不同的后端服务。

    2. 根据 Cookie 进行转发:

      apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: my-ingress annotations:   nginx.ingress.kubernetes.io/server-snippet: |     map $http_cookie $my_service {       default my-default-service;       value1 my-service-1;       value2 my-service-2;     }     server {       location / {         proxy_pass http://$my_service;       }     }spec: rules: - host: example.com   http:     paths:     - path: /       pathType: Prefix       backend:         service:           name: my-default-service           port:             name: http

      在上面的示例中,根据 Cookie 的值来选择不同的后端服务。

    需要注意的是,ALB Ingress Controller 使用的是 Nginx 作为反向代理,因此您需要使用 Nginx 的语法来配置转发规则。另外,ALB Ingress Controller 目前还处于 Beta 版本,一些功能可能还不够完善,建议在生产环境中进行充分测试。

  2. 0

  3. 开源版本控制器还没有完全支持这些能力,可以先看下canary能否满足需求。此回答整理自钉群“ALB客户交流群”

  4. 是的,阿里云负载均衡(ALB)Ingress控制器可以支持根据header、Cookie等转发规则进行配置。

    在使用ALB Ingress控制器时,您可以通过定义Ingress规则来实现根据header、Cookie等转发规则进行转发。具体来说,您需要在Ingress规则中指定目标服务的域名和路径,并使用HTTP请求头或Cookie字段作为转发条件。例如,以下是一个基于header的转发规则示例:

    apiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata:  name: my-ingressspec:  rules:    - host: example.com      http:        paths:          - path: /myapp            pathType: Prefix            backend:              service:                name: myservice                port:                  name: http          - path: /myapp/login            pathType: Prefix            backend:              service:                name: myservice                port:                  name: login            # 使用header字段作为转发条件            headerFields:              - requestHeaders:                - key: X-User-Id                    valueArray: "101,202"                - key: X-Auth-Token                    valueArray: "abc123,xyz456"              - responseHeaders:                - key: Content-Type                    value: "application/json"                # 使用Cookie字段作为转发条件                # cookieKeyName: "XSRF-TOKEN"                # cookieValuePath: "/"

    在上面的示例中,我们定义了两个不同的路由规则,分别使用了HTTP请求头和Cookie字段作为转发条件。其中,requestHeaders字段表示请求头中的字段,responseHeaders字段表示响应头中的字段;而cookieKeyNamecookieValuePath则表示Cookie字段的名称和值的路径。通过这种方式,我们可以根据不同的header、Cookie等转发条件将流量转发到不同的目标服务上。