https://github.com/clivern/beetle
  
  
    🔥  Kubernetes multi-cluster deployment automation service. 
    https://github.com/clivern/beetle
  
beetle canary-deployment clivern cloud-native continuous-deployment gitops hacktoberfest kubernetes kubernetes-deployment rollout-service
        Last synced: 7 months ago 
        JSON representation
    
🔥 Kubernetes multi-cluster deployment automation service.
- Host: GitHub
 - URL: https://github.com/clivern/beetle
 - Owner: Clivern
 - License: mit
 - Created: 2020-02-01T23:34:28.000Z (almost 6 years ago)
 - Default Branch: main
 - Last Pushed: 2025-03-26T18:35:20.000Z (7 months ago)
 - Last Synced: 2025-03-28T13:06:58.165Z (7 months ago)
 - Topics: beetle, canary-deployment, clivern, cloud-native, continuous-deployment, gitops, hacktoberfest, kubernetes, kubernetes-deployment, rollout-service
 - Language: Go
 - Homepage:
 - Size: 11.7 MB
 - Stars: 167
 - Watchers: 3
 - Forks: 13
 - Open Issues: 16
 - 
            Metadata Files:
            
- Readme: README.md
 - Contributing: CONTRIBUTING.md
 - Funding: .github/FUNDING.yml
 - License: LICENSE
 - Code of conduct: CODE_OF_CONDUCT.md
 - Codeowners: .github/CODEOWNERS
 
 
Awesome Lists containing this project
README
          
    
    
Beetle
    Kubernetes multi-cluster deployment automation service
    
    
    :unicorn: 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.
## Documentation
## Deployment
### On a Linux Server
Download [the latest beetle binary.](https://github.com/Clivern/Beetle/releases)
```zsh
$ curl -sL https://github.com/Clivern/Beetle/releases/download/vx.x.x/beetle_x.x.x_OS.tar.gz | tar xz
```
Create your config file as explained on [development part](#development) and run beetle with systemd or anything else you prefer.
```zsh
$ ./beetle serve -c /custom/path/config.prod.yml
```
## Development
Beetle uses Go Modules to manage dependencies. First Create a prod config file.
```zsh
$ git clone https://github.com/Clivern/Beetle.git
$ cp config.dist.yml config.prod.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
```yaml
# App configs
app:
    # Env mode (dev or prod)
    mode: ${BEETLE_APP_MODE:-dev}
    # HTTP port
    port: ${BEETLE_API_PORT:-8080}
    # App URL
    domain: ${BEETLE_APP_DOMAIN:-http://127.0.0.1:8080}
    # TLS configs
    tls:
        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:
        # Broker driver (native)
        driver: ${BEETLE_BROKER_DRIVER:-native}
        # Native driver configs
        native:
            # Queue max capacity
            capacity: ${BEETLE_BROKER_NATIVE_CAPACITY:-5000}
            # Number of concurrent workers
            workers: ${BEETLE_BROKER_NATIVE_WORKERS:-4}
    # API Configs
    api:
        key: ${BEETLE_API_KEY:- }
    # Runtime, Requests/Response and Beetle Metrics
    metrics:
        prometheus:
            # Route for the metrics endpoint
            endpoint: ${BEETLE_METRICS_PROM_ENDPOINT:-/metrics}
    # Application Database
    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
    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
    webhook:
        url: ${BEETLE_WEBHOOK_URL:- }
        retry: ${BEETLE_WEBHOOK_RETRY:-3}
        apiKey: ${BEETLE_WEBHOOK_API_KEY:- }
# Log configs
log:
    # 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.
```zsh
$ go build beetle.go
$ ./beetle serve -c /custom/path/config.prod.yml
// OR
$ make run
// OR
$ go run beetle.go serve -c /custom/path/config.prod.yml
```
## API Documentation
Go to https://editor.swagger.io/ and import this file https://raw.githubusercontent.com/Clivern/Beetle/main/swagger.yaml.
## Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, Beetle is maintained under the [Semantic Versioning guidelines](https://semver.org/) and release process is predictable and business-friendly.
See the [Releases section of our GitHub project](https://github.com/clivern/beetle/releases) 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 https://github.com/clivern/beetle/issues
## Security Issues
If you discover a security vulnerability within Beetle, please send an email to [hello@clivern.com](mailto:hello@clivern.com)
## Contributing
We are an open source, community-driven project so please feel free to join us. see the [contributing guidelines](CONTRIBUTING.md) for more details.
## License
© 2020, clivern. Released under [MIT License](https://opensource.org/licenses/mit-license.php).
**Beetle** is authored and maintained by [@clivern](http://github.com/clivern).