add a bunch of methods to the client end

This commit is contained in:
Barak Michener 2018-03-30 21:34:51 -07:00
parent a5d237df2a
commit 5ab2cbd265
8 changed files with 236 additions and 17 deletions

View file

@ -1,23 +1,43 @@
# kubelwagen
*Getting your dev environment to the front lines*
It's great to have a consistent environment in containers, and it's great to have services run on Kubernetes, but it's a pain to build dev containers to be run as pods on Kubernetes.
It's great to have a consistent environment in containers, and it's great to have services run on Kubernetes, but it's a pain to build dev containers to be run as pods on Kubernetes. `git pull` on pod creation helps, but it still requires you commit and push the code, and restart the pod.
It would be great if your live development working directory could be mounted into a running pod on the powerful metal in the cloud. Plus, it would obviate the need for workaround services such as (localhost.dev or something?) to share a running WIP instance as it would have a valid service on the dev cluster, ingressable and everything.
It would be great if your live development working directory could be mounted into a running pod on the powerful metal in the cloud. Plus, it would obviate the need for workaround services such as [ngrok](https://ngrok.com) to share a running WIP instance, as it would have a valid service on the dev cluster, complete with Ingress resources and everything. Plus, it's running in-cluster; so all the configurations and access controls and service discoveries are available to your dev instance. With the absolute latest, WIP code from your laptop.
Kubelwagen is a sidecar container that provides a FUSE directory to the running pod that is mounted in from a client connecting in over HTTP.
Use it in tandem with automatically refreshing dev environments -- JS auto-reloaders for frontend devs, [entr](https://entrproject.org) for general reloads, or any other tooling you like.
Kubelwagen is a sidecar (hah) container that provides a FUSE directory to the running pod that is mounted in from a client connecting in over an HTTPS websocket.
## FUSE over Websockets? Are you insane?
It's a dev tool, HTTPS is pretty good, relax. Yeah, it'll be slow... but with appropriate caching, a few extra automatic reload milliseconds of the code you just changed is preferable to rebuilding a container or rescheduling a pod. Faster iteration times == happier devs. Closer parity to your laptop and production == happier ops.
## Setting it up
```
kubelwagen serve [LISTEN HOSTPORT] [TARGET DIRECTORY]
kubelwagen serve [TARGET DIRECTORY]
```
```
kubelwagen connect [TARGET ADDRESS] [SOURCE DIRECTORY]
```
## Status & Todo
#### Status
First mounting! `ls` over the internet to your heart's content!
#### Todo
* Implement *all* the methods!
* XAttrs
* File handles
* Caching
* INotify
* Overlay (serve local directory when not connected)
## Licensing
Distributed under the GPL, as it's a dev tool and not meant as a product. Use it internally. Share alike.