InstallCluster
Public DNS

An Octelium Cluster requires public DNS to receive requests publicly over the internet for its public Services (read more here) and public anonymous Services (read more here). Since the Octelium Cluster uses a Kubernetes ingress to receive requests from the internet, all you need to do is to point your Services to that Kubernetes ingress public IP address.

You can get that public IP address once the Cluster is installed. The Cluster installs its own ingress during installation via an LoadBalancer kubernetes service that is used by a component called Ingress.

NOTE

Managed Kubernetes deployments (e.g. AWS EKS, Linode LKE, etc...) automatically initialize a managed load balancer with a public IP address within seconds after the creation of LoadBalancer services.

Once the Cluster is installed, you will be able to obtain that IP address by using the kubectl get svc -n octelium octelium-ingress-dataplane command as follows:

# We obtain the public IP address used by the ingress service `octelium-ingress-dataplane`
# in the `octelium` namespace
kubectl get svc -n octelium octelium-ingress-dataplane
# The IP address is located in the `EXTERNAL-IP` field
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
octelium-ingress-dataplane LoadBalancer 1.2.3.4 <IP_ADDRESS_HERE> 443:32180/TCP 8h

Once you obtain that IP address value, you can use it in your DNS provider (e.g. Cloudflare, GoDaddy, Namecheap, etc...) to set public DNS entries to point all of your Cluster's public Services to that public IP address. You need to add 2 DNS entries to be able to use the Cluster after installation:

  • An A entry to resolve <DOMAIN> to the VM/VPS's public IP address as follows:
Entry FieldValue
TypeA
Name / Host<DOMAIN>
Value<PUBLIC_IP_ADDRESS>
  • A CNAME entry resolving the wildcard domain *.<DOMAIN> to <DOMAIN>. This entry effectively resolves all of the <DOMAIN> sub-domains to the VM/VPS public IP address. You simply need to set your CNAME DNS entry as follows:
Entry FieldValue
TypeCNAME
Name / Host*.<DOMAIN>
Value<DOMAIN>

QUIC Mode

Octelium uses WireGuard by default for tunneling the traffic between the Cluster and clients. This is the default and extremely recommended way. Moreover, Octelium currently supports a very experimental QUIC-based tunneling mode. Unlike in WireGuard where clients address the Cluster's Gateways directly by their IP addresses, QUIC uses TLS via the Cluster domain TLS certificate. Therefore, the octelium client addresses a Gateway's QUIC server by the public hostname of that Gateway assigned automatically by the Cluster. In other words, you need to create a public A or AAAA DNS record for every Gateway in order to be addressed publicly by the octelium clients. You can find the hostname used by a specific Gateway provided in the status.hostname field as well as the public IP addresses of that Gateway provided in the status.publicIPs[] array. Here is an example:

First, you might want to list the Cluster's Gateways as follows:

octeliumctl get gw

Then once you you get the specific Gateway name, you can use it to get more information about it as follows:

octeliumctl get gw <GATEWAY_NAME> -o yaml

Now you can find in the hostname field in status.hostname in the YAML output of the above command as follows:

1
apiVersion: core/v1
2
kind: Gateway
3
#....
4
status:
5
hostname: _gw-wa5us38r.example.com
6
# ....
7
publicIPs:
8
- 1.2.3.4

Once you obtain the hostname and public IP addresses of a certain Gateway, use them to create A or AAAA DNS records in your public DNS provider.

© 2025 octelium.comOctelium Labs, LLCAll rights reserved
Octelium and Octelium logo are trademarks of Octelium Labs, LLC.
WireGuard is a registered trademark of Jason A. Donenfeld