telepresence icon indicating copy to clipboard operation
telepresence copied to clipboard

Any plans to support Istio / Knative deployments

Open JCzz opened this issue 5 years ago • 5 comments

Telepresence is so cool and it works perfect for normal k8s deployments - do you have any plans on supporting Istio / Knative?

JCzz avatar May 17 '19 09:05 JCzz

As far as I know, Telepresence works okay with Istio right now. What would it mean to support Knative? Can you sketch out an example?

ark3 avatar Jun 03 '19 13:06 ark3

Hi

In Knative they use a header for routing: grpc.WithAuthority("") This routing is hitting a deployment name.

The issue is the name of the deployment(swap deployment) name and the yaml parameters/settings.

Kind of like --expose but for knative service.

I think it would be awesome, to support this.

And I still have issues trying with datawire/telepresence-k8s:0.100: https://github.com/telepresenceio/telepresence/issues/1027

Thanks

JCzz avatar Jun 14 '19 12:06 JCzz

I ran into issues attempting to use telepresence with knative as well. I tried to telepresence --swap-deployment with a deployment that had been created by knative. First, the new pod that was created was failing with this error message on the queue-proxy sidecar (sidecar is created by knative):

"admin server failed to listen: listen tcp :8022: bind: address already in use","stacktrace":"main.main\n\tknative.dev/serving/cmd/queue/main.go:229\nruntime.main\n\truntime/proc.go:203"}

I looked at port 8022 and there's some hard-coding in both knative and telepresence, neither is configurable, that may be the issue: https://github.com/telepresenceio/telepresence/blob/9d2096a3ce094bb75d91e3ec1c8db80b3012e328/telepresence/connect/connect.py#L53-L58 https://github.com/knative/serving/blob/d91b5d6cdd290075a0a911ee97a5238ea19fdecb/pkg/networking/constants.go#L29-L31

The second issue that I ran into was that a second healthy pod spun up immediately (with both my workload and the queue-proxy sidecar), but it did not have the datawire/telepresence image swapped in. One hypothesis here is that knative creates this new pod as part of its reconciliation loop after the swap. Maybe the only way to get telepresence working with knative is to create a new knative service (using the datawire/telepresence image), and then use `telepresence --deployment --method container --docker-run (assuming there wasn't a port conflict).

lisamburns avatar Feb 09 '21 23:02 lisamburns

@JCzz are you seeing issues with Istio or Knative? If you do, please elaborate. If not, please close this ticket again.

thallgren avatar Oct 09 '21 22:10 thallgren

It's definitely not usable with Knative. I'm using Telepresence2 so the commands are different from the examples in @lisamburns comment, but the experience is similar. I can't get telepresense intercept to run at all even - it fails to detect the interceptable ports and won't take any hints I provide. The problem is to do with the way Knative generates and reconciles the deployment manifest, as she suggested I'm sure (but I'm not an expert so I can't explain how that works).

dsyer avatar May 19 '23 08:05 dsyer

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment, or this will be closed in 7 days.

github-actions[bot] avatar Aug 16 '24 09:08 github-actions[bot]