All Projects → Clivern → Beetle

Clivern / Beetle

Licence: mit
🔥 Kubernetes multi-cluster deployment automation service.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Beetle

Container Service Extension
Container Service for VMware vCloud Director
Stars: ✭ 66 (-55.7%)
Mutual labels:  cloud-native, kubernetes-deployment
Devops Readme.md
What to Read to Learn More About DevOps
Stars: ✭ 398 (+167.11%)
Mutual labels:  cloud-native, continuous-deployment
Metalk8s
An opinionated Kubernetes distribution with a focus on long-term on-prem deployments
Stars: ✭ 217 (+45.64%)
Mutual labels:  cloud-native, kubernetes-deployment
Devtron
Software Delivery Workflow For Kubernetes
Stars: ✭ 130 (-12.75%)
Mutual labels:  continuous-deployment, kubernetes-deployment
Docker Continuous Deployment
continuous deployment of a microservices application with Docker
Stars: ✭ 141 (-5.37%)
Mutual labels:  continuous-deployment
Build
Netlify Build runs the build command, Build Plugins and bundles Netlify Functions.
Stars: ✭ 135 (-9.4%)
Mutual labels:  continuous-deployment
Websiteone
A website for Agile Ventures
Stars: ✭ 132 (-11.41%)
Mutual labels:  continuous-deployment
Aws Eks Kubernetes Masterclass
AWS EKS Kubernetes - Masterclass | DevOps, Microservices
Stars: ✭ 129 (-13.42%)
Mutual labels:  kubernetes-deployment
Flux Get Started
Flux v1: Getting started with Flux and the Helm Operator
Stars: ✭ 148 (-0.67%)
Mutual labels:  continuous-deployment
Rafter
Kubernetes-native S3-like files/assets store based on CRDs and powered by MinIO
Stars: ✭ 145 (-2.68%)
Mutual labels:  cloud-native
Booster
Booster Cloud Framework
Stars: ✭ 136 (-8.72%)
Mutual labels:  cloud-native
Spring Cloud Config
External configuration (server and client) for Spring Cloud
Stars: ✭ 1,740 (+1067.79%)
Mutual labels:  cloud-native
Ecs Deploy
Simple shell script for initiating blue-green deployments on Amazon EC2 Container Service (ECS)
Stars: ✭ 1,809 (+1114.09%)
Mutual labels:  continuous-deployment
Inertia
✈️ Effortless, self-hosted continuous deployment for small teams and projects
Stars: ✭ 133 (-10.74%)
Mutual labels:  continuous-deployment
Pathivu
An efficient log ingestion and log aggregation system https://pathivu.io/
Stars: ✭ 146 (-2.01%)
Mutual labels:  cloud-native
Spring Cloud Cli
Spring Cloud CLI features
Stars: ✭ 139 (-6.71%)
Mutual labels:  cloud-native
Prout
Looks after your pull requests, tells you when they're live
Stars: ✭ 138 (-7.38%)
Mutual labels:  continuous-deployment
Bodywork Core
Deploy machine learning projects developed in Python, to Kubernetes. Accelerated MLOps 🚀
Stars: ✭ 145 (-2.68%)
Mutual labels:  continuous-deployment
Vpp Agent
⚡️ Control plane management agent for FD.io's VPP
Stars: ✭ 137 (-8.05%)
Mutual labels:  cloud-native
Coolstore Microservices
A full-stack .NET microservices build on Dapr and Tye
Stars: ✭ 1,903 (+1177.18%)
Mutual labels:  cloud-native

Beetle

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.

Documentation

Deployment

On a Linux Server

Download the latest beetle binary.

$ 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 and run beetle with systemd or anything else you prefer.

$ ./beetle serve -c /custom/path/config.prod.yml

Development

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

$ 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

# 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}
            configMapName: ${BEETLE_KUBE_CLUSTER_01_CONFIG_MAP:-beetle-configs}
        -
            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}
            configMapName: ${BEETLE_KUBE_CLUSTER_02_CONFIG_MAP:-beetle-configs}

    # 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.

$ 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

Beetle Terraform Provider

You can find the terraform provider here https://github.com/Clivern/terraform-provider-beetle. It is preferred to use it in order to interact with beetle API server or build your own thing using the SDK.

API Documentation

Go to https://editor.swagger.io/ and import this file https://raw.githubusercontent.com/Clivern/Beetle/master/swagger.yaml.

Versioning

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 https://github.com/clivern/beetle/issues

Security Issues

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

Contributing

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

License

© 2020, clivern. Released under MIT License.

Beetle is authored and maintained by @clivern.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].