{"id":13451552,"url":"https://github.com/kuberhealthy/kuberhealthy","last_synced_at":"2026-06-09T06:06:44.652Z","repository":{"id":37133015,"uuid":"137922416","full_name":"kuberhealthy/kuberhealthy","owner":"kuberhealthy","description":"A Kubernetes operator for running synthetic checks as pods. Works great with Prometheus!","archived":false,"fork":false,"pushed_at":"2026-04-15T07:32:16.000Z","size":36043,"stargazers_count":2231,"open_issues_count":14,"forks_count":290,"subscribers_count":27,"default_branch":"master","last_synced_at":"2026-04-15T08:10:56.735Z","etag":null,"topics":["cicd","continuous-delivery","continuous-integration","continuous-testing","health","kubernetes","monitoring","operator","synthetic"],"latest_commit_sha":null,"homepage":"https://kuberhealthy.github.io/kuberhealthy/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kuberhealthy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-06-19T17:15:28.000Z","updated_at":"2026-04-10T08:59:46.000Z","dependencies_parsed_at":"2023-02-10T18:31:41.703Z","dependency_job_id":"d72afa33-83c2-4ccb-8fec-91d6ee52273f","html_url":"https://github.com/kuberhealthy/kuberhealthy","commit_stats":null,"previous_names":["comcast/kuberhealthy"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/kuberhealthy/kuberhealthy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuberhealthy%2Fkuberhealthy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuberhealthy%2Fkuberhealthy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuberhealthy%2Fkuberhealthy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuberhealthy%2Fkuberhealthy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kuberhealthy","download_url":"https://codeload.github.com/kuberhealthy/kuberhealthy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuberhealthy%2Fkuberhealthy/sbom","scorecard":{"id":32484,"data":{"date":"2025-08-04","repo":{"name":"github.com/kuberhealthy/kuberhealthy","commit":"6ebdb23ec1091ab709675b0080c6945fbb547334"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":3.7,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"Code-Review","score":9,"reason":"Found 9/10 approved changesets -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build-latest-ami-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-daemonset-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-deployment-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-dns-resolution-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-docker.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-http-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-http-content-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-kiam-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-network-connection-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-pod-restarts-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-pod-status-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-resource-quota-check.yml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-ssl-expiry-check.yaml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-ssl-handshake-check.yaml:1","Warn: no topLevel permission defined: .github/workflows/build-latest-test-external-check.yml:1","Warn: no topLevel permission defined: .github/workflows/e2e.yml:1","Warn: no topLevel permission defined: .github/workflows/flat-files-generation.yml:1","Warn: no topLevel permission defined: .github/workflows/helm-repo-update.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/stale.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing shell code: parameter expansion requires a literal: bin/activate-hermit:0","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-ami-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-ami-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-ami-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-ami-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-daemonset-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-daemonset-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-daemonset-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-daemonset-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-deployment-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-deployment-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-deployment-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-deployment-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-dns-resolution-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-dns-resolution-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-dns-resolution-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-dns-resolution-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-docker.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-docker.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-http-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-http-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-http-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-http-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-http-content-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-http-content-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-http-content-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-http-content-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-kiam-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-kiam-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-kiam-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-kiam-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-network-connection-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-network-connection-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-network-connection-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-network-connection-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-pod-restarts-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-pod-restarts-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-pod-restarts-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-pod-restarts-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-pod-status-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-pod-status-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-pod-status-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-pod-status-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-resource-quota-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-resource-quota-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-resource-quota-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-resource-quota-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-ssl-expiry-check.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-ssl-expiry-check.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-ssl-expiry-check.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-ssl-expiry-check.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-ssl-handshake-check.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-ssl-handshake-check.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-ssl-handshake-check.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-ssl-handshake-check.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-latest-test-external-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-test-external-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-latest-test-external-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/build-latest-test-external-check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/e2e.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/e2e.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/e2e.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/e2e.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/e2e.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/e2e.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/flat-files-generation.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/flat-files-generation.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/flat-files-generation.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/flat-files-generation.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/flat-files-generation.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/flat-files-generation.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/helm-repo-update.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/helm-repo-update.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/helm-repo-update.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/helm-repo-update.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/helm-repo-update.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/helm-repo-update.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stale.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/kuberhealthy/kuberhealthy/stale.yml/master?enable=pin","Warn: containerImage not pinned by hash: clients/js/example/Dockerfile:1: pin your Docker image by updating node to node@sha256:dd5c5e4d0a67471a683116483409d1e46605a79521b000c668cff29df06efd51","Warn: containerImage not pinned by hash: clients/python/Dockerfile:1: pin your Docker image by updating python:3.7 to python:3.7@sha256:eedf63967cdb57d8214db38ce21f105003ed4e4d0358f02bedc057341bcf92a0","Warn: containerImage not pinned by hash: cmd/ami-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/cronjob-checker/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/daemonset-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/deployment-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/dns-resolution-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/http-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/http-content-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/image-download-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/kiam-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/kuberhealthy/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/kuberhealthy/Dockerfile.release:1","Warn: containerImage not pinned by hash: cmd/namespace-pod-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/network-connection-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/pod-restarts-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/pod-status-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/resource-quota-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/ssl-expiry-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/ssl-handshake-check/Dockerfile:1","Warn: containerImage not pinned by hash: cmd/test-check/Dockerfile:1","Warn: npmCommand not pinned by hash: clients/js/example/Dockerfile:3","Warn: pipCommand not pinned by hash: clients/python/Dockerfile:3","Warn: goCommand not pinned by hash: scripts/generate.sh:4","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-ami-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-daemonset-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-deployment-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-dns-resolution-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-http-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-http-content-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-kiam-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-network-connection-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-pod-restarts-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-pod-status-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-resource-quota-check.yml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-ssl-expiry-check.yaml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-ssl-handshake-check.yaml:29","Warn: downloadThenRun not pinned by hash: .github/workflows/build-latest-test-external-check.yml:29","Info:   0 out of  22 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  23 third-party GitHubAction dependencies pinned","Info:   0 out of  21 containerImage dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned","Info:   1 out of   2 goCommand dependencies pinned","Info:   0 out of  14 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"12 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: GO-2022-0635","Warn: Project is vulnerable to: GO-2022-0646","Warn: Project is vulnerable to: GHSA-4vq8-7jfc-9cvp","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2025-3488 / GHSA-6v2p-p543-phr9"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-14T19:28:07.327Z","repository_id":37133015,"created_at":"2025-08-14T19:28:07.327Z","updated_at":"2025-08-14T19:28:07.327Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34093812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"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":["cicd","continuous-delivery","continuous-integration","continuous-testing","health","kubernetes","monitoring","operator","synthetic"],"created_at":"2024-07-31T07:00:55.726Z","updated_at":"2026-06-09T06:06:44.645Z","avatar_url":"https://github.com/kuberhealthy.png","language":"Go","funding_links":[],"categories":["Go","3. Collect","Kubernetes","Monitoring"],"sub_categories":["Metrics","Kubernetes testing","Chess :chess_pawn:"],"readme":"\n\u003ccenter\u003e\u003cimg src=\"https://github.com/kuberhealthy/kuberhealthy/blob/master/images/kuberhealthy.png?raw=true\"\u003e\u003c/center\u003e\u003cbr /\u003e\n\n**Note: Kuberhealthy is currently undergoing a total rewrite in the `main` branch.**\n\n**Kuberhealthy is a [Kubernetes](https://kubernetes.io) [operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) for [synthetic monitoring](https://en.wikipedia.org/wiki/Synthetic_monitoring) and [continuous process verification](https://en.wikipedia.org/wiki/Continued_process_verification).**  [Write your own tests](docs/CHECK_CREATION.md) in any language and Kuberhealthy will run them for you.  Automatically creates metrics for [Prometheus](https://prometheus.io).  Includes simple JSON status page.  **Now part of the CNCF!**\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Go Report Card](https://goreportcard.com/badge/github.com/kuberhealthy/kuberhealthy)](https://goreportcard.com/report/github.com/kuberhealthy/kuberhealthy)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/2822/badge)](https://bestpractices.coreinfrastructure.org/projects/2822)\n[![Twitter Follow](https://img.shields.io/twitter/follow/kuberhealthy.svg?style=social)](https://twitter.com/kuberhealthy)  \n[![Join Slack](https://img.shields.io/badge/slack-kubernetes/kuberhealthy-teal.svg?logo=slack)](https://kubernetes.slack.com/messages/CB9G7HWTE)\n\n## Table of Contents\n\n- ❓ [What is Kuberhealthy?](#what-is-kuberhealthy)\n- 🚀 [Installation](#installation)\n- 📈 [Visualized](#visualized)\n- 🧪 [Create Synthetic Checks](#create-synthetic-checks-for-your-apis)\n- 📊 [Status Page](#status-page)\n- 🤝 [Contributing](#contributing)\n- 📅 [Monthly Community Meeting](#monthly-community-meeting)\n\n## What is Kuberhealthy?\n\nKuberhealthy lets you continuously verify that your applications and Kubernetes clusters are working as expected. By creating a custom resource (a [`KuberhealthyCheck`](docs/CHECK_CREATION.md#creating-your-khcheck-resource)) in your cluster, you can easily enable [various synthetic tests](docs/CHECKS_REGISTRY.md) and get Prometheus metrics for them.\n\nKuberhealthy comes with [lots of useful checks already available](docs/CHECKS_REGISTRY.md) to ensure the core functionality of Kubernetes, but checks can be used to test anything you like.  We encourage you to [write your own check container](docs/CHECK_CREATION.md) in any language to test your own applications.  It really is quick and easy!\n\nKuberhealthy serves the status of all checks on a simple JSON status page, a [Prometheus](https://prometheus.io/) metrics endpoint (at `/metrics`), and supports InfluxDB metric forwarding for integration into your choice of alerting solution.\n\n\n\n## Installation\n\nKuberhealthy requires Kubernetes 1.16 or above. You can install it with plain YAML manifests or with Helm.\n\n- For detailed installation steps, see the [installation guide](docs/INSTALLATION.md).\n- To configure Kuberhealthy after installation, see the [configuration documentation](docs/CONFIGURATION.md).\n\n## Visualized\n\nHere is an illustration of how Kuberhealthy provisions and operates checker pods.  The following process is illustrated:\n\n- An admin creates a [`KuberhealthyCheck`](docs/CHECK_CREATION.md#creating-your-khcheck-resource) resource that calls for a synthetic Kubernetes daemonset to be deployed and tested every 15 minutes.  This will ensure that all nodes in the Kubernetes cluster can provision containers properly.\n- Kuberhealthy observes this new `KuberhealthyCheck` resource.\n- Kuberhealthy schedules a checker pod to manage the lifecycle of this check.\n- The checker pod creates a daemonset using the Kubernetes API.\n- The checker pod observes the daemonset and waits for all daemonset pods to become `Ready`\n- The checker pod deletes the daemonset using the Kubernetes API.\n- The checker pod observes the daemonset being fully cleaned up and removed.\n- The checker pod reports a successful test result back to Kuberhealthy's API.\n- Kuberhealthy stores this check's state and makes it available to various metrics systems.\n\n\n\u003cimg src=\"images/kh-ds-check.gif\"\u003e\n\n## Included Checks\n\nYou can use any of [the pre-made checks](https://github.com/kuberhealthy/kuberhealthy/blob/master/docs/CHECKS_REGISTRY.md#khcheck-registry) by simply enabling them.  By default Kuberhealthy comes with several checks to test Kubernetes deployments, daemonsets, and DNS.\n\n#### Some checks you can easily enable:\n\n- [SSL Handshake Check](https://github.com/kuberhealthy/kuberhealthy/blob/master/cmd/ssl-handshake-check/README.md) - checks SSL certificate validity and warns when certs are about to expire.\n- [CronJob Scheduling Failures](https://github.com/kuberhealthy/kuberhealthy/blob/master/cmd/cronjob-checker/README.md) - checks for events indicating that a CronJob has failed to create Job pods.\n- [Image Pull Check](https://github.com/kuberhealthy/kuberhealthy/blob/master/cmd/test-check#image-pull-check) - checks that an image can be pulled from an image repository.\n- [Deployment Check](https://github.com/kuberhealthy/kuberhealthy/blob/master/cmd/deployment-check/README.md) - verifies that a fresh deployment can run, deploy multiple pods, pass traffic, do a rolling update (without dropping connections), and clean up successfully.\n- [Daemonset Check](https://github.com/kuberhealthy/kuberhealthy/blob/master/cmd/daemonset-check/README.md) - verifies that a daemonset can be created, fully provisioned, and torn down.  This checks the full kubelet functionality of every node in your Kubernetes cluster.\n- [Storage Provisioner Check](https://github.com/ChrisHirsch/kuberhealthy-storage-check) - verifies that a pod with persistent storage can be configured on every node in your cluster.\n\n\n## Create Synthetic Checks for Your APIs\n\nYou can easily create synthetic tests to check your applications and APIs with real world use cases. This is a great way to be confident that your application functions as expected in the real world at all times.\n\nHere is a full check example written in `go`.  Just implement `doCheckStuff` and you're off!\n\n\n```go\npackage main\n\nimport (\n  \"github.com/kuberhealthy/kuberhealthy/v2/pkg/checks/external/checkclient\"\n)\n\nfunc main() {\n  ok := doCheckStuff()\n  if !ok {\n    checkclient.ReportFailure([]string{\"Test has failed!\"})\n    return\n  }\n  checkclient.ReportSuccess()\n}\n\n```\n\nYou can read more about [how checks are configured](docs/CHECK_CREATION.md#creating-your-khcheck-resource) and [learn how to create your own check container](docs/CHECK_CREATION.md). Checks can be written in any language and helpful clients for checks not written in Go can be found in the [clients directory](/clients).\n\n### Status Page\n\nKuberhealthy serves a simple JSON status page and Prometheus metrics endpoint. See the [status page guide](docs/STATUS_PAGE.md) for output examples and details.\n\n## Contributing\n\nIf you're interested in contributing to this project:\n- Check out the [Contributing Guide](CONTRIBUTING.md).\n - If you use Kuberhealthy in a production environment, add yourself to the list of [Kuberhealthy adopters](ADOPTERS.md)!\n- Check out [open issues](https://github.com/kuberhealthy/kuberhealthy/issues). If you're new to the project, look for the `good first issue` tag.\n- We're always looking for check contributions (either in suggestions or in PRs) as well as feedback from folks implementing\nKuberhealthy locally or in a test environment.\n\n### Hermit\n\nWhile working on Kuberhealthy, you can take advantage of the included [Hermit](https://cashapp.github.io/hermit/) dev \nenvironment to get Go \u0026 other tooling without having to install them separately on your local machine.\n\nJust use the following command to activate the environment, and you're good to go:\n\n```zsh\n. ./bin/activate-hermit\n```\n\n## Monthly Community Meeting\n\nIf you would like to talk directly to the core maintainers to discuss ideas, code reviews, or other complex issues, we have a monthly Zoom meeting on the **24th day** of every month at **04:30 PM Pacific Time**.  \n\n- [Click here to download the invite file](https://zoom.us/meeting/tJIlcuyrqT8qHNWDSx3ZozYamoq2f0ruwfB0/ics?icsToken=98tyKuCupj4vGdORsB-GRowAGo_4Z-nwtilfgo1quCz9UBpceDr3O-1TYLQvAs3H)\nor\n- [Click here to join the zoom meeting right now (968 5537 4061)](https://zoom.us/j/96855374061)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuberhealthy%2Fkuberhealthy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuberhealthy%2Fkuberhealthy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuberhealthy%2Fkuberhealthy/lists"}