Skip to main content

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: DevServerFlavor CRDs define t-shirt sized resource configurations.
  • User Management: DevServerUser CRDs for managing user access and SSH keys.
  • Lifecycle Management: Automatic shutdown and expiration.
  • CLI Tool: devctl for easy interaction with DevServers.
  • SSH Agent Forwarding: Seamlessly forward your SSH agent to the DevServer.
  • YAML Configuration: Configure devctl using ~/.config/devctl/config.yaml.
  • Test-Driven Development: Comprehensive test suite using pytest and k3d.

📋 Prerequisites

  • Python 3.9+
  • Docker
  • uv
  • k3d
  • kubectl
  • A Kubernetes cluster (local k3d or remote)

🏃 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
  1. Fork the repository.
  2. Create a feature branch.
  3. Make your changes with tests.
  4. Run the test suite: make test
  5. Submit a pull request.

📄 License

This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

devserver_operator-0.0.1-py3-none-any.whl (45.4 kB view details)

Uploaded Python 3

File details

Details for the file devserver_operator-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for devserver_operator-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b723a71b6af907029b156bcdd12d13274965cf57d0ed5b541b98624f694ba47e
MD5 1008f2894f98a23f981770d45fe186a9
BLAKE2b-256 38f85efb2eb6b7927112ab6bb54df6b47ac690962b58349723583056c651bb8f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page