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

Don't require running code in container #1

Closed
itamarst opened this Issue Mar 1, 2017 · 3 comments

Comments

Projects
None yet
1 participant
@itamarst
Contributor

itamarst commented Mar 1, 2017

Currently telepresence runs local code in a container. It would be even nicer if it didn't require that and code could be run normally on the developer machine directly.

Interested in this feature? Add a "thumbs up" or comment below.

Implementation options:

@itamarst itamarst added the enhancement label Mar 1, 2017

@itamarst itamarst self-assigned this Mar 10, 2017

@itamarst

This comment has been minimized.

Contributor

itamarst commented Mar 10, 2017

Going to try to implement this next. Proposed design:

$ python myserver.py

Becomes:

$ telepresence --new-deployment go --run python myserver.py
@itamarst

This comment has been minimized.

Contributor

itamarst commented Mar 13, 2017

What I've discovered so far:

  1. tsocks doesn't seem to work.
  2. socksify doesn't seem to work.
  3. torsocks does work, but only for IPs: DNS relies on custom SOCKS protocol extension that OpenSSH SOCKS proxy doesn't support (https://github.com/dgoulet/torsocks/blob/master/doc/socks/socks-extensions.txt#L40).

If I continue down this path, options are:

  • Fork torsocks.
  • Disable DNS-on-remote-side feature in torsocks, and figure out way to do DNS for Kubernetes Services locally. HOSTALIASES environment variable is one way, but it wouldn't support full records, e.g. "myservice" would work, but "myservices.default.svc.cluster.local" would not.
  • Custom SOCKS server that implements the extra command torsocks expects.

Other issues:

  • torsocks doesn't have way to set port it connects to (in older versions, e.g. one in Ubuntu 16.04) on command line. That can be worked around by having custom config file whose address is set with an env variable.
@itamarst

This comment has been minimized.

Contributor

itamarst commented Mar 16, 2017

Remaining work:

  • Make end-to-end tests pass, in particular need to route incoming connections to IP of Docker host?
  • Tests for SOCKS5 protocol implementation
  • Update documentation: need torsocks, examples, ...
  • Choose random free port on local machine, instead of hardcoding port 9050
  • Use custom torsocks config (necessary for the above)

@itamarst itamarst closed this in #46 Mar 20, 2017

itamarst added a commit that referenced this issue Mar 20, 2017

Merge pull request #46 from datawire/feature/without-docker
Support proxying local processes.

Fixes #1.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment