Awesome Open Source
Awesome Open Source


Kubernetes multi-cluster deployment automation service

🦄 Check out the demo!

Application deployment and management should be automated, auditable, and easy to understand and that's what beetle tries to achieve in a simple manner. Beetle automates the deployment and rollback of your applications in a multi-cluster, multi-namespaces kubernetes environments. Easy to integrate with through API endpoints & webhooks to fit a variety of workflows.



On a Linux Server

Download the latest beetle binary.

$ curl -sL | tar xz

Create your config file as explained on development part and run beetle with systemd or anything else you prefer.

$ ./beetle serve -c /custom/path/


Beetle uses Go Modules to manage dependencies. First Create a prod config file.

$ git clone
$ cp config.dist.yml

Then add your default configs. You probably wondering how the following configs even work! let's pick one and explain.

The item mode: ${BEETLE_APP_MODE:-dev} means that the mode is dev unless environment variable BEETLE_APP_MODE is defined. so you can always override the value by defining the environment variable export BEETLE_APP_MODE=prod. and same for others

# App configs
    # Env mode (dev or prod)
    mode: ${BEETLE_APP_MODE:-dev}
    # HTTP port
    port: ${BEETLE_API_PORT:-8080}
    # App URL
    domain: ${BEETLE_APP_DOMAIN:-}
    # TLS configs
        status: ${BEETLE_API_TLS_STATUS:-off}
        pemPath: ${BEETLE_API_TLS_PEMPATH:-cert/server.pem}
        keyPath: ${BEETLE_API_TLS_KEYPATH:-cert/server.key}

    # Message Broker Configs
        # Broker driver (native)
        driver: ${BEETLE_BROKER_DRIVER:-native}
        # Native driver configs
            # Queue max capacity
            capacity: ${BEETLE_BROKER_NATIVE_CAPACITY:-5000}
            # Number of concurrent workers
            workers: ${BEETLE_BROKER_NATIVE_WORKERS:-4}

    # API Configs
        key: ${BEETLE_API_KEY:- }

    # Runtime, Requests/Response and Beetle Metrics
            # Route for the metrics endpoint
            endpoint: ${BEETLE_METRICS_PROM_ENDPOINT:-/metrics}

    # Application Database
        # Database driver (sqlite3, mysql)
        driver: ${BEETLE_DATABASE_DRIVER:-sqlite3}
        # Database Host
        host: ${BEETLE_DATABASE_MYSQL_HOST:-localhost}
        # Database Port
        port: ${BEETLE_DATABASE_MYSQL_PORT:-3306}
        # Database Name
        name: ${BEETLE_DATABASE_MYSQL_DATABASE:-beetle.db}
        # Database Username
        username: ${BEETLE_DATABASE_MYSQL_USERNAME:-root}
        # Database Password
        password: ${BEETLE_DATABASE_MYSQL_PASSWORD:-root}

    # Kubernetes Clusters
            name: ${BEETLE_KUBE_CLUSTER_01_NAME:-production}
            inCluster: ${BEETLE_KUBE_CLUSTER_01_IN_CLUSTER:-false}
            kubeconfig: ${BEETLE_KUBE_CLUSTER_01_CONFIG_FILE:-/app/configs/production-cluster-kubeconfig.yaml}
            name: ${BEETLE_KUBE_CLUSTER_02_NAME:-staging}
            inCluster: ${BEETLE_KUBE_CLUSTER_02_IN_CLUSTER:-false}
            kubeconfig: ${BEETLE_KUBE_CLUSTER_02_CONFIG_FILE:-/app/configs/staging-cluster-kubeconfig.yaml}

    # HTTP Webhook
        url: ${BEETLE_WEBHOOK_URL:- }
        retry: ${BEETLE_WEBHOOK_RETRY:-3}
        apiKey: ${BEETLE_WEBHOOK_API_KEY:- }

# Log configs
    # Log level, it can be debug, info, warn, error, panic, fatal
    level: ${BEETLE_LOG_LEVEL:-info}
    # output can be stdout or abs path to log file /var/logs/beetle.log
    output: ${BEETLE_LOG_OUTPUT:-stdout}
    # Format can be json
    format: ${BEETLE_LOG_FORMAT:-json}

And then run the application.

$ go build beetle.go
$ ./beetle serve -c /custom/path/

// OR

$ make run

// OR

$ go run beetle.go serve -c /custom/path/

API Documentation

Go to and import this file


For transparency into our release cycle and in striving to maintain backward compatibility, Beetle is maintained under the Semantic Versioning guidelines and release process is predictable and business-friendly.

See the Releases section of our GitHub project for changelogs for each release version of Beetle. It contains summaries of the most noteworthy changes made in each release.

Bug tracker

If you have any suggestions, bug reports, or annoyances please report them to our issue tracker at

Security Issues

If you discover a security vulnerability within Beetle, please send an email to [email protected]


We are an open source, community-driven project so please feel free to join us. see the contributing guidelines for more details.


2020, clivern. Released under MIT License.

Beetle is authored and maintained by @clivern.

Alternatives To Beetle
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Go (163,592
Deployment (57,113
Kubernetes (25,177
Terraform (12,022
Continuous Deployment (7,088
Cloud Native (995
Terraform Provider (932
Gitops (507
Kubernetes Deployment (476
Canary Deployment (28
Clivern (26
Rollout Service (5
Beetle (4