# Exposing a TerdutServer This operator never manages external exposure/ingress for `TerdutServer`, in any form — a permanent non-goal (`DESIGN.md` §1), not a missing feature. Some installs won't expose it outside the cluster at all (see `examples/demo`, which just port-forwards); others will put it behind whatever their cluster already uses. That choice is entirely yours, not the operator's. The only contract the operator gives you to build on: a plain `ClusterIP` Service, named after the `TerdutServer` CR (same name, same namespace), with a port named `http` (`spec.networking.servicePort`, default `8080`). Everything here targets exactly that Service — none of it is applied by `examples/demo`'s `kustomization.yaml`, and none of it depends on anything the operator creates beyond that one Service. Pick whichever matches your cluster: - **`httproute.yaml`** — a [Gateway API](https://gateway-api.sigs.k8s.io/) `HTTPRoute`, attached to a `Gateway` you already have. - **`istio-virtualservice.yaml`** — an Istio `VirtualService`, attached to a `Gateway` (Istio's own CRD, not Gateway API's) you already have. - **A plain `Ingress`** needs no example here — it's the same idea with one fewer layer of indirection: an `Ingress` with a single rule whose `backend.service.name`/`port.name` point at the `TerdutServer`'s Service and `http` port. Remember to set `spec.networking.hostname` on the `TerdutServer` itself to whatever hostname you expose it on — that's not read by the operator for any of this, but terdut-server uses it for its own absolute links (notifications, OIDC redirect URIs).