Kuma DNS
To enable the redirection of the DNS requests for the .mesh
DNS zone (the default), within a Kubernetes, use kumactl install dns | kubectl apply -f -
. This invocation of kumactl
expects to find the environment variable KUBECONFIG
set, so it can fetch the active Kubernetes DNS server configuration. Once this is done, kumactl install dns
will output a patched resource ready to be applied through kubectl apply
. Since this is a modification to system resources, it is strongly recommended that you first inspect the resulting configuration.
is recognizing and supports the major flavors of CoreDNS as well as Kube DNS resources.
The typical environment where Kuma DNS will be used is Kubernetes. It leverages the transparent proxy by default, which is a strict requirement for utilizing the Kuma DNS virtual IPs (VIP). In the future, Kuma will provide DNS support in Universal mode too.
Kuma DNS can be configured by the configuration file, or by the respective environment variables as follows:
The port
can set the port on which the Kuma DNS is accepting requests. Changing this value on Kubernetes shall be reflected in the respective port setting in the kuma-control-plane
service.
The CIDR
field sets the IP range of virtual IPs. The default 240.0.0.0/4
is reserved for future use IPv4 range and is guaranteed to be non-routable. We strongly recommend to not change this, unless it is needed.
The basic operation of Kuma DNS includes a couple of main components: DNS server, VIPs allocator, cross-replica persistence.
The DNS server listens on port and reponds for type A
DNS requests and answers with A
record, e.g. <service>.mesh. 60 IN A 240.0.0.100
. The default TTL is set to 60 seconds, to ensure the client will synchronize with Kuma DNS and account for any changes happening meanwhile.
Kuma DNS is not a service discovery mechanism, instead it returns a single VIP, mapped to the relevant service in the mesh. This makes for a unified view of all services within the zone or cross-zones.
Consuming a service handled by Kuma DNS from inside a Kubernetes container is based on the automatically generated kuma.io/service
tag. The resulting domain name has the format {service tag}.mesh
, for example:
Alternatively, a DNS standards compliant name is available, where the underscores in the service name are replaced with dots. The above example can be rewritten as follows:
Since the default VIP created listeners will default to port 80
, it can be omitted when using a standard HTTP client.