DNS based GSLB
We have developed deep integrations with Global DNS providers such as NS1 so that customers can benefit from automation for "DNS based Global Server Load Balancing (GSLB)" capabilities.
DNS-based Global Load Balancing involves configuring a domain in the Domain Name System (DNS) such that client requests to the domain are distributed across a group of servers. This facilitates faster access to a domain by providing several IP addresses for a single host or domain name, which routes traffic between two or more servers. DNS-based Load Balancing helps optimize client requests for a specific domain.
Use Cases¶
Geo Steering or Targeting¶
For workloads deployed to multiple, geographically distributed clusters, DNS based GSLB can automatically steer users to the nearest cluster.
Failover¶
For workloads deployed to multiple, geographically distributed clusters, DNS based GSLB can automatically failover user access in case of disruptions to one cluster.
Requirements¶
The use of the built-in DNS based GSLB capability requires the use of the "managed" Ingress Controller.
Wizard based Workloads¶
For wizard based workloads, simply enable the toggle for "DNS based load balancing" as shown in the screenshot below
Yaml or Helm Workloads¶
Workloads based on Helm or k8s yaml can use the provided annotations to fully automate the DNS programming for DNS based GSLB.
annotations:
rafay.dev/dns: "true"
rafay.dev/cname: "<FQDN for Host>.run.rafay-edge.net"
Here is an example yaml for Ingress with the Rafay Annotations for DNS based GSLB.
- The "rafay.dev/dns" annotation can be true or false
- The "rafay.dev/cname" annotation is the CNAME for your Domain
- Ensure that the "host" entry in your Ingress spec matches with the CNAME
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: km-nginx2
annotations:
rafay.dev/dns: "true"
rafay.dev/cname: "alpha-example-com.run.rafay-edge.net"
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- alpha.example.com
secretName: km-tls
rules:
- host: alpha.example.com
http:
paths:
- backend:
serviceName: km-nginx2
servicePort: 80