Objective: Verify the CPO correctly handles the absence of a hostname for the KAS external route — only the internal route should exist when no external DNS domain is configured.
Implementation: The CPO's ReconcileInfrastructure checks whether a hostname is configured for the external KAS route. When the service publishing strategy is Route but no hostname is set, the CPO skips external route creation and uses k8sutil.DeleteIfNeeded to clean up any obsolete external routes.
| Step | Check | Result | Evidence |
|---|---|---|---|
| 1 | kube-apiserver internal route exists |
PASS | Route kube-apiserver-internal, host=api.brcox-100054-hc.hypershift.local |
| 2 | kube-apiserver-external-public does NOT exist |
PASS | NotFound |
| 3 | kube-apiserver-external-private does NOT exist |
PASS | NotFound |
$ oc get routes -n clusters-brcox-100054-hc | grep kube-apiserver NAME HOST/PORT SERVICES PORT TERMINATION WILDCARD kube-apiserver-internal api.brcox-100054-hc.hypershift.local kube-apiserver <all> passthrough/None None
$ oc get route kube-apiserver-external-public -n clusters-brcox-100054-hc Error from server (NotFound): routes.route.openshift.io "kube-apiserver-external-public" not found
$ oc get route kube-apiserver-external-private -n clusters-brcox-100054-hc Error from server (NotFound): routes.route.openshift.io "kube-apiserver-external-private" not found