Description
The NetScaler Kubernetes Gateway Controller does not update the status.parents field on HTTPRoute resources. This is required by the Gateway API specification for conformance.
Problem
When using HTTPRoute (gateway.networking.k8s.io/v1) with ArgoCD, the application remains permanently in "Processing" state because ArgoCD's health check expects the status.parents field to be populated by the Gateway controller.
According to the Gateway API spec, controllers should update:
status.parents[].parentRef - reference to the Gateway
status.parents[].controllerName - the controller managing the route
status.parents[].conditions - conditions like Accepted and Programmed
Current Behavior
HTTPRoute resources have no status field after the controller processed the route:
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: myhttproute
namespace: mynamespace
spec:
...
status: # -> does not exist
Expected Behavior
HTTPRoute resources should have their status updated by the controller:
status:
parents:
- parentRef:
name: my-gateway
namespace: default
controllerName: netscaler.com/netscaler-gateway-controller
conditions:
- type: Accepted
status: "True"
reason: Accepted
- type: Programmed
status: "True"
reason: Programmed
Environment
- NetScaler Ingress Controller version: 3.1.34
Workaround
Currently using ArgoCD ignoreDifferences to ignore the status field, but this masks potential route configuration issues.
Related
- Gateway API conformance requires status updates
Description
The NetScaler Kubernetes Gateway Controller does not update the
status.parentsfield on HTTPRoute resources. This is required by the Gateway API specification for conformance.Problem
When using HTTPRoute (gateway.networking.k8s.io/v1) with ArgoCD, the application remains permanently in "Processing" state because ArgoCD's health check expects the
status.parentsfield to be populated by the Gateway controller.According to the Gateway API spec, controllers should update:
status.parents[].parentRef- reference to the Gatewaystatus.parents[].controllerName- the controller managing the routestatus.parents[].conditions- conditions likeAcceptedandProgrammedCurrent Behavior
HTTPRoute resources have no
statusfield after the controller processed the route:Expected Behavior
HTTPRoute resources should have their status updated by the controller:
Environment
Workaround
Currently using ArgoCD
ignoreDifferencesto ignore the status field, but this masks potential route configuration issues.Related