omrikiei / ktunnel

A cli that exposes your local resources to kubernetes
GNU General Public License v3.0
958 stars 75 forks source link

Mixed linux and windows clusters #67

Closed chandlerkent closed 2 years ago

chandlerkent commented 2 years ago

First, thank you very much for ktunnel! We discovered it this week and are replacing our hacky usage of ngrok with this.

We have a mixed linux and windows node Kubernetes cluster and often the deploy of ktunnel fails if Kubernetes schedules it on a windows node. We can fix this by adding a nodeSelector manually to the deployment after ktunnel initiates it:

      nodeSelector:
        kubernetes.io/os: linux

This selector is specific to the labels we apply to our Kubernetes nodes (I think), so I don't believe ktunnel should adopt this, but I was wondering if there's a way we can add the nodeSelector to the deployment so it does not error?

If you can think of how you would like this feature added to ktunnel, I would be happy to contribute a PR as well.

omrikiei commented 2 years ago

Hi @chandlerkent, firstly thank you for the kind words! this really means a lot to me! Since the docker image pulled and used as the server is built for linux it's probably the reason it's failing. The easier way would be to use -r when running ktunnel, in this case the server side does not teardown on exit and can be reused. I'll also look into ways of customizing the injected/exported pieces using feature flags, will get back to you in this soon, promise!

omrikiei commented 2 years ago

Hey @chandlerkent - v1.4.4 supports adding node selector tags with the -q flag to the expose command:

-q, --node-selector-tags strings    tag and value seperated by the '=' character (i.e kubernetes.io/os=linux)

please let me know if it does the job

chandlerkent commented 2 years ago

That looks great! I will give it a try on Monday and let you know.

Thanks again!

chandlerkent commented 2 years ago

@omrikiei I can confirm this is working great for us. Thanks again!

doctorpangloss commented 10 months ago

this should be the default