68 karma · joined March 22, 2018
File sync: That is a great idea. We got that in DevSpace already as you mentioned and we definitely think this could be super valuable in DevPod as well. Right now, a git push and then pull is required to get things from inside DevPod updated on local but with sync this would be even easier and faster.
- Private git repos: They work out of the box because DevPod uses regular git to clone repos and authenticate with your git hosting provider. The desktop app injects a lightweight client into the workspace and then connects from your machine to the client to inject your git credentials into the workspace. This can also be disabled for untrusted or public workspaces but it's by default on because it allows you to `git pull/push` from within the workspace without any issues.
- Credentials for providers: If you use the AWS, GCP, DO, Kubernetes or any other remote provider to provision dev workspaces with DevPod, it requires that either a) you have the credentials on your local machine (e.g. already signed-in via AWS CLI or gcloud CLI or valid kube-context/kube-config for k8s) or b) you provide the credentials directly to DevPod when adding the provider (e.g. provide k8s service account token or gcloud/aws tokens). Option a) would be my recommendation because credentials are stored safely by the respective cloud provider CLIs rather than having to trust DevPod to store them safely for you.
vcluster allows you to create k3s-based virtual k8s clusters that run on top of full-blown Kubernetes clusters. vclusters are lightweight and run inside a single namespace of the underlying host cluster.
********
Why vclusters?
1 - Because vclusters save a ton of cost: You can share resources from the underlying host cluster, e.g. use shared ingress controller. Instead of creating x new clusters, create x vclusters that run on one single cluster.
2 - Because vclusters are a better solution for soft multi-tenancy than using namespaces: Allows your tenants to get cluster-wide access (inside the virtual cluster obviously), so they can test RBAC or install and manage their own CRDs etc.
3 - Because vclusters add another layer of isolation in clusters. Unlike namespaces, vclusters have their own control plane (mainly API server and data store), so that all higher level resources only live in the vcluster (Deployment, StatefulSets, CRDs, ...) and they never reach the underlying cluster, which means the underlying cluster can be really "dumb" and easier to manage
4 - Because vclusters turn clusters into cattle: Spin them up in seconds, destroy them by deleting the underlying namespaces where the vcluster runs in and you get a clean state again. vclusters are super lightweight and low-overhead.
********
How to get started?
No server-side install required. You can deploy a vcluster with kubectl apply or helm install but the easiest option is to download the CLI binary and run:
```
vcluster create vcluster-1 -n host-namespace-1
vcluster connect vcluster-1 -n host-namespace-1
export KUBECONFIG=./kubeconfig.yaml
kubectl ... # Have fun using your vcluster
```
********
What do you think?
What do you think about the idea of virtual Kubernetes clusters? Could this be useful for you? What would need to be added to make it work for your use cases?
Any feedback is highly appreciated.
With the DevSpace CLI, however, you can simply build and deploy once and every following code change will only lead to a code synchronization. The DevSpace CLI will sync your modified source code files straight to your containers running remotely inside a Kubernetes cluster. You can use hot reloading (e.g. with nodemon) and still build and run everything entirely on a remote Kubernetes cluster. Only when you change your Dockerfile, the DevSpace CLI will rebuild and redeploy your container images. This saves a lot of time during development.
I hope you will find the time to try it out and give us feedback on the project :)