A production-ready Helm chart for deploying multi-user remote development workspaces with VS Code, Claude Code CLI, and secure container builds.

- π VS Code in Browser - Full IDE with extensions support
- π€ Claude Code CLI - AI-powered development assistant
- π Secure Access - HTTPS with Let's Encrypt + authentication
- π₯ Multi-User - Isolated workspaces for teams
- πΎ Persistent Storage - Each user gets dedicated storage
- π³ Container Builds - Secure in-cluster builds with Kaniko
- β‘ Ready-to-Use - Pre-configured development stack
- Kubernetes cluster (1.19+)
- Helm 3.0+
- nginx ingress controller
- cert-manager for automatic HTTPS
# Clone the repository
git clone https://github.com/imran31415/kube-coder.git
cd kube-coder
# Create namespace
kubectl create namespace coder
# Create secrets (replace with your values)
kubectl create secret docker-registry regcred \
--docker-server=your-registry.com \
--docker-username=your-username \
--docker-password=your-password \
-n coder
# Create basic auth secret
htpasswd -c auth admin
kubectl create secret generic api-basic-auth --from-file=auth -n coder
# Install with custom values
helm install remote-dev ./remote-dev -f examples/values-single-user.yaml -n coder
Update the values file with your domain:
users:
- name: alice
host: alice.dev.yourdomain.com
pvcSize: 50Gi
Visit https://alice.dev.yourdomain.com
and login with your credentials.
helm install my-workspace ./remote-dev -f examples/values-single-user.yaml -n coder
helm install team-workspace ./remote-dev -f examples/values-team.yaml -n coder
helm install dev-workspace ./remote-dev -f examples/values-no-tls.yaml -n coder
Each workspace includes:
Category | Tools |
---|---|
Languages | Node.js, Python 3, Go, Java 17 |
Build Tools | npm, pip, make, gcc |
Version Control | Git |
AI Assistant | Claude Code CLI |
Utilities | curl, wget, jq, tmux |
Use the built-in docker-build
command for secure container builds:
# In your workspace terminal
docker-build -t myregistry.com/myapp:latest .
image:
repository: your-registry/coder
tag: latest
pullSecretName: regcred
users:
- name: username
pvcSize: 50Gi
host: username.dev.yourdomain.com
env:
- name: GIT_USER_NAME
value: "Your Name"
ingress:
tls:
enabled: true
clusterIssuer: letsencrypt-production
auth:
type: basic
secretName: api-basic-auth
- Add to
values.yaml
- Run:
helm upgrade remote-dev ./remote-dev -n coder
- Configure DNS for new subdomain
- Remove from
values.yaml
- Run:
helm upgrade remote-dev ./remote-dev -n coder
- Manually delete PVC if needed:
kubectl delete pvc ws-username-home -n coder
kubectl get pods -n coder
kubectl describe pod ws-username-xxxxx -n coder
kubectl get certificate -n coder
kubectl describe certificate your-tls-secret -n coder
kubectl get pvc -n coder
kubectl describe pvc ws-username-home -n coder
- β TLS encryption for all traffic
- β Basic authentication protection
- β RBAC isolation between users
- β Non-root containers
- β Private registry authentication
- β Isolated persistent storage
# Resource usage
kubectl top pods -n coder
# Storage usage
kubectl get pvc -n coder
# Active workspaces
kubectl get pods -l app!=kaniko-wrapper -n coder
# Remove the deployment
helm uninstall remote-dev -n coder
# WARNING: This deletes all user data
kubectl delete namespace coder
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details.
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π§ Email: Support via GitHub issues preferred
β Star this repo if you find it useful!