An open API service indexing awesome lists of open source software.

https://github.com/web-seven/overlock

The Crossplane Environment CLI
https://github.com/web-seven/overlock

crossplane development kubernetes native platform

Last synced: about 2 months ago
JSON representation

The Crossplane Environment CLI

Awesome Lists containing this project

README

          

[![Discord](https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat)](https://discord.gg/W7AsrUb5GC)
[![Go Version](https://img.shields.io/badge/Go-1.24.0+-00ADD8?logo=go)](https://golang.org/doc/install)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![GitHub Release](https://img.shields.io/github/v/release/web-seven/overlock)](https://github.com/web-seven/overlock/releases)





Overlock Logo

# Overlock

**Simplify Crossplane development and testing with a powerful CLI toolkit.**

Overlock handles the complexity of setting up Crossplane environments, making it easy for developers to build, test, and deploy infrastructure-as-code solutions. Get a fully configured Crossplane environment running in minutes, not hours.

## Table of Contents

- [Features](#features)
- [Quick Start](#quick-start)
- [Installation](#installation)
- [Documentation](#documentation)
- [Architecture Overview](#architecture-overview)
- [Ecosystem Comparison](#ecosystem-comparison)
- [Community](#community)
- [Contributing](#contributing)
- [License](#license)

## Features

- **⚡ [Quick Environment Setup](docs/overview.md#quick-environment-setup)** - Create fully configured Crossplane environments with a single command
- **🎯 [Multi-Engine Support](docs/overview.md#multi-engine-support)** - Works seamlessly with KinD, K3s, K3d, and K3s-Docker Kubernetes distributions
- **🖥️ [Multi-Node & Remote Nodes](docs/overview.md#multi-node--remote-nodes-k3s-docker)** - Add remote Linux machines as worker nodes via SSH to distribute Crossplane workloads across multiple hosts
- **🔋 [CPU Limits](docs/overview.md#cpu-limits)** - Cap CPU usage per container node to keep your machine responsive during complex control plane development
- **📦 [Package Management](docs/overview.md#package-management)** - Install and manage Crossplane configurations, providers, and functions
- **🔄 [Live Development](docs/overview.md#live-development)** - Hot-reload support for local package development
- **🏗️ [Registry Integration](docs/overview.md#registry-integration)** - Support for both local and remote package registries
- **🔌 [Plugin System](docs/overview.md#plugin-system)** - Extensible architecture for custom functionality

## Quick Start

```bash
# Create a new Crossplane environment
overlock environment create my-dev-env

# Install a cloud provider (GCP example)
overlock provider install xpkg.upbound.io/crossplane-contrib/provider-gcp:v0.22.0

# Apply a configuration
overlock configuration apply xpkg.upbound.io/devops-toolkit/dot-application:v3.0.31

# List your environments
overlock environment list
```

That's it! You now have a fully functional Crossplane environment ready for development.

## Installation

### Prerequisites

- **Docker** (required for creating Kubernetes clusters)
- One of: **KinD**, **K3s**, or **K3d** (choose based on your preference)

### Install Overlock

**Latest version:**
```bash
curl -sL "https://raw.githubusercontent.com/web-seven/overlock/refs/heads/main/scripts/install.sh" | sh
sudo mv overlock /usr/local/bin/
```

**Specific version:**
```bash
curl -sL "https://raw.githubusercontent.com/web-seven/overlock/refs/heads/main/scripts/install.sh" | sh -s -- -v 0.11.0-beta.11
sudo mv overlock /usr/local/bin/
```

**Verify installation:**
```bash
overlock --version
```

### Building from Source

```bash
git clone https://github.com/web-seven/overlock.git
cd overlock
go build -o overlock ./cmd/overlock
```

See the [Development Guide](docs/development.md) for detailed build instructions.

## Documentation

### User Guides

- **[Feature Overview](docs/overview.md)** - Multi-node environments, CPU limits, and more
- **[Command Reference](docs/commands.md)** - Complete CLI command documentation
- **[Configuration Guide](docs/configuration.md)** - Environment variables and configuration options
- **[Usage Examples](docs/examples.md)** - Common workflows and practical examples
- **[Troubleshooting](docs/troubleshoot.md)** - Solutions to common issues

### Developer Resources

- **[Development Guide](docs/development.md)** - Building from source, testing, and contributing
- **[CONTRIBUTING.md](CONTRIBUTING.md)** - Contribution guidelines and code of conduct

### Command Overview

Overlock organizes functionality into intuitive command groups:

| Command | Alias | Description |
|---------|-------|-------------|
| `environment` | `env` | Create and manage Kubernetes environments |
| `provider` | `prv` | Install and manage cloud providers |
| `configuration` | `cfg` | Manage Crossplane configurations |
| `function` | `fnc` | Manage Crossplane functions |
| `registry` | `reg` | Configure package registries |
| `resource` | `res` | Create and manage custom resources |

Use `overlock --help` for detailed information on any command.

## Architecture Overview

Overlock is built with a modular architecture designed for extensibility and maintainability:

```
┌─────────────────────────────────────────────────────┐
│ Overlock CLI │
├─────────────────────────────────────────────────────┤
│ Environment Manager │ Package Manager │
│ - KinD │ - Configurations │
│ - K3s / K3d │ - Providers │
│ - K3s-Docker │ - Functions │
├─────────────────────────────────────────────────────┤
│ Engine Manager │ Registry Manager │
│ - Crossplane Install │ - Local Registries │
│ - Helm Integration │ - Remote Registries │
├─────────────────────────────────────────────────────┤
│ Resource Manager │ Plugin System │
│ - Custom Resources │ - Dynamic Loading │
│ - YAML Processing │ - Extensibility │
└─────────────────────────────────────────────────────┘


┌─────────────────────────────────────┐
│ Kubernetes Cluster │
│ (KinD / K3s / K3d / K3s-Docker) │
│ + Crossplane │
└─────────────────────────────────────┘
```

### Key Components

- **CLI Framework**: Kong-based command parsing with intuitive subcommands
- **Engine Management**: Helm-based Crossplane installation and lifecycle
- **Environment Management**: Multi-engine Kubernetes cluster operations
- **Package Management**: Crossplane configurations, providers, and functions
- **Plugin System**: Extensible architecture for custom functionality

For detailed architecture information, see the [Development Guide](docs/development.md).

## Ecosystem Comparison

| Feature | Overlock | kubectl + helm | Crossplane CLI | up CLI |
|---------|----------|----------------|----------------|--------|
| Environment creation | ✅ Single command | ❌ Manual setup | ❌ Manual setup | ✅ Automated |
| Multi-engine support | ✅ KinD/K3s/K3d/K3s-Docker | ✅ Any K8s | ✅ Any K8s | ⚠️ Limited |
| Hybrid environments | ✅ Local + remote nodes via SSH | ❌ Manual | ❌ No | ❌ No |
| Package management | ✅ Built-in | ❌ Manual | ✅ Limited | ✅ Built-in |
| Live reload dev | ✅ Yes | ❌ No | ❌ No | ⚠️ Partial |
| Registry support | ✅ Local + Remote | ❌ Manual | ⚠️ Remote only | ✅ Yes |
| Environment lifecycle | ✅ Full control | ❌ Manual | ❌ Manual | ⚠️ Limited |
| Plugin system | ✅ Yes | N/A | ❌ No | ❌ No |

**Why Overlock?**

Overlock bridges the gap between simple kubectl/helm workflows and full-featured cloud platforms. It provides:
- Faster setup than manual kubectl/helm configurations
- More development-focused features than standard Crossplane CLI
- Better local development experience than cloud-based solutions
- Complete control over your development environment

## Community

### Get Help & Connect

- **💬 Discord**: [Join our Discord](https://discord.gg/W7AsrUb5GC) for questions and community support
- **🐛 Issues**: [Report bugs or request features](https://github.com/web-seven/overlock/issues)
- **📖 Discussions**: [Join discussions](https://github.com/web-seven/overlock/discussions)

### Contributing

We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.

- Read our [Contributing Guide](CONTRIBUTING.md) to get started
- Check out [Good First Issues](https://github.com/web-seven/overlock/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
- Review the [Development Guide](docs/development.md) for technical details

### Code of Conduct

We are committed to providing a welcoming and inclusive experience. Please read our Code of Conduct in [CONTRIBUTING.md](CONTRIBUTING.md).

## Credits

Overlock is built on top of excellent open-source projects:
- [Crossplane](https://crossplane.io/) - The cloud native control plane framework
- [Kubernetes](https://kubernetes.io/) - Container orchestration platform
- [Helm](https://helm.sh/) - The Kubernetes package manager
- [KinD](https://kind.sigs.k8s.io/), [K3s](https://k3s.io/), [K3d](https://k3d.io/) - Kubernetes engines

## License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

---


Made with ❤️ by the Overlock community