47 lines
2.5 KiB
Markdown
47 lines
2.5 KiB
Markdown
# 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. `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 [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.
|
|
|
|
Use it in tandem with automatically refreshing dev environments -- JS auto-reloaders for frontend devs, [entr](http://entrproject.org) for general reloads, or any other tooling you like.
|
|
|
|
Kubelwagen is a sidecar ([hah](https://en.wikipedia.org/wiki/Volkswagen_K%C3%BCbelwagen)) 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 [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.
|
|
|
|
## Why call it kubelwagen?
|
|
|
|
I was on vacation and read [The Last Battle: When U.S. and German Soldiers Joined Forces in the Waning Hours of World War II in Europe](https://en.wikipedia.org/wiki/The_Last_Battle_(Harding)) in one sitting, and noticed a word, starting with `kube`, that fit themeatically, with an idea I already had.
|