A Kubernetes operator for dev servers.
Project description
DevServer Operator
A Kubernetes-native operator for managing development servers, particularly designed for PyTorch and ML development workloads. This project provides both a Kubernetes operator and a CLI tool for creating, managing, and accessing development environments.
📍 Current Status: This project is under active development.
🚀 Features
- Kubernetes-Native: Built using the Kopf framework for Python.
- Resource Templates:
DevServerFlavorCRDs define t-shirt sized resource configurations. - User Management:
DevServerUserCRDs for managing user access and SSH keys. - Lifecycle Management: Automatic shutdown and expiration.
- CLI Tool:
devctlfor easy interaction with DevServers. - SSH Agent Forwarding: Seamlessly forward your SSH agent to the DevServer.
- YAML Configuration: Configure
devctlusing~/.config/devctl/config.yaml. - Test-Driven Development: Comprehensive test suite using
pytestandk3d.
📋 Prerequisites
🏃 Quick Start
1. Set Up Local Development Environment
# Create a local k3d cluster
k3d cluster create devserver-cluster
2. Deploy the CRDs and Flavors
# Apply the Custom Resource Definitions and Flavors
make install-crds
3. Run the Operator
# Start the operator in development mode
make run
4. Use the CLI
In a new terminal:
# Create a development server
uv run devctl create --name mydev --flavor cpu-small
# List your servers
uv run devctl list
# Add a user
uv run devctl user add --name test-user --public-key-file ~/.ssh/id_rsa.pub
# Create a server with GPU support (see dev/eks/README.md for setup)
uv run devctl create --name my-gpu-dev --flavor gpu-small --image fedora:latest
# Delete a server
uv run devctl delete mydev
📚 Documentation
For more detailed documentation, please see the following README.md files:
🤝 Contributing
Contributions are welcome! Please see the PROJECT.md for the development plan.
Before submitting a pull request, please run the pre-commit checks to ensure your changes adhere to the project's coding standards:
make pre-commit
- Fork the repository.
- Create a feature branch.
- Make your changes with tests.
- Run the test suite:
make test - Submit a pull request.
📄 License
This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devservers-0.0.1-py3-none-any.whl.
File metadata
- Download URL: devservers-0.0.1-py3-none-any.whl
- Upload date:
- Size: 45.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bc74ebf176467cdf23bd4583e356842884930d13d0ed7242d2afcc0f5bab457
|
|
| MD5 |
b529e78939af01e3f7b6e8739d27f486
|
|
| BLAKE2b-256 |
47fceac035d3dc0a81fa949f78ab0e54d46b25777e6e6f76af852199bfc758c7
|