Unlike the mechanisms discussed so far, Ingress is not a service type, but a separate Kubernetes resource that sits in front of Services and acts as a smart router and entry point to the cluster. Ingress typically provides HTTP-based access to Services through externally reachable URLs, load balancing, SSL termination, and name-based virtual hosting, but there are also other specialized Ingress implementations. For Ingress to work, the cluster must have one or more Ingress controllers running. A simple Ingress that exposes a single Service is shown in Example 12-8. Depending on the infrastructure Kubernetes is running on, and the Ingress controller implementation, this definition allocates an externally accessible IP address and exposes the  random-generator  Service on port 80. But this is not very different from a Service with  type: LoadBalancer , which requires an external IP address per Ser‐ vice definition. The real power of Ingress comes from reusing a single external load balancer and IP to service multiple Services and reduce the infrastructure costs. A simple fan-out configuration for routing a single IP address to multiple Services based on HTTP URI paths looks like Example 12-9. Example 12-9. An Ingress definition with mappings Example 12-8. A sinmple Ingress definition apiVersion : extensions/v1beta1 kind : Ingress metadata : name : random-generator spec : backend : serviceName : random-generator servicePort : 8080 apiVersion : extensions/v1beta1 kind : Ingress metadata : name : random-generator annotations : nginx.ingress.kubernetes.io/rewrite-target : / spec : rules : -  http : paths : -  path : / backend : serviceName : random-generator servicePort : 8080 Solution  |  111 Application Layer Service Discovery