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:
- Use kubectl to access the cluster. For details, see Accessing a Cluster Using kubectl.
- 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.
- 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
- 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
- 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
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.