kubernetes-ingress-controller: http2 requests not supported yet and checking config status failed: %!w(*kong.APIError=&{500 An unexpected error occurred})
Is there an existing issue for this?
- I have searched the existing issues
Current Behavior
On brand new install of Kong using Helm Chart Version 2.8.0, getting the following two errors on an Azure Kubernetes Service Cluster, one error in the proxy logs and the other on the ingress logs.
- Proxy - http2 requests not supported yet
- Ingress - *checking config status failed: %!w(kong.APIError=&{500 An unexpected error occurred})
Subsequently installed it on minikube to make sure that the issue wasn’t specific to an AKS cluster and got the same set of errors.
More detail error in Proxy: 3714 [lua] api_helpers.lua:511: handle_error(): /usr/local/share/lua/5.1/lapis/application.lua:424: /usr/local/share/lua/5.1/kong/api/routes/health.lua:45: http2 requests not supported yet
Expected Behavior
No errors.
Steps To Reproduce
helm install kong kong/kong -n kong -f .\values.yaml --version 2.8.0
Value file:
env:
prefix: /kong_prefix/
database: "off"
LOG_LEVEL: "error"
ingressController:
ingressClass: "kong"
enabled: true
installCRDs: false
Kong Ingress Controller version
KIC 2.3
Kubernetes version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"ba58f86b00f6b0f0b7694a75464aa7806f8bf6fc", GitTreeState:"clean", BuildDate:"2022-03-30T23:40:46Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"}
Also, getting the same thing using minikube:
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:32:32Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"linux/amd64"}
Anything else?
Kong Ingress Controller seems to be working though…so not sure what these errors mean and how concern I should be.
About this issue
- Original URL
- State: open
- Created 2 years ago
- Reactions: 8
- Comments: 15 (7 by maintainers)
It looks like the effect is that this new feature is not operational:
https://github.com/Kong/kubernetes-ingress-controller/commit/39c385e9b31e3871c2e38b2ea8e12ab328e341ad#diff-d8590e8687e7807da0cf97910b88e0ddbfc670866e0973a15c56597b99df9244R59
workaround
These helm chart values seem to restore the broken feature and remove all the error logs:
(It seems like KIC could be hitting /status on the status port instead of the admin port, as the status port already has http2 disabled)
I have set ADMIN_LISTEN environment variable to “127.0.0.1:8444 http2 ssl” and it was causing this error.
As a workaround, I had to set ADMIN_LISTEN to “127.0.0.1:8444 ssl” to get rid of these errors.
Blocked until https://github.com/Kong/kong/pull/8690 releases (2.8.1)?
The workaround (disabling HTTP/2 support on the admin API) is fine. It doesn’t meaningfully change the operation of the controller, which makes a separate request for each API call anyway rather than using HTTP/2 pipelining. It may technically degrade Manager performance, but I can’t think of pages that are making more than 2-3 admin API requests at once, so I doubt the impact would be noticeable.
https://github.com/Kong/kong/pull/8690 is the PR that’s planned to fix this/will allow you to turn HTTP/2 back on.
The status endpoint (as of 2.8) provides both generic NGINX status information (connection count and such) and whether or not configuration is present. We only care about the latter, we just can’t fetch it separately, and weren’t using the endpoint before.
It seems that https://github.com/Kong/kong/pull/8690 didn’t land in 2.8.1: https://github.com/Kong/kong/commit/c5fd7233ab3e0d910fef31bc3eecd8bdc25fe220.
In that case this will be available in 3.0 (it’s already included in 3.0 alpha.1 build: https://github.com/Kong/kong/releases/tag/3.0.0-alpha.1)
I’m also seeing this on a straightforward installation of the 2.8.0 helm chart.
I found a proxy PR to support http2 on the status endpoint:
This is an exact output from
proxy
:Kong overall is operating fine, but the log volume is annoying and it’s not clear if this issue has any further impact.