Updated on 2025-09-05 GMT+08:00

Configuring URL Redirection for a LoadBalancer Ingress

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

Prerequisites

  • A CCE standard cluster is available, and the cluster version meets the following requirements:
    • v1.23: v1.23.14-r0 or later
    • v1.25: v1.25.9-r0 or later
    • v1.27: v1.27.6-r0 or later
    • v1.28: v1.28.4-r0 or later
    • Other clusters of later versions
  • An available workload has been deployed in the cluster for external access. If no workload is available, deploy a workload by referring to Creating a Deployment, Creating a StatefulSet, or Creating a DaemonSet.
  • A Service for external access has been configured for the workload. Services Supported by LoadBalancer Ingresses lists the Service types supported by LoadBalancer ingresses.

Notes and Constraints

  • This feature is only available when dedicated load balancers are used.

Configuring a Rule for Redirecting an Ingress to a URL

You can configure a rule for redirecting an ingress to a URL using either the CCE console or kubectl.

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

  1. Use kubectl to access the cluster. For details, see Accessing a Cluster Using kubectl.
  2. Create a YAML file named ingress-test.yaml. The file name can be customized.

    vi ingress-test.yaml

    An example YAML file of an ingress associated with an existing load balancer is as follows:

    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: 80
                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:

    • HTTPS ingresses: valid URLs starting with https://, for example, https://example.com/
    • HTTP ingresses: valid URLs starting 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.

  3. Create an ingress.

    kubectl create -f ingress-test.yaml

    If information similar to the following is displayed, the ingress has been created:

    ingress/test-redirect-url created

  4. Check the created ingress.

    kubectl get ingress

    If information similar to the following is displayed, the ingress has been created:

    NAME               CLASS    HOSTS         ADDRESS          PORTS   AGE
    test-redirect-url  cce      example.com   121.**.**.**     80      10s

  5. 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