Introduction Hey, welcome back to my ultimate Kubernetes tutorials! So far, we've explored ClusterIP and NodePort, but what if you need to route traffic outside your cluster or expose your app with a real external IP? That’s where ExternalName and LoadBalancer services come in. ExternalName lets your pods seamlessly connect to external services using DNS, while LoadBalancer provides a publicly accessible endpoint for your app. In this post, we’ll break down how they work, when to use them, and how to configure them in your Kubernetes cluster. Let’s dive in! 🚀 Exploring ExternalName Service Okay, we're still in my nginx/testpod environment in namespace service-type-test In our last post, we have ClusterIP running, let's delete it to get a clean environment to start: kubectl apply -f /home/admin/nginx-deployment/nginx-clusterip-service.yaml kubectl get service -n service-type-test -o wide You should not see any service is running in above output. Now, let's work on ExternalName! Creating an ExternalName service is simpler than creating NodePort or ClusterIP , a little bit... create a file /home/admin/nginx-deployment/nginx-externalname-service.yaml: apiVersion: v1 kind: Service metadata: name: nginx-service namespace: service-type-test spec: type: ExternalName externalName: my-nginx.external.local Unlike ClusterIP, NodePort, LoadBalancer, or Headless services, this service does not select backend pods. Instead, it just creates a DNS alias that redirects traffic to an external hostname. So: No selector needed → It does not route traffic to Kubernetes pods. No labels needed → There’s no pod matching required since it’s just a DNS pointer. It simply returns the CNAME record when queried inside the cluster. Simpler on Kubernetes side, but more manual steps on your own side…