{"id":20677744,"url":"https://github.com/clivern/toad","last_synced_at":"2025-10-25T02:18:19.629Z","repository":{"id":37023716,"uuid":"248292837","full_name":"Clivern/Toad","owner":"Clivern","description":"❄️ Containerized Application for Testing Purposes.","archived":false,"fork":false,"pushed_at":"2025-10-19T02:56:12.000Z","size":291,"stargazers_count":3,"open_issues_count":7,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-19T15:58:35.454Z","etag":null,"topics":["clivern","containerized-applications","docker","k8s","kubernetes","toad"],"latest_commit_sha":null,"homepage":"https://github.com/Clivern/Beetle","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"clivern"}},"created_at":"2020-03-18T17:04:06.000Z","updated_at":"2024-01-14T00:01:03.000Z","dependencies_parsed_at":"2022-08-18T19:30:55.160Z","dependency_job_id":"9cf95c69-302f-484b-8dbb-7bee8c557f6d","html_url":"https://github.com/Clivern/Toad","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/Clivern/Toad","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FToad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FToad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FToad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FToad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Clivern","download_url":"https://codeload.github.com/Clivern/Toad/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FToad/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280893662,"owners_count":26409292,"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","status":"online","status_checked_at":"2025-10-25T02:00:06.499Z","response_time":81,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["clivern","containerized-applications","docker","k8s","kubernetes","toad"],"created_at":"2024-11-16T21:16:55.952Z","updated_at":"2025-10-25T02:18:19.591Z","avatar_url":"https://github.com/Clivern.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"Toad Logo\" src=\"https://raw.githubusercontent.com/clivern/Toad/master/assets/img/gopher.png?v=0.2.4\" width=\"150\" /\u003e\n    \u003ch3 align=\"center\"\u003eToad\u003c/h3\u003e\n    \u003cp align=\"center\"\u003eContainerized Application for Testing Purposes\u003c/p\u003e\n    \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://travis-ci.com/Clivern/Toad\"\u003e\u003cimg src=\"https://travis-ci.com/Clivern/Toad.svg?branch=master\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://github.com/Clivern/Toad/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/Version-0.2.4-red.svg\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://goreportcard.com/report/github.com/Clivern/Toad\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/clivern/Toad?v=0.2.4\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://hub.docker.com/r/clivern/toad\"\u003e\u003cimg src=\"https://img.shields.io/badge/Docker-Latest-green\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://github.com/Clivern/Toad/blob/master/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\n## Documentation\n\n### Usage\n\nGet [the latest binary.](https://github.com/Clivern/Toad/releases)\n\n```zsh\n$ curl -sL https://github.com/Clivern/Toad/releases/download/x.x.x/Toad_x.x.x_OS_x86_64.tar.gz | tar xz\n```\n\nRun Toad:\n\n```zsh\n$ ./Toad\n```\n\nCheck the release:\n\n```zsh\n$ ./Toad --get release\n```\n\nHealth check:\n\n```zsh\n$ ./Toad --get health\n```\n\nTo run on stateful mode:\n\n```zsh\n# If stateful, it will use redis by default\n$ export IS_STATEFUL=true\n\n# Redis configs\n$ export REDIS_HOST=localhost\n$ export REDIS_PORT=6379\n$ export REDIS_PASSWORD=\n```\n\nTest it:\n\n```zsh\n# Home\n$ curl http://127.0.0.1:8080/ -v\n\n# Health check\n$ curl http://127.0.0.1:8080/_health -v\n\n# Get State (Only Stateful Mode)\n$ curl http://127.0.0.1:8080/do/get -v\n\n# Change State (Only Stateful Mode)\n$ curl http://127.0.0.1:8080/do/change -v\n\n# Reset State (Only Stateful Mode)\n$ curl http://127.0.0.1:8080/do/reset -v\n\n# Enable Host (Only Stateful Mode)\n$ curl http://127.0.0.1:8080/do/host_up -v\n\n# Disable Host (Only Stateful Mode)\n$ curl http://127.0.0.1:8080/do/host_down -v\n\n# Enable All Hosts (Only Stateful Mode)\n$ curl http://127.0.0.1:8080/do/all_up -v\n\n# Disable  All Hosts (Only Stateful Mode)\n$ curl http://127.0.0.1:8080/do/all_down -v\n```\n\n### Deploy on Kubernetes\n\n```zsh\n$ kubectl apply -f deployment/k8s/configs.yaml --record\n\n$ kubectl get configmaps configs -o yaml\n\n$ kubectl apply -f deployment/k8s/redis.yaml --record\n\n$ kubectl apply -f deployment/k8s/toad.yaml --record\n\n$ kubectl get deployments -o wide\n$ kubectl get svc -o wide\n\n$ kubectl get pods -o wide\n$ kubectl logs $PodName\n```\n\n### Deployment Strategies\n\nRamped: release a new version on a rolling update fashion, one after the other.\n\n```zsh\n$ kubectl apply -f deployment/k8s/ramped/toad_ramped_strategy.yaml --record\n```\n\nRecreate: terminate the old version and release the new one.\n\n```zsh\n$ kubectl apply -f deployment/k8s/recreate/toad_recreate_strategy.yaml --record\n```\n\nBlue/Green: release a new version alongside the old version then switch traffic.\n\n```zsh\n$ kubectl apply -f deployment/k8s/blue_green/toad_blue_green_strategy.yaml --record\n\n# Create service to load balance the old version (blue)\n$ kubectl apply -f deployment/k8s/blue_green/switch_to_blue.yaml --record\n\n# Create service to load balance the new version (green)\n$ kubectl apply -f deployment/k8s/blue_green/switch_to_green.yaml --record\n```\n\nCanary: release a new version to a subset of users, then proceed to a full rollout.\n\n```zsh\n$ ~\n```\n\n\n### Kubernetes Ingresses\n\nIt allow you to flexibly route traffic from outside your Kubernetes cluster to Services inside of your cluster.\n\n```zsh\n$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.2/deploy/static/provider/cloud/deploy.yaml\n$ kubectl get pods -n ingress-nginx \\\n  -l app.kubernetes.io/name=ingress-nginx --watch\n$ kubectl get svc --namespace=ingress-nginx\n\n$ kubectl apply -f deployment/k8s/ingress/toad.yaml --record\n\n$ kubectl get ingress\n$ kubectl describe ingress toad-ing1\n$ kubectl describe ingress toad-ing2\n\n$ curl http://example.com/toad1/\n$ curl http://example.com/toad2/\n\n$ curl http://example.com/toad1/_ready\n$ curl http://example.com/toad2/_ready\n\n$ curl http://toad1.example.com/\n$ curl http://toad2.example.com/\n```\n\n\n## Versioning\n\nFor transparency into our release cycle and in striving to maintain backward compatibility, Toad 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/toad/releases) for changelogs for each release version of Toad. 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/toad/issues\n\n\n## Security Issues\n\nIf you discover a security vulnerability within Toad, 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**Toad** is authored and maintained by [@clivern](http://github.com/clivern).\n","funding_links":["https://github.com/sponsors/clivern"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclivern%2Ftoad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclivern%2Ftoad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclivern%2Ftoad/lists"}