Skip to content

Indicate a new Route "Readiness" condition #1156

Closed
@carlisia

Description

@carlisia

Goals

  • indicate if all configuration needed to perform Route related operations has been fully propagated through the entire data plane.

  • otherwise, indicate if the configuration had a point of failure, or if it is still converging towards being "ready"

  • indicate the semantics for what a correct implementation of what it means for Routes to be "ready" for configuration updates as well

Constraint

Some implementations will never be able to provide this status. For this reason, this should be considered as "extended support".

Description

For implementations that are able to provide this status, doing so according to a uniform spec would greatly unburden Gateway API consumers from:

  • having to figure out how to implement their own readiness check

  • implementing readiness checks that don't conform uniformly to what it means to be "ready"

  • not having means to easily decide when it should continue to retry connecting or halt trying for not having a way to identify if failures and time-outs originate from an application level or from the Gateway controller being not yet "ready"

Suggestions

Name: RouteConditionType = "Ready"

Possible RouteConditionReason options:

  • True

    • "Ready"
  • False

    • "Unsupported" (indicates it is not implemented intentionally)

    • "InProgress" or "Pending" (still attempting to converge into a "readiness" state

    • "Failed" (some step in the "readiness" check failed)

    • "TBD" (see below; if it wasn't the readiness check that failed, but another condition that was a pre-requisite for a "Ready:True"

Considerations

  • Once a Route is in a "Ready:False", Reason: Failed state, what should trigger a retry? Arbitrarily looping over the readiness check logic, maybe at user configurable intervals? Or should that only be triggered once there is a new change in the configuration?

  • In face of other condition types for Routes, existing as well as others yet to be added, ex "Accepted", "Programmed", etc, how should the condition reason for the "Ready:False" be indicated? Examples:

    • one of the Route conditions becomes "False" => The RouteConditionReasoncould be the same as the condition for that RouteConditionType

    • multiple RouteConditionType become "False" => The RouteConditionReasoncould be the same as the condition for the RouteConditionType that is closer to the "Ready" type IF there is a natural order/sequence of operations. Otherwise, if multiple reasons exist


Alternative consideration

  • Readiness could be expressed as a non-condition status field.

Metadata

Metadata

Assignees

Labels

kind/featureCategorizes issue or PR as related to a new feature.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions