-
Notifications
You must be signed in to change notification settings - Fork 9.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
3.3.0-rc breaks /health API compatibility #9144
Comments
@liggitt why does k8s rely on parsing the http body rather than checking http status code? changing string to type is more a bug fix than an intentional breaking change. we never intend to make it a string at the first place. |
Because that was what was documented:
Nevertheless, that's the API you have. Unless there's a good reason, it shouldn't change in breaking ways. |
The reason is to fix the unintended behavior. It seems to me that k8s does not need to parse http body. Also it can easily parse the boolean type when the string one fails as a fallback. We could choose to not change the current health endpoint. And we could have added another healthy endpoint to fix the problem, and add more healthy related information. But I do not feel this "breaking" change is hard for application to adopt. Can you provide some reasons for why k8s cannot adopt the change, besides that some people try to use a currently unsupported version of etcd for k8s. |
Pushing workarounds for API breaks into all clients doesn't make sense to me.
Adding more health related info is fine... you can do that in a backwards compatible way. Changing the type of the existing field is the break. If this were a new API, a boolean would definitely make sense, but since it's not, the downside of breaking clients outweighs the cleanliness of a better matching field type. |
Can you tell me which client is affected? go/jave clients do not query this API. We searched around while changing this API, few client exposes health API directly. |
The /health response in the 3.3.0 release candidates breaks compatibility with the response from previous releases
Prior to 3.3:
3.3.0-rc:
while it is true that the boolean is a better match for the data presented, it's probably not worth breaking compatibility with existing monitoring tools over it. it would be good to switch the type back prior to releasing 3.3.0.
see example impact of compatibility break at kubernetes/kubernetes#58240
The text was updated successfully, but these errors were encountered: