Skip to main content

Configuration

This document describes how to configure Overlock CLI for your environment.

Table of Contents

Global Options

Overlock supports several global options that can be used with any command:

overlock [global-options] <command>

Available Global Options

OptionShortDescriptionDefault
--debug-DEnable debug mode for verbose outputfalse
--namespace-nNamespace for cluster resourcescrossplane-system
--engine-release-rCrossplane Helm release namecrossplane
--engine-version-vCrossplane version to use1.19.0
--plugin-pathPath to plugin directory~/.config/overlock/plugins

Usage Examples

Enable debug mode:

overlock --debug environment create my-env

Use custom namespace:

overlock --namespace my-namespace provider list

Install specific Crossplane version:

overlock --engine-version 1.18.0 environment create my-env

Combine multiple options:

overlock --debug --namespace custom-ns --engine-version 1.19.0 environment create my-env

Environment Variables

You can set environment variables to avoid repeating the same options:

OVERLOCK_ENGINE_NAMESPACE

Default namespace for Crossplane resources.

export OVERLOCK_ENGINE_NAMESPACE=custom-namespace
overlock environment create my-env

OVERLOCK_ENGINE_RELEASE

Default Helm release name for Crossplane installations.

export OVERLOCK_ENGINE_RELEASE=my-crossplane
overlock environment create my-env

OVERLOCK_ENGINE_VERSION

Default Crossplane version to install.

export OVERLOCK_ENGINE_VERSION=1.18.0
overlock environment create my-env

Example Configuration

Add these to your ~/.bashrc or ~/.zshrc:

# Overlock Configuration
export OVERLOCK_ENGINE_NAMESPACE=crossplane-system
export OVERLOCK_ENGINE_RELEASE=crossplane
export OVERLOCK_ENGINE_VERSION=1.19.0

Plugin Configuration

Overlock supports a plugin system for extending functionality.

Plugin Directory

Default plugin path: ~/.config/overlock/plugins

You can override this with:

overlock --plugin-path /path/to/plugins <command>

Or set it via environment variable:

export OVERLOCK_PLUGIN_PATH=/path/to/plugins

Plugin Structure

Plugins should be placed in the configured plugin directory. Each plugin is a standalone executable that follows the Overlock plugin protocol.

Kubeconfig

Overlock uses the standard Kubernetes configuration for cluster authentication:

  • Default location: ~/.kube/config
  • Respects KUBECONFIG environment variable
  • Uses the current context by default

Working with Multiple Contexts

# List available contexts
kubectl config get-contexts

# Switch context
kubectl config use-context <context-name>

# Run Overlock with specific context
kubectl config use-context my-cluster
overlock environment list

Resource Labels

Overlock automatically labels resources it manages with:

metadata:
labels:
app.kubernetes.io/managed-by: overlock

This allows you to identify and filter resources managed by Overlock:

kubectl get all -l app.kubernetes.io/managed-by=overlock

Registry Configuration

Local Registry

When creating a local registry, Overlock sets up:

  • A Docker registry container
  • Port mapping (typically 5000:5000)
  • Automatic integration with your environment
overlock registry create --local --default

Remote Registry

For remote registries, you'll need:

  • Registry URL
  • Authentication credentials
  • Email address
overlock registry create \
--registry-server=registry.example.com \
--username=myuser \
--password=mypass \
--email=user@example.com

Registry Storage

Registry configurations are stored in the Kubernetes cluster as secrets and configmaps.

Advanced Configuration

Custom Helm Values

While not directly exposed through CLI flags, you can customize Crossplane Helm installations by modifying the Helm chart values that Overlock uses internally.

Network Configuration

Overlock creates Kubernetes clusters with default networking. Ensure:

  • Docker daemon is running
  • Required ports are available
  • No firewall blocking cluster communication

Resource Requirements

Minimum requirements for running Overlock environments:

  • CPU: 2 cores recommended
  • Memory: 4GB RAM minimum, 8GB recommended
  • Disk: 10GB free space per environment
  • Docker: 20.10+ or compatible container runtime