{"id":13644513,"url":"https://github.com/Clivern/Beetle","last_synced_at":"2025-04-21T10:33:27.276Z","repository":{"id":37102861,"uuid":"237693145","full_name":"Clivern/Beetle","owner":"Clivern","description":"🔥  Kubernetes multi-cluster deployment automation service.","archived":false,"fork":false,"pushed_at":"2025-04-08T16:36:21.000Z","size":12273,"stargazers_count":167,"open_issues_count":16,"forks_count":13,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-13T02:29:40.938Z","etag":null,"topics":["beetle","canary-deployment","clivern","cloud-native","continuous-deployment","gitops","hacktoberfest","kubernetes","kubernetes-deployment","rollout-service"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Clivern.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"custom":"clivern.com/sponsor/"}},"created_at":"2020-02-01T23:34:28.000Z","updated_at":"2025-02-12T06:38:48.000Z","dependencies_parsed_at":"2023-11-16T03:23:51.645Z","dependency_job_id":"8d12bdcb-c871-4521-bb18-c4b91ffe6bc8","html_url":"https://github.com/Clivern/Beetle","commit_stats":{"total_commits":552,"total_committers":6,"mean_commits":92.0,"dds":0.4746376811594203,"last_synced_commit":"fddfc896762b6b1967ec0f4341598e80d64486b5"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FBeetle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FBeetle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FBeetle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FBeetle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Clivern","download_url":"https://codeload.github.com/Clivern/Beetle/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250040471,"owners_count":21365111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beetle","canary-deployment","clivern","cloud-native","continuous-deployment","gitops","hacktoberfest","kubernetes","kubernetes-deployment","rollout-service"],"created_at":"2024-08-02T01:02:06.383Z","updated_at":"2025-04-21T10:33:25.798Z","avatar_url":"https://github.com/Clivern.png","language":"Go","funding_links":["clivern.com/sponsor/"],"categories":["Go","Management","Continuous Delivery \u0026 GitOps"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/clivern/Beetle/main/assets/img/gopher.png?v=1.0.4\" width=\"180\" /\u003e\n    \u003ch3 align=\"center\"\u003eBeetle\u003c/h3\u003e\n    \u003cp align=\"center\"\u003eKubernetes multi-cluster deployment automation service\u003c/p\u003e\n    \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://github.com/Clivern/Beetle/actions\"\u003e\u003cimg src=\"https://github.com/Clivern/Beetle/workflows/Build/badge.svg\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://github.com/Clivern/Beetle/actions\"\u003e\u003cimg src=\"https://github.com/Clivern/Beetle/workflows/Release/badge.svg\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://github.com/Clivern/Beetle/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/Version-v1.0.4-red.svg\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://goreportcard.com/report/github.com/Clivern/Beetle\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/clivern/Beetle?v=1.0.4\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://godoc.org/github.com/clivern/beetle\"\u003e\u003cimg src=\"https://godoc.org/github.com/clivern/beetle?status.svg\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://hub.docker.com/r/clivern/beetle\"\u003e\u003cimg src=\"https://img.shields.io/badge/Docker-Latest-orange\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://github.com/Clivern/Beetle/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/LICENSE-MIT-orange.svg\"\u003e\u003c/a\u003e\n    \u003c/p\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/Clivern/Beetle/main/assets/img/chart.png?v=1.0.4\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n\u003ch4 align=\"center\"\u003e\n    \u003ca href=\"https://www.youtube.com/watch?v=54qQIYTZiAw\" target=\"_blank\"\u003e:unicorn: Check out the demo!\u003c/a\u003e\n\u003c/h4\u003e\n\u003cbr/\u003e\n\nApplication 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 \u0026 webhooks to fit a variety of workflows.\n\n\n## Documentation\n\n## Deployment\n\n### On a Linux Server\n\nDownload [the latest beetle binary.](https://github.com/Clivern/Beetle/releases)\n\n```zsh\n$ curl -sL https://github.com/Clivern/Beetle/releases/download/vx.x.x/beetle_x.x.x_OS.tar.gz | tar xz\n```\n\nCreate your config file as explained on [development part](#development) and run beetle with systemd or anything else you prefer.\n\n```zsh\n$ ./beetle serve -c /custom/path/config.prod.yml\n```\n\n\n## Development\n\nBeetle uses Go Modules to manage dependencies. First Create a prod config file.\n\n```zsh\n$ git clone https://github.com/Clivern/Beetle.git\n$ cp config.dist.yml config.prod.yml\n```\n\nThen add your default configs. You probably wondering how the following configs even work! let's pick one and explain.\n\nThe 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\n\n```yaml\n# App configs\napp:\n    # Env mode (dev or prod)\n    mode: ${BEETLE_APP_MODE:-dev}\n    # HTTP port\n    port: ${BEETLE_API_PORT:-8080}\n    # App URL\n    domain: ${BEETLE_APP_DOMAIN:-http://127.0.0.1:8080}\n    # TLS configs\n    tls:\n        status: ${BEETLE_API_TLS_STATUS:-off}\n        pemPath: ${BEETLE_API_TLS_PEMPATH:-cert/server.pem}\n        keyPath: ${BEETLE_API_TLS_KEYPATH:-cert/server.key}\n\n    # Message Broker Configs\n    broker:\n        # Broker driver (native)\n        driver: ${BEETLE_BROKER_DRIVER:-native}\n        # Native driver configs\n        native:\n            # Queue max capacity\n            capacity: ${BEETLE_BROKER_NATIVE_CAPACITY:-5000}\n            # Number of concurrent workers\n            workers: ${BEETLE_BROKER_NATIVE_WORKERS:-4}\n\n    # API Configs\n    api:\n        key: ${BEETLE_API_KEY:- }\n\n    # Runtime, Requests/Response and Beetle Metrics\n    metrics:\n        prometheus:\n            # Route for the metrics endpoint\n            endpoint: ${BEETLE_METRICS_PROM_ENDPOINT:-/metrics}\n\n    # Application Database\n    database:\n        # Database driver (sqlite3, mysql)\n        driver: ${BEETLE_DATABASE_DRIVER:-sqlite3}\n        # Database Host\n        host: ${BEETLE_DATABASE_MYSQL_HOST:-localhost}\n        # Database Port\n        port: ${BEETLE_DATABASE_MYSQL_PORT:-3306}\n        # Database Name\n        name: ${BEETLE_DATABASE_MYSQL_DATABASE:-beetle.db}\n        # Database Username\n        username: ${BEETLE_DATABASE_MYSQL_USERNAME:-root}\n        # Database Password\n        password: ${BEETLE_DATABASE_MYSQL_PASSWORD:-root}\n\n    # Kubernetes Clusters\n    clusters:\n        -\n            name: ${BEETLE_KUBE_CLUSTER_01_NAME:-production}\n            inCluster: ${BEETLE_KUBE_CLUSTER_01_IN_CLUSTER:-false}\n            kubeconfig: ${BEETLE_KUBE_CLUSTER_01_CONFIG_FILE:-/app/configs/production-cluster-kubeconfig.yaml}\n        -\n            name: ${BEETLE_KUBE_CLUSTER_02_NAME:-staging}\n            inCluster: ${BEETLE_KUBE_CLUSTER_02_IN_CLUSTER:-false}\n            kubeconfig: ${BEETLE_KUBE_CLUSTER_02_CONFIG_FILE:-/app/configs/staging-cluster-kubeconfig.yaml}\n\n    # HTTP Webhook\n    webhook:\n        url: ${BEETLE_WEBHOOK_URL:- }\n        retry: ${BEETLE_WEBHOOK_RETRY:-3}\n        apiKey: ${BEETLE_WEBHOOK_API_KEY:- }\n\n# Log configs\nlog:\n    # Log level, it can be debug, info, warn, error, panic, fatal\n    level: ${BEETLE_LOG_LEVEL:-info}\n    # output can be stdout or abs path to log file /var/logs/beetle.log\n    output: ${BEETLE_LOG_OUTPUT:-stdout}\n    # Format can be json\n    format: ${BEETLE_LOG_FORMAT:-json}\n```\n\nAnd then run the application.\n\n```zsh\n$ go build beetle.go\n$ ./beetle serve -c /custom/path/config.prod.yml\n\n// OR\n\n$ make run\n\n// OR\n\n$ go run beetle.go serve -c /custom/path/config.prod.yml\n```\n\n\n## API Documentation\n\nGo to https://editor.swagger.io/ and import this file https://raw.githubusercontent.com/Clivern/Beetle/main/swagger.yaml.\n\n\n## Versioning\n\nFor 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.\n\nSee 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.\n\n\n## Bug tracker\n\nIf you have any suggestions, bug reports, or annoyances please report them to our issue tracker at https://github.com/clivern/beetle/issues\n\n\n## Security Issues\n\nIf you discover a security vulnerability within Beetle, please send an email to [hello@clivern.com](mailto:hello@clivern.com)\n\n\n## Contributing\n\nWe are an open source, community-driven project so please feel free to join us. see the [contributing guidelines](CONTRIBUTING.md) for more details.\n\n\n## License\n\n© 2020, clivern. Released under [MIT License](https://opensource.org/licenses/mit-license.php).\n\n**Beetle** is authored and maintained by [@clivern](http://github.com/clivern).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FClivern%2FBeetle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FClivern%2FBeetle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FClivern%2FBeetle/lists"}