OCPBUGS-26498: Add UnservableInFutureVersions route status condition type#1722
Conversation
|
@gcs278: This pull request references Jira Issue OCPBUGS-26498, which is invalid:
Comment The bug has been updated to refer to the pull request using the external bug tracker. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
Hello @gcs278! Some important instructions when contributing to openshift/api: |
route/v1/types.go
Outdated
| // RouteAdmitted means the route is able to service requests for the provided Host | ||
| RouteAdmitted RouteIngressConditionType = "Admitted" | ||
| // TODO: add other route condition types | ||
| // RouteUpgradable indicates the route is upgradeable to the next version of OpenShift |
There was a problem hiding this comment.
please describe what happens if this is false. Is the upgrade stopped? That's a lot of power to give a namespace editor compared a cluster-admin assessing a CVE for instance.
If the upgrade isn't stopped, how do we expect a cluster-admin to avoid accidentally causing this situation?
cc @sdodson
for discussion of how to handle upgradeability.
There was a problem hiding this comment.
please describe what happens if this is false. Is the upgrade stopped? That's a lot of power to give a namespace editor compared a cluster-admin assessing a CVE for instance.
I will update code comment soon - the cluster ingress operator will read the route's Upgradeable status and set the cluster operator ingress Upgradeable status which will prevent upgrades. So yes, the route owner can stop an upgrade, agreed.
See https://redhat-internal.slack.com/archives/CEGKQ43CP/p1704894930666179 discussion.
ed59e8a to
ae9cbbd
Compare
|
@gcs278: This pull request references Jira Issue OCPBUGS-26498, which is valid. The bug has been moved to the POST state. 3 validation(s) were run on this bug
Requesting review from QA contact: DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
@deads2k I'd like to push forward with this change. @Miciah and I discussed the API changes.
The other option would be using annotation. That seemed quite kludgy too. Please advise if you have any concerns or questions. |
|
/hold The solution is to just have the ingress operator upgradeable code temporary, so it only exists in the OCP version N-1 where N is the option (e.g. SHA1) is unsupported. The code would be make an assumption that any It becomes more complex if we intend to reuse the deprecated status in the future to determine the co's ingress |
ae9cbbd to
1b5cc84
Compare
|
@gcs278: This pull request references Jira Issue OCPBUGS-26498, which is valid. 3 validation(s) were run on this bug
Requesting review from QA contact: DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
route/v1/types.go
Outdated
| // TODO: add other route condition types | ||
| // RouteDeprecated indicates that the route is using a deprecated configuration that may | ||
| // be incompatible with a future version of OpenShift. If this set to true on any route, | ||
| // the ingress operator may block upgrades. |
There was a problem hiding this comment.
micro-nit, feel free to ignore.
If this set to true on any route, the ingress operator may block upgrades.
This seems like an internal implementation detail. In cases where the ingress operator decides to use Deprecated on Routes to drive Upgradeable=False, that Upgradeable ClusterOperator condition is the API talking to the CVO, and the CVO will in turn set Upgradeable=False on ClusterVersion, and that ClusterVersion condition is the API talking to the cluster-admin or other OCP-managing actor. I don't think we need to hint at that possible chain in this Route condition's docs. Instead, we can keep the first sentence explaining the deprecation aspect, which lets Route-admins know that they should be thinking about a config update. And then leave it to the cluster-admin-facing ClusterVersion API to talk about whether we're concerned about anything (including deprecated Route config) to talk to cluster-admins about that aspect.
But also, "may block upgrades" is wiggly enough that I doubt anyone will feel like we are surprising them regardless of whether the ingress operator decides to take any action based on this new Route condition. So no worries if you want to leave this sentence in as a semi-informative bread-crumb.
There was a problem hiding this comment.
thanks for the info - I remove it as I agree it's an implementation detail.
There was a problem hiding this comment.
Whoops, I forgot to remove this.
1b5cc84 to
665e988
Compare
|
@gcs278: This pull request references Jira Issue OCPBUGS-26498, which is valid. 3 validation(s) were run on this bug
Requesting review from QA contact: The bug has been updated to refer to the pull request using the external bug tracker. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
/lgtm |
route/v1/types.go
Outdated
| // RouteDeprecated indicates that the route is using a deprecated configuration that may | ||
| // be incompatible with a future version of OpenShift. If this set to true on any route, | ||
| // the ingress operator may block upgrades. | ||
| RouteDeprecated RouteIngressConditionType = "Deprecated" |
There was a problem hiding this comment.
The condition should be more assertive of the problem. Deprecated is generally read in a "well someday I'll fix this" and we're actually highlight a security concern that we know will prevent this route from functioning in two versions.
UnservableInFutureVersions could carry a reason and message that we choose for each case where you need this case. The reason and message should emphasize the insecure aspect of the route.
665e988 to
ac83b74
Compare
…type Add UnservableInFutureVersions as a route status condition type. This change allows the router to indicate that a route is using an unsupported configuration and will be unservable in the future. The ingress operator may use this condition to block upgrades.
ac83b74 to
7716002
Compare
|
@gcs278: all tests passed! Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: deads2k, frobware, gcs278 The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
@gcs278: Jira Issue OCPBUGS-26498: Some pull requests linked via external trackers have merged: The following pull requests linked via external trackers have not merged: These pull request must merge or be unlinked from the Jira bug in order for it to move to the next state. Once unlinked, request a bug refresh with Jira Issue OCPBUGS-26498 has not been moved to the MODIFIED state. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
[ART PR BUILD NOTIFIER] This PR has been included in build ose-cluster-config-api-container-v4.16.0-202402021641.p0.g8b34b98.assembly.stream for distgit ose-cluster-config-api. |
Add UnservableInFutureVersions as a route status condition type. This change allows the router to indicate that a route is using an unsupported configuration and will be unservable in the future. The ingress operator may use this condition to block upgrades.
More details in forum-ocp-updates slack thread and latest updates discussion in forum-api-review slack thread