-
Notifications
You must be signed in to change notification settings - Fork 451
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
Operator configured service port names do not match istio convention #1306
Comments
same isssue meet in open-telemetry/opentelemetry-helm-charts#589, and I'd like to support it in |
@frzifus was this resolved? |
nope - might be a topic for the SIG call. |
@frzifus should we do this with v2? |
Ive to check if that is still an issue. Since we dropped v1.19 support as far as I understand https://kubernetes.io/docs/concepts/services-networking/service/#application-protocol |
oh so can i close this? |
I just hit this and used appProtocols/custom names as described in the issue via the forgive me, but it would be nice if the port names were istio naming convention/protocol detection compatible without needing to :-) |
I think that changing the port name may cause backward compatibility problems. According to the documentation https://istio.io/latest/docs/ops/configuration/traffic-management/protocol-selection/#explicit-protocol-selection if the |
Additional information
ServicePort names generated by the operator are not compatible with the istio naming convention. This leads to problems when using gRPC. Envoy (istio sidecar) uses the port name to determine the protocol used. For example if TLS traffic is transmitted or not. According to convention, a port handling tls traffic should have the prefix
tls-
orhttps-
. Alternatively, since kubernetes 1.20 a new field appProtocol in the servicePort can be used to provide protocol information.What is the problem?
Envoy as well as HAProxy [#902] fail the tls handshake if it is unclear what type of traffic it is. We saw the same issue on the jaeger-operator#2101 project.
authentication handshake failed: tls: first record does not look like a TLS handshake
How are port names generated?
Currently, these are generated based on the collector configuration (
${receiver}-${suffix}
).In the case of otlp, it is only possible to use tls or grpc as prefix or appProtocol with a work around. Therefore the desired port name or protocol must be specified in the CR.
Example
Possible solutions
One of the easiest ways to do this would be to reverse the orientation of the generated names.
E.g.:
${receiver}-${info}
=>${info}-${receiver}
However, this would be a breaking change. Since manually created ingress entries or similar would no longer work.
In the case of otlp, the configuration provides all the necessary information to use the
appProtocol
field. If theinsecure=false
it is tls traffic. In case ofinsecure=true
the specified protocol can be used (e.g. gRPC or HTTP). However, I am not sure that all receivers provide these configurations.The text was updated successfully, but these errors were encountered: