World map

 

BM: Baca dalam Bahasa Melayu

World K3: Counters & Doors

Gateway API: the main entrance

You will learn: how GatewayClass, Gateway and HTTPRoute let customers in.

Checked with Kubernetes 1.37 on 31 Oct 2026

The problem

You are here: cluster kind-dev namespace default
The shop Service is a ClusterIP. kubectl get gateway finds nothing: there is no entrance. Terminal output: $ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5m21s shop ClusterIP 10.96.127.163 <none> 80/TCP 21s $ kubectl get gateway No resources found in default namespace.

Customers wait on the street. The shop’s order number only works inside. And there is no front door yet.

Watch

Tap each point on the timeline.

Gateway API is the main way in. It has three parts, owned by three teams. Tap each one.

Watch

You are here: cluster kind-dev namespace default
gateway.yaml: a Gateway called entrance, class eg, one HTTP listener on port 80. After apply it has an address and PROGRAMMED True. Terminal output: $ cat gateway.yaml apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: entrance spec: gatewayClassName: eg listeners: - name: http protocol: HTTP port: 80 $ kubectl apply -f gateway.yaml gateway.gateway.networking.k8s.io/entrance created $ kubectl get gateway entrance NAME CLASS ADDRESS PROGRAMMED AGE entrance eg 172.18.0.200 True 0s

A Gateway: The main entrance and its signboards: the way in from the internet. is the main entrance. PROGRAMMED True means the door is built. ADDRESS is where customers knock.

Try it

Build the entrance and one signboard. Then knock from your laptop.

You are here: cluster kind-dev namespace default
Stalls: 3. Trays: 3 (3 ready). Waiting for a stall: 0.
  • shop3/3 ready
dev-control-planeOpenManager

No trays here.

dev-workerOpen
  • shop·cgv72
  • shop·qtdnk
dev-worker2Open
  • shop·csjj6
Time: +0s (sped up)

Watch

Follow one order from the street to a tray. Press Send, or Step for one hop at a time.

Press Send. Watch the request go hop by hop.

  1. BrowserGET / on port 80
  2. Gateway (entrance)entrance listens on :80
  3. HTTPRoute (signboard)/ → shop:80
  4. Service (order number)shop: port 80 → 80
  5. EndpointSlice (ready trays)3 ready of 3
  6. Pod (tray)shop-94c9756fd-8tghh listens on :80

Predict

You delete the HTTPRoute. The Gateway still runs. What does a customer get?

Pick one answer.

Check

Three parts, three teams. Who writes what?

Drag a card into a box. Or tap the card, then tap the box.

        You did it!

        You can now open a main entrance with Gateway API.

        Go deeper (optional)

        Gateway API is not built in. A cluster needs its CRDs plus one controller. Envoy Gateway, Istio, Cilium and NGINX Gateway Fabric are some. Every route here uses gateway.networking.k8s.io/v1. On kind, the Gateway address may need cloud-provider-kind.

        Real rep (optional), on a throwaway kind cluster:

        Real mission

        1. kubectl get gatewayclass
        2. kubectl get gateway

        0 of 4 steps done · Your ticks are saved.