Updated on 2024-06-26 GMT+08:00

Configuring URL Redirection for a LoadBalancer Ingress

Ingress can redirect specific access requests to a specified path. The following is an example of YAML file for configuring an ingress redirection rule. In this example, the request for accessing example.com is redirected to example.com/testa and status code 301 is returned.

Notes and Constraints

  • The advanced forwarding policy of LoadBalancer ingresses is available only to dedicated load balancers.
  • The advanced forwarding policy of LoadBalancer ingresses is available only in clusters of version v1.23.14-r0, v1.25.9-r0, v1.28.4-r0, or later.

Configuring a Rule for Redirecting an Ingress to a URL Using YAML

An ingress can be redirected to a URL using annotations. Example:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-redirect-url
  namespace: default
  annotations:
    kubernetes.io/elb.id: df76342f-e898-402a-bac8-bde5bf974da8
    kubernetes.io/elb.class: performance
    kubernetes.io/elb.port: '80'
    kubernetes.io/elb.redirect-url: https://example.com/testa        # Information about the redirection to a URL
    kubernetes.io/elb.redirect-url-code: '301'     # Code returned after the ingress is redirected to a URL
spec:
  rules:
    - host: "example.com"
      http:
        paths:
          - path: /
            backend:
              service:
                name: test-service
                port:
                  number: 8888
            property:
              ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
            pathType: ImplementationSpecific
  ingressClassName: cce
Table 1 Key parameters

Parameter

Mandatory

Type

Description

kubernetes.io/elb.redirect-url

Yes

String

URL for redirection

Format: A valid URL must start with http:// or https://, for example, https://example.com/.

Parameter: This configuration takes effect on all forwarding rules of a single ingress. After the configuration is deleted, the target URL redirection rule will be automatically cleared.

Either this annotation or the annotation of a grayscale release can be configured.

kubernetes.io/elb.redirect-url-code

No

String

Code returned after an ingress is redirected to a URL.

Format: The return code can be 301, 302, 303, 307, or 308.

Parameter: The default value is 301.

Use curl to verify the redirection, where ${ELB_IP} is the IP address accessed by the target ingress.

# curl -I -H "Host:example.com" {$ELB_IP}

The access path will be redirected to example.com/testa.

HTTP/1.1 301 Moved Permanently
Date: Thu, 07 Mar 2024 11:04:31 GMT
Content-Type: text/html
Content-Length: 134
Connection: keep-alive
Location: https://example.com/testa
Server: elb