{"id":46146396,"url":"https://github.com/echoboomer/paranoidaf","last_synced_at":"2026-03-02T07:24:04.890Z","repository":{"id":43110797,"uuid":"416506368","full_name":"echoboomer/paranoidaf","owner":"echoboomer","description":"A handy tool to assess resiliency of your Kubernetes applications.","archived":false,"fork":false,"pushed_at":"2023-02-02T15:51:44.000Z","size":505,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-06-20T16:46:17.149Z","etag":null,"topics":["cloud","containerization","kubernetes","resiliency","stability"],"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/echoboomer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-12T21:39:23.000Z","updated_at":"2023-01-17T15:35:23.000Z","dependencies_parsed_at":"2024-06-20T16:30:51.777Z","dependency_job_id":"e669308b-4696-4791-b034-ac34cfeb5bfe","html_url":"https://github.com/echoboomer/paranoidaf","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/echoboomer/paranoidaf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echoboomer%2Fparanoidaf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echoboomer%2Fparanoidaf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echoboomer%2Fparanoidaf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echoboomer%2Fparanoidaf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/echoboomer","download_url":"https://codeload.github.com/echoboomer/paranoidaf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echoboomer%2Fparanoidaf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29994904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"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":["cloud","containerization","kubernetes","resiliency","stability"],"created_at":"2026-03-02T07:24:03.989Z","updated_at":"2026-03-02T07:24:04.884Z","avatar_url":"https://github.com/echoboomer.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# paranoidaf\n\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/echoboomer/paranoidaf)\n![GitHub Release Date](https://img.shields.io/github/release-date/echoboomer/paranoidaf)\n![GitHub contributors](https://img.shields.io/github/contributors/echoboomer/paranoidaf)\n![GitHub issues](https://img.shields.io/github/issues/echoboomer/paranoidaf)\n![GitHub license](https://img.shields.io/github/license/echoboomer/paranoidaf)\n![GitHub build](https://img.shields.io/github/actions/workflow/status/echoboomer/paranoidaf/release.yaml?branch=main)\n\n`paranoidaf` is a tool for developers who are constantly paranoid about the configuration of their Kubernetes clusters.\n\nConfiguring Kubernetes is hard. A lot of the time, we're doing it on our own with no help from anyone else. If it breaks and impacts our products, people can get upset about it.\n\nThis tool aims to help developers discover opportunities within Kubernetes clusters to make applications more resilient.\n\n## Installation\n\nIf you have `go` installed:\n\n```bash\ngo install github.com/echoboomer/paranoidaf@v0.1.1\n```\n\nProvided `GOBIN` is in `$PATH`, you should now be able to type `paranoidaf` and run the app.\n\nAlternatively, just download the latest release from this repository and unpack it locally either to a directory in `$PATH` or somewhere you can run it directly:\n\n```bash\ntar -xvf paranoidaf_0.1.1_darwin_amd64.tar.gz -C /usr/bin\n```\n\nYou should now be able to type `paranoidaf` and run the app.\n\n## Logic\n\nThe app looks at all `Deployment` objects in the `Namespaces` (all but `kube-system`, `kube-node-lease`, `kube-public` by default, overrideable using the `--namespace` flag if you'd like to look at a specific `Namespace`) provided.\n\nFrom there, details about each `Deployment` are added to a struct that keeps track of information. The `spec.selector.matchLabels` field is used to match both `HorizontalPodAutoscaler` and `PodDisruptionBudget` objects.\n\nWe make the reasonable assumption that your resources will likely share this label, usually something like `app: foobar`. If you end up with no resources returned, check these labels.\n\nAn example setup of resources is located within the `manifests/` directory for guidance.\n\n## Usage\n\nThe app is simple and only has one command: `eval`\n\n```bash\n$ paranoidaf -h\nparanoidaf helps the worried developer make sure their Kubernetes cluster is resilient.\n\nUsage:\n  paranoidaf [command]\n\nAvailable Commands:\n  completion  generate the autocompletion script for the specified shell\n  eval        Evaluate a Kubernetes cluster's configuration.\n  help        Help about any command\n\nFlags:\n      --config string   config file (default is $HOME/.paranoidaf.yaml)\n  -h, --help            help for paranoidaf\n  -t, --toggle          Help message for toggle\n\nUse \"paranoidaf [command] --help\" for more information about a command.\n```\n\nYou can use `-h` to get help about the command:\n\n```bash\n$ paranoidaf eval -h\nEvaluate a Kubernetes cluster's configuration.\n\nThis command looks specifically at the resiliency of your applications and\nassesses their behavior during disruptive events like cluster upgrades or\nNode scaling.\n\nUsage:\n  paranoidaf eval [flags]\n\nFlags:\n  -h, --help               help for eval\n      --namespace string   Namespace to check. By default, all Namespaces (except for ones filtered out) are checked.\n\nGlobal Flags:\n      --config string   config file (default is $HOME/.paranoidaf.yaml)\n```\n\nTo run the check, you can provide `eval` by itself to check all `Namespaces` except the ones filtered (shown above):\n\n![All Namespaces](https://github.com/echoboomer/paranoidaf/blob/main/assets/sample-screenshot-1.png)\n\nYou can also provide the `--namespace` flag to check a specific `Namespace`:\n\n![Specific Namespace](https://github.com/echoboomer/paranoidaf/blob/main/assets/sample-screenshot-2.png)\n\n## Disclaimer\n\nIf you run into issues using the tool or find that it doesn't work for your use case(s), please feel free to open an issue and let me know about it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechoboomer%2Fparanoidaf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fechoboomer%2Fparanoidaf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechoboomer%2Fparanoidaf/lists"}