@@ -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
@@ -486,6 +477,18 @@ added conditions
486477This proposal just adds new conditions to Gateway, and don't impact the Gateway
487478behavior. There is no API or behavior change, so no need to go through graduation criteria
488479
480+ ### Dev Preview -> Tech Preview
481+
482+ N/A
483+
484+ ### Tech Preview -> GA
485+
486+ N/A
487+
488+ ### Removing a deprecated feature
489+
490+ N/A
491+
489492## Upgrade / Downgrade Strategy
490493
491494** Upgrade Strategy:**
@@ -578,12 +581,6 @@ This enhancement involves coordination between:
578581* OpenShift is not managing DNS, so status is unknown
579582* Check if DNS is supposed to be managed by external system
580583
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-
587584* Symptom: Gateway conditions show ` LoadBalancerReady=False ` *
588585* Check Gateway status: ` oc get gateway <name> -n openshift-ingress -o yaml `
589586* Review condition reason and message:
0 commit comments