Skip to content

web-seven/overlock

Repository files navigation

Overlock

Overlock is a lightweight CLI tool designed to simplify the management of Crossplane resources and environments. It supports KinD, K3s, and K3d clusters, making it ideal for local development and testing of Crossplane configurations, providers and functions.

Features

  • Easily manage Crossplane environments: Create and manage Crossplane environments for local development or testing purposes.
  • Supports multiple cluster types: Works with KinD, K3s, and K3d, allowing you to choose the cluster type best suited for your development and testing needs.
  • Local and remote package registries: Manage both local and remote Crossplane registries to handle configurations, providers and functions.
  • Load and apply Crossplane configurations: Seamlessly load Crossplane configuration packages from local .xpkg files or apply them directly from remote URLs.
  • Provider management: Easily load and apply Crossplane Providers from .xpkg files, supporting rapid local development.
  • Function management: Easily load and apply Crossplane Functions from .xpkg files.
  • Simplified interface: Overlock automates Crossplane installation, ensuring the setup process is hassle-free and quick.

Installation

To install Overlock, follow these steps:

Prerequisites

  • Docker installed and running.
  • KinD, k3d or k3s installed.

Install via pre-compiled binary

  1. Download the latest version for your CPU architecture with the Overlock by run install script:
curl -sL "https://raw.githubusercontent.com/web-seven/overlock/refs/heads/main/scripts/install.sh" | sh
  1. Move the extracted binary to a directory in your PATH (e.g., /usr/local/bin):

    sudo mv overlock /usr/local/bin/
  2. Verify the installation:

    overlock --version

Usage

Overlock simplifies Crossplane setup and management across different cluster types. Use the following commands to work with your environment:

  • Create or delete a Crossplane environment:

    overlock environment create|delete <environment-name>
  • Create or delete a local Crossplane package registry:

    overlock registry create|delete --local [--default]
  • Create or delete a remote private Crossplane registry:

    overlock registry create|delete [--default] --registry-server=<httpsurl> --username=<string> --password=<string> --email=<string>
  • Load a Crossplane configuration from a local .xpkg file:

    overlock configuration load <file.xpkg>
  • Apply a Crossplane configuration from a remote URL:

    overlock configuration apply <url>
  • Serve a Crossplane configuration from local sources:

    overlock configuration serve <configuration_package_path>
  • Load and apply a Crossplane provider from an .xpkg file:

    overlock provider load --apply --path=<file.xpkg> provider-name:version
  • Load and apply a Crossplane function from an .xpkg file:

    overlock function load --apply --path=<file.xpkg> function-name:version

Overlock will automatically set up Crossplane on the specified cluster type (KinD, K3s, or K3d) based on your configuration.

Contributing

We welcome contributions! Please see the CONTRIBUTING.md for more details on how to get involved.

Community

This project is written in Golang but many of the community contributions so far have been through blogging, speaking engagements, helping to test and drive the backlog of Overlock. If you'd like to help in any way then that would be more than welcome whatever your level of experience.

Chat

Join Discord here

License

This project is licensed under the MIT License. See the LICENSE file for details.