A portable development environment that combines Fission (serverless functions) with coder-server (VS Code in browser) in a single Kubernetes cluster using Kind and Helm.
- Complete isolation: Uses
faasnamespace for functions, leavingdefaultnamespace clean - Professional CLI: Pure
fission -n faascommands like enterprise setups - Portable: Works on macOS, Linux, Windows, WSL2, and VDI environments
- Integrated IDE: VS Code accessible via browser at
http://localhost:31315 - No conflicts: Your existing macOS Kubernetes setup remains untouched
- Docker Desktop
- Kind (
brew install kindon macOS) - Helm (
brew install helmon macOS) - kubectl
-
Clone and setup:
git clone <repository-url> cd coder-faaas chmod +x scripts/*.sh
-
Deploy everything:
# For macOS/Linux ./scripts/setup.sh # For WSL2/VDI environments (handles resource constraints) ./scripts/setup-wsl2.sh
-
Access your environment:
- Coder IDE: http://localhost:31315 (password:
coder123) - Fission functions: Use
fission -n faascommands
- Coder IDE: http://localhost:31315 (password:
All functions should be created in the faas namespace for proper isolation:
# Create environment
fission env create --name nodejs --image ghcr.io/fission/node-env --namespace faas
# Create function
fission function create --name hello --env nodejs --code hello.js --namespace faas
# Test function
fission function test --name hello --namespace faas
# List functions
fission function list --namespace faasCreate hello.js:
module.exports = async function(context) {
return {
status: 200,
body: {
message: "Hello from faas namespace!",
timestamp: new Date().toISOString(),
namespace: "faas"
}
};
}Deploy and test:
fission function create --name hello --env nodejs --code hello.js --namespace faas
fission function test --name hello --namespace faasfaasnamespace: Your serverless functions (isolated, portable)defaultnamespace: Remains clean for your macOS Kubernetesfissionnamespace: Fission control plane (managed automatically)
kind-coder-faaas cluster
├── fission namespace # Fission control plane
├── faas namespace # Your functions (isolated)
└── default namespace # Clean/unused
The setup includes:
- Router: Routes function calls to correct namespace
- Executor: Manages function pods in faas namespace
- Controller: Manages Fission resources
- Coder-server: Browser-based VS Code IDE
./scripts/setup.sh- Complete environment setup (macOS/Linux)./scripts/setup-wsl2.sh- WSL2/VDI optimized setup with extended timeouts./scripts/cleanup.sh- Clean teardown./scripts/port-forward.sh- Start port forwarding for coder-server./scripts/test-faas-functions.sh- Test faas namespace functions
If you encounter timeouts or installation failures in WSL2/VDI:
- Use
./scripts/setup-wsl2.shinstead ofsetup.sh - See
docs/WSL2-TROUBLESHOOTING.mdfor detailed solutions - Increase WSL2 memory allocation in
.wslconfig
If port forwarding stops working:
./scripts/port-forward.shEnsure you're using the correct namespace:
fission function list --namespace faas
fission function test --name <function-name> --namespace faaskubectl get pods -n faas
kubectl logs -n faas <pod-name>kubectl get pods -n fission
kubectl logs -n fission deployment/router./scripts/cleanup.sh
./scripts/setup.shhelm upgrade fission fission-charts/fission-all --namespace fissionfission function list --namespace faas > functions-backup.txtCheck cluster status:
kubectl get pods -n fission # Fission components
kubectl get pods -n faas # Function pods
kubectl get functions -n faas # Function definitions- Professional: Uses
fission -n faaslike enterprise environments - Portable: Works identically across all platforms
- Isolated: No interference with existing Kubernetes setups
- Complete: Includes both serverless platform and development IDE
- Persistent: Git-backed for team collaboration
- Create your first function in the
faasnamespace - Access the browser IDE at http://localhost:31315
- Develop and test functions using the integrated environment
- Share this portable setup with your team
This environment is designed to be portable and reliable. Test any changes across multiple platforms before committing.
This project is licensed under the MIT License. See LICENSE file for details.
For issues and questions:
- Check the troubleshooting section above
- Review Fission documentation: https://fission.io/docs/
- Review Coder documentation: https://coder.com/docs/code-server
- Create an issue in this repository
Happy serverless development! 🎉