Skip to content

discrepancies between Accepted, Ready, and Detached condition types and reasons #1111

@mikemorris

Description

@mikemorris

Several different Kubernetes meta/v1.Condition types are defined by the spec, and some use differing terminology to communicate apparently similar status.

What would you like to be added:

Why this is needed:

GatewayClassConditionType

"Accepted"

The possible false reasons indicate either that the controller is evaluating the GatewayClass still, or that it has been rejected and likely requires manual intervention to resolve. A Ready condition doesn't feel appropriate here as this isn't a concrete instance.

  • true reasons
    • "Accepted"
  • false reasons
    • "InvalidParameters"
    • "Waiting"

GatewayConditionType

"Ready"

This is pretty clearly intended to communicate different issues than the Accepted conditions, judging from the possible false values, the latter two of which seem to communicate issues that could be expected to be transient and eventually resolve on their own, or to look to a child object for additional detail.

  • true reasons
    • "Ready"
  • false reasons
    • “ListenersNotValid”
    • “ListenersNotReady”
    • “AddressNotAssigned”

ListenerConditionType

"Detached"

The logical inversion issues with this condition are separately described in #1110, but at a high level the possible true reasons seem to communicate issues that could be expected to require manual intervention to resolve.

  • true reasons
    • “PortUnavailable”
    • “UnsupportedExtension”
    • “UnsupportedProtocol”
    • “UnsupportedAddress”
  • false reasons
    • "Attached"

"Ready"

The possible false reasons for this field look quite similar to the false reasons for the Accepted GatewayClassConditionType, but use slightly different terminology. I'm not quite sure how useful this field is beyond being a cue to look to other conditions if the status is false.

  • true reasons
    • "Ready"
  • false reasons
    • “Invalid”
    • “Pending"

RouteConditionType

"Accepted"

The possible false reasons for this field are not currently defined in the v1alpha2 API spec docs but were previously defined in v1alpha1, although don't appear to offer any additional context beyond the status boolean.

  • true reasons (only documented in v1alpha1)
    • "Admitted"
  • false reasons (only documented in v1alpha1)
    • "Refused"

(If there's interest in enough of this changing, it could be substantial enough to warrant a GEP.)

Metadata

Metadata

Assignees

Labels

kind/featureCategorizes issue or PR as related to a new feature.lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions