@@ -3,11 +3,12 @@ title: add-dns-and-loadbalancer-conditions-to-managed-gateway
33authors :
44 - rikatz
55reviewers :
6+ - alebedev87
67 - Miciah
78approvers :
8- - TBD
9+ - Miciah
910api-approvers :
10- - TBD # New conditions on Gateway status
11+ - None
1112creation-date : 2025-10-21
1213last-updated : 2025-10-21
1314tracking-link :
@@ -26,7 +27,7 @@ superseded-by:
2627
2728This enhancement adds four status conditions to GatewayAPI Gateway resources
2829managed by OpenShift in the ` openshift-ingress ` namespace: ` DNSManaged ` ,
29- ` DNSReady ` , ` LoadBalancerManaged ` , and ` LoadBalancerReady ` .
30+ ` DNSReady ` , and ` LoadBalancerReady ` .
3031These conditions provide visibility into DNS provisioning and cloud LoadBalancer
3132service status, similar to the existing conditions on OpenShift IngressController
3233resources. The "Managed" conditions indicate whether OpenShift should manage the
@@ -63,9 +64,8 @@ issues or resource limits.
6364
6465* Add ` DNSManaged ` and ` DNSReady ` conditions to Gateway status that reflect
6566whether DNS is managed and the state of DNS record provisioning
66- * Add ` LoadBalancerManaged ` and ` LoadBalancerReady ` conditions to Gateway status
67- that reflect whether LoadBalancer is managed and the state of cloud LoadBalancer
68- service provisioning
67+ * Add ` LoadBalancerReady ` conditions to Gateway status that reflect whether
68+ LoadBalancer is managed and the state of cloud LoadBalancer service provisioning
6969* Implement a two-tier condition model: "Managed" conditions indicate whether
7070OpenShift should manage the resource, "Ready" conditions indicate whether it is
7171functioning
@@ -90,15 +90,15 @@ provides visibility only)
9090## Proposal
9191
9292This enhancement proposes extending the Gateway status with four new condition
93- types: ` DNSManaged ` , ` DNSReady ` , ` LoadBalancerManaged ` , and ` LoadBalancerReady ` .
93+ types: ` DNSManaged ` , ` DNSReady ` , and ` LoadBalancerReady ` .
9494These conditions will be managed by a new gateway-status controller in the
9595cluster-ingress-operator and will reflect the current state of DNS record
9696provisioning and cloud LoadBalancer service provisioning respectively.
9797
9898The conditions follow a two-tier model:
99- * ** Managed conditions** (` DNSManaged ` , ` LoadBalancerManaged ` ): Indicate whether
100- OpenShift should be managing this aspect of the Gateway based on configuration
101- (DNS zones, publishing strategy, DNSManagementPolicy, etc.)
99+ * ** Managed conditions** (` DNSManaged ` ): Indicate whether OpenShift should be
100+ managing this aspect of the Gateway based on configuration (DNS zones, publishing
101+ strategy, DNSManagementPolicy, etc.)
102102* ** Ready conditions** (` DNSReady ` , ` LoadBalancerReady ` ): Indicate whether the
103103managed resource is actually functioning correctly
104104
@@ -149,15 +149,13 @@ LoadBalancer services.
1491496 . Cluster Ingress Operator initiates DNS record provisioning through its own dns controller
1501507 . Cluster Ingress Operator dns controller successfully creates DNS records and
151151updates its status
152- 8 . Gateway Status Controller updates Gateway condition ` LoadBalancerManaged=True `
153- with reason "Normal" (LoadBalancer should be managed)
154- 9 . Gateway Status Controller updates Gateway condition ` LoadBalancerReady=True `
152+ 8 . Gateway Status Controller updates Gateway condition ` LoadBalancerReady=True `
155153with reason "LoadBalancerProvisioned"
156- 10 . Gateway Status Controller updates Gateway condition ` DNSManaged=True ` with
154+ 9 . Gateway Status Controller updates Gateway condition ` DNSManaged=True ` with
157155reason "Normal" (DNS should be managed)
158- 11 . Gateway Status Controller updates Gateway condition ` DNSReady=True ` with
156+ 10 . Gateway Status Controller updates Gateway condition ` DNSReady=True ` with
159157reason "Normal" (DNS records provisioned successfully)
160- 12 . Customer checks Gateway status and sees all four conditions are ` True ` , confirming the Gateway is fully operational
158+ 11 . Customer checks Gateway status and sees all four conditions are ` True ` , confirming the Gateway is fully operational
161159
162160#### DNS Failure Flow
163161
@@ -186,17 +184,15 @@ reason "Normal"
1861843 . Cloud Provider API fails to provision LoadBalancer (e.g., quota exceeded,
187185subnet full, invalid configuration)
1881864 . LoadBalancer service remains in Pending state with event describing the error
189- 5 . Gateway Status Controller updates Gateway condition ` LoadBalancerManaged=True `
190- (LoadBalancer should be managed, configuration is correct)
191- 6 . Gateway Status Controller updates Gateway condition ` LoadBalancerReady=False `
187+ 5 . Gateway Status Controller updates Gateway condition ` LoadBalancerReady=False `
192188with reason ` LoadBalancerPending ` and error details from service events
193- 7 . Cluster Administrator reviews Gateway status and identifies the cloud
189+ 6 . Cluster Administrator reviews Gateway status and identifies the cloud
194190infrastructure issue from the ` LoadBalancerReady ` condition message
195- 8 . Cluster Administrator resolves the issue (e.g., increases quota, adjusts VPC
191+ 7 . Cluster Administrator resolves the issue (e.g., increases quota, adjusts VPC
196192configuration)
197- 9 . Cloud Provider API successfully provisions the LoadBalancer
198- 10 . LoadBalancer service status is updated with external IP/hostname
199- 11 . Gateway Status Controller updates Gateway condition ` LoadBalancerReady=True `
193+ 8 . Cloud Provider API successfully provisions the LoadBalancer
194+ 9 . LoadBalancer service status is updated with external IP/hostname
195+ 10 . Gateway Status Controller updates Gateway condition ` LoadBalancerReady=True `
200196with reason "LoadBalancerProvisioned"
201197
202198
@@ -235,10 +231,10 @@ sequenceDiagram
235231
236232 alt LB Success
237233 Cloud-->>LBSvc: LoadBalancer provisioned (IP/hostname in status.loadBalancer.ingress)
238- GWStatus->>Gateway: Set LoadBalancerManaged=True, LoadBalancerReady=True (reason: LoadBalancerProvisioned)
234+ GWStatus->>Gateway: Set LoadBalancerReady=True (reason: LoadBalancerProvisioned)
239235 else LB Failure
240236 Cloud-->>LBSvc: Provisioning failed (service events contain error)
241- GWStatus->>Gateway: Set LoadBalancerManaged=True, LoadBalancerReady=False (reason: LoadBalancerPending)
237+ GWStatus->>Gateway: Set LoadBalancerReady=False (reason: LoadBalancerPending)
242238 end
243239
244240 User->>Gateway: Check status
@@ -325,11 +321,6 @@ publishing strategy is not LoadBalancerService
325321
326322** LoadBalancer Condition Details:**
327323
328- * LoadBalancerManaged Condition:*
329- * Set to ` False ` with reason ` UnsupportedEndpointPublishingStrategy ` when the
330- publishing strategy doesn't require a managed LoadBalancer
331- * Set to ` True ` with reason ` Normal ` when a LoadBalancer service should be managed by OpenShift
332-
333324* LoadBalancerReady Condition:*
334325* Set to ` False ` with reason ` ServiceNotFound ` when the associated Service
335326resource cannot be found
@@ -578,12 +569,6 @@ This enhancement involves coordination between:
578569* OpenShift is not managing DNS, so status is unknown
579570* Check if DNS is supposed to be managed by external system
580571
581- * Symptom: Gateway conditions show ` LoadBalancerManaged=False ` *
582- * Check Gateway status: ` oc get gateway <name> -n openshift-ingress -o yaml `
583- * Review condition reason and message:
584- - Reason ` UnsupportedEndpointPublishingStrategy ` : Publishing strategy doesn't require managed LoadBalancer
585- * Verify publishing strategy configuration is correct for your environment
586-
587572* Symptom: Gateway conditions show ` LoadBalancerReady=False ` *
588573* Check Gateway status: ` oc get gateway <name> -n openshift-ingress -o yaml `
589574* Review condition reason and message:
0 commit comments