Exposing a Kubernetes Service Using a Custom Domain

Scenario

You have a Kubernetes service and want to expose it using a custom domain (e.g., myapp.example.com). This requires configuring an Ingress controller and setting up DNS properly.

Solution: Using Ingress with a Custom Domain

An Ingress resource allows HTTP and HTTPS traffic routing to your services based on defined rules.

Example: NGINX Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-app
                port:
                  number: 80

Steps to Configure:

  1. Deploy an Ingress Controller (e.g., NGINX, Traefik, HAProxy).
  2. Create an Ingress Resource (as shown above).
  3. Configure DNS: Add an A record pointing myapp.example.com to your cluster’s external IP.

Alternative Solutions

Using Traefik

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-app
                port:
                  number: 80

Using HAProxy Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
spec:
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-app
                port:
                  number: 80

Conclusion

Using an Ingress controller is an effective way to expose services with a custom domain in Kubernetes. Choosing between NGINX, Traefik, or HAProxy depends on your specific needs, such as ease of configuration, performance, and feature set.

Leave a Reply

Your email address will not be published. Required fields are marked *