Objective: Verify the primary bug fix — a Private cluster without --external-dns-domain provisions to completion with all cluster operators healthy.
Cluster: brcox-100054-hc on Azure self-managed management cluster (eastus), 2 nodes, OCP 5.0.0-ec.5
CPO image: quay.io/rh_ee_brcox/hypershift:OCPBUGS-100054-2026-08-05-1
| Step | Check | Result | Evidence |
|---|---|---|---|
| 1 | Private cluster created without --external-dns-domain |
PASS | --endpoint-access Private, no --external-dns-domain flag |
| 2 | HostedCluster reaches Available=True |
PASS | Available: True since 2026-08-05T12:48:57Z, Progressing: False, Degraded: False |
| 3 | ClusterVersion completed | PASS | Version 5.0.0-ec.5, state Completed at 2026-08-05T12:54:35Z (~8 min install) |
| 4a | AzurePLSCreated=True |
PASS | True (AzureSuccess) at 2026-08-05T12:44:55Z |
| 4b | AzurePrivateDNSAvailable=True |
PASS | True (AzureSuccess) at 2026-08-05T12:47:41Z |
| 4c | AzurePrivateEndpointAvailable=True |
PASS | True (AzureSuccess) at 2026-08-05T12:46:37Z |
| 4d | AzurePrivateLinkServiceAvailable=True |
PASS | True (AzureSuccess) at 2026-08-05T12:44:55Z |
| 4e | AzureInternalLoadBalancerAvailable=True |
PASS | True (AzureSuccess) at 2026-08-05T12:44:35Z |
| 5 | 2/2 machines Running and Ready | PASS | Both machines Phase=Running, Ready=True, version=5.0.0-ec.5. NodePool: desired=2, current=2 |
| 6 | 47/47 control plane pods Running | PASS | 46 Running, 1 Completed (featuregate-generator). 0 non-Running/non-Completed |
| 7 | All 21 guest ClusterOperators healthy | PASS | 21 COs: Available=True, Progressing=False, Degraded=False, version=5.0.0-ec.5 |
| 8 | No non-running pods on guest cluster | PASS | No resources found for non-Running/non-Succeeded pods |
| 9 | Ingress ClusterOperator healthy | PASS | Available=True, Degraded=False, Upgradeable=True |
| 10 | publicZoneID is set on HostedCluster |
PASS | Points to os4-common public DNS zone |
| 11 | privateZoneID is set on HostedCluster |
PASS | Points to brcox-100054-hc.hcp-sm-azure... private DNS zone |
$ cat create_hc.sh | grep -E '(endpoint-access|external-dns)' --endpoint-access Private \ # NOTE: No --external-dns-domain flag
$ oc get hostedcluster brcox-100054-hc -n clusters -o jsonpath='{.status.conditions}' | jq -r '.[] | select(.type | test("Available|Progressing|Degraded")) | "\(.type): \(.status) (\(.reason)) [\(.lastTransitionTime)]"'
Available: True (AsExpected) [2026-08-05T12:48:57Z]
Progressing: False (AsExpected) [2026-08-05T12:54:35Z]
Degraded: False (AsExpected) [2026-08-05T12:41:56Z]
$ oc get hostedcluster brcox-100054-hc -n clusters -o jsonpath='{.status.version}' | jq .
{
"availableUpdates": null,
"desired": {
"image": "quay.io/openshift-release-dev/ocp-release@sha256:d1c0459e0a513c95a3946ae16d9c88b7fc85c5a53960ead6ac56646ec5c593cb",
"version": "5.0.0-ec.5"
},
"history": [
{
"completionTime": "2026-08-05T12:54:35Z",
"image": "quay.io/openshift-release-dev/ocp-release@sha256:d1c0459e0a513c95a3946ae16d9c88b7fc85c5a53960ead6ac56646ec5c593cb",
"startedTime": "2026-08-05T12:46:20Z",
"state": "Completed",
"verified": false,
"version": "5.0.0-ec.5"
}
],
"observedGeneration": 1
}
$ oc get hostedcluster brcox-100054-hc -n clusters -o jsonpath='{.status.conditions}' | jq -r '.[] | select(.type | startswith("Azure")) | "\(.type): \(.status) (\(.reason)) [\(.lastTransitionTime)] \(.message)"'
AzureInternalLoadBalancerAvailable: True (AzureSuccess) [2026-08-05T12:44:35Z] "All is well"
AzurePLSCreated: True (AzureSuccess) [2026-08-05T12:44:55Z] "All is well"
AzurePrivateDNSAvailable: True (AzureSuccess) [2026-08-05T12:47:41Z] "All is well"
AzurePrivateEndpointAvailable: True (AzureSuccess) [2026-08-05T12:46:37Z] "All is well"
AzurePrivateLinkServiceAvailable: True (AzureSuccess) [2026-08-05T12:44:55Z] "All is well"
$ oc get machines -n clusters-brcox-100054-hc NAME CLUSTER NODE NAME READY AVAILABLE UP-TO-DATE PHASE VERSION brcox-100054-hc-lq4rl-jn9pg brcox-100054-hc-7prcj brcox-100054-hc-lq4rl-jn9pg True True True Running 5.0.0-ec.5 brcox-100054-hc-lq4rl-mvrzd brcox-100054-hc-7prcj brcox-100054-hc-lq4rl-mvrzd True True True Running 5.0.0-ec.5 $ oc get nodepool -n clusters -o wide | grep brcox-100054 NAME CLUSTER DESIRED CURRENT UPDATING AUTOREPAIR VERSION AUTOSCALING SECURITY-UPDATES brcox-100054-hc brcox-100054-hc 2 2 False False 5.0.0-ec.5 False False
$ kubectl get pods -n clusters-brcox-100054-hc --no-headers | wc -l
47
$ kubectl get pods -n clusters-brcox-100054-hc --no-headers | awk '{print $3}' | sort | uniq -c
1 Completed
46 Running
$ kubectl get co (via port-forward to guest KAS) NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE console 5.0.0-ec.5 True False False 75m csi-snapshot-controller 5.0.0-ec.5 True False False 82m dns 5.0.0-ec.5 True False False 75m image-registry 5.0.0-ec.5 True False False 75m ingress 5.0.0-ec.5 True False False 75m insights 5.0.0-ec.5 True False False 76m kube-apiserver 5.0.0-ec.5 True False False 82m kube-controller-manager 5.0.0-ec.5 True False False 82m kube-scheduler 5.0.0-ec.5 True False False 82m kube-storage-version-migrator 5.0.0-ec.5 True False False 76m monitoring 5.0.0-ec.5 True False False 75m network 5.0.0-ec.5 True False False 81m node-tuning 5.0.0-ec.5 True False False 76m openshift-apiserver 5.0.0-ec.5 True False False 82m openshift-controller-manager 5.0.0-ec.5 True False False 82m openshift-samples 5.0.0-ec.5 True False False 75m operator-lifecycle-manager 5.0.0-ec.5 True False False 82m operator-lifecycle-manager-catalog 5.0.0-ec.5 True False False 82m operator-lifecycle-manager-packageserver 5.0.0-ec.5 True False False 82m service-ca 5.0.0-ec.5 True False False 76m storage 5.0.0-ec.5 True False False 76m
$ kubectl get pods -A --field-selector 'status.phase!=Running,status.phase!=Succeeded' --no-headers No resources found
$ kubectl get co ingress -o json | jq '.status.conditions[]' Available: True "The \"default\" ingress controller reports Available=True." Progressing: False "desired and current number of IngressControllers are equal" Degraded: False "The \"default\" ingress controller reports Degraded=False." Upgradeable: True EvaluationConditionsDetected: False
$ oc get hostedcluster brcox-100054-hc -n clusters -o jsonpath='{.spec.dns}' | jq .
{
"baseDomain": "hcp-sm-azure.azure.devcluster.openshift.com",
"privateZoneID": "/subscriptions/237432b9-9dc5-4b0b-b058-8868ac6a774b/resourceGroups/brcox-100054-hc-brcox-100054/providers/Microsoft.Network/privateDnsZones/brcox-100054-hc.hcp-sm-azure.azure.devcluster.openshift.com",
"publicZoneID": "/subscriptions/237432b9-9dc5-4b0b-b058-8868ac6a774b/resourceGroups/os4-common/providers/Microsoft.Network/dnszones/hcp-sm-azure.azure.devcluster.openshift.com"
}