Kubernetes ExternalName Services
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Kubernetes, an open-source platform for automating the deployment, scaling, and operation of application containers, supports a variety of Service types to route traffic to pods. One such type is the ExternalName Service, which can be used to proxy connections to an external service outside of the Kubernetes cluster. Let’s dive deep into the specifics of Kubernetes ExternalName Services, including technical explanations and usage examples.
Understanding Kubernetes Services
Before delving into ExternalName Services, it’s essential to understand services in Kubernetes. A Service is an abstraction which defines a logical set of Pods and a policy by which to access them. Kubernetes supports different types of Services:
- ClusterIP: The default type, exposing the service only within the cluster.
- NodePort: Exposes the service on each Node's IP at a static port.
- LoadBalancer: Exposes the service externally using a cloud provider’s load balancer.
- ExternalName: Maps a service to a DNS name, which is resolved externally.
What are ExternalName Services?
An ExternalName Service is a special type of Kubernetes Service that points to a DNS name instead of creating a cluster-internal endpoint. Unlike ClusterIP, NodePort, or LoadBalancer, ExternalName Services do not have associated cluster IPs or selectors. Instead, they map a service reference to a different, external DNS name.
Key Characteristics of ExternalName Services:
- Maps service to an external domain.
- Does not allocate a cluster-internal IP.
- Does not need to define specific ports or protocol.
- Ideal for accessing services outside the cluster without requiring complex routing or LoadBalancers.
How ExternalName Services Work
When a Service of type ExternalName is created, Kubernetes adds a `CNAME` record in the internal DNS, which redirects requests to the specified external DNS name. The client queries the Kubernetes DNS server, which returns the CNAME response that the client can resolve further.
Example Scenario
Suppose an application within a Kubernetes cluster needs to connect with a legacy database outside of the Kubernetes environment. We can use an ExternalName Service to achieve this:
- A Service named `example-external-service` is defined.
- The Service type is set as `ExternalName`.
- `externalName` attribute points to `legacydb.example.com`.
- No Load Balancing: Unlike other Service types, there's no integrated load balancing.
- Limited Protocol Support: Primarily supports DNS-based resolutions; traffic management features are absent.
- Security Considerations: Relying on an external DNS might introduce security issues, especially if DNS queries can be intercepted.
- Accessing External APIs: Use ExternalName Services to authenticate and communicate with third-party APIs.
- Migrating Legacy Systems: Transition services that are outside the cluster while maintaining DNS naming conventions within Kubernetes.
- Simplifying DNS Management: Avoid modifying application configurations when external endpoints change, by just updating the `externalName` in the Service definition.
Related reading
- Kubernetes Externalname working with https
- Kubernetes failed to discover supported resources getsockopt connection refused
- Kubernetes Garbage Collection - no free space
- Kubernetes get nodeport mappings in a pod
- Kubernetes get the full pod name as environment variable
- Kubernetes gives an internal source IP although externalTrafficPolicy is set to Local
- Kubernetes gke get name of pod network interface
- Kubernetes How do I get all pods in a namespace using the python api?

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.