Hello everyone,
I have a microservice that runs over http/2, my environment is configured with istio and mtls, I am trying to add health checks for the microservice following the guide here: Istio / Health Checking of Istio Services. When i check the logs from the sidecar container i get the message:
error Request to probe app failed: Get http://localhost:8081/health: net/http: HTTP/1.x transport connection broken: malformed HTTP response “\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\b\a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02”, original URL path = /app-health/sample/readyz
initial probes look like this
livenessProbe:
httpGet:
path: /health
port: 8081
...
readinessProbe:
httpGet:
path: /health
port: 8081
...
I have added the annotation sidecar.istio.io/rewriteAppHTTPProbers: “true” and the re-written values look like this
livenessProbe:
httpGet:
path: /app-health/sample/livez
port: 15020
scheme: HTTP
readinessProbe:
httpGet:
path: /app-health/sample/readyz
port: 15020
scheme: HTTP
I know that normally Kubernetes does not support probes over http/2 but I thought that maybe the sidecar can translate the protocol since the traffic already goes through it.
P.S: I keep reading that Envoy has First class HTTP/2 support and can operate as a transparent HTTP/1.1 to HTTP/2 proxy in both directions (see documentation) but I cannot find any guides on how to do so. It would be useful in case I have other 3rd party components that only work with http1.1.