{"id":13562404,"url":"https://github.com/FairwindsOps/pluto","last_synced_at":"2025-04-03T18:33:34.873Z","repository":{"id":37279647,"uuid":"249814436","full_name":"FairwindsOps/pluto","owner":"FairwindsOps","description":"A cli tool to help discover deprecated apiVersions in Kubernetes","archived":false,"fork":false,"pushed_at":"2025-02-19T14:16:03.000Z","size":3066,"stargazers_count":2246,"open_issues_count":7,"forks_count":122,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-03-19T03:34:32.369Z","etag":null,"topics":["fairwinds-official","hacktoberfest","helm","kubernetes"],"latest_commit_sha":null,"homepage":"https://fairwinds.com","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/FairwindsOps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing/code-of-conduct.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2020-03-24T20:47:16.000Z","updated_at":"2025-03-18T21:49:19.000Z","dependencies_parsed_at":"2023-12-18T19:23:28.323Z","dependency_job_id":"6d38cbb6-c27d-4da9-b2d0-0c8f34c8c398","html_url":"https://github.com/FairwindsOps/pluto","commit_stats":{"total_commits":303,"total_committers":49,"mean_commits":6.183673469387755,"dds":0.6798679867986799,"last_synced_commit":"bed05e30b6932aec8ee6615ddc88310fc959e248"},"previous_names":[],"tags_count":116,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FairwindsOps%2Fpluto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FairwindsOps%2Fpluto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FairwindsOps%2Fpluto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FairwindsOps%2Fpluto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FairwindsOps","download_url":"https://codeload.github.com/FairwindsOps/pluto/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246718451,"owners_count":20822569,"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":["fairwinds-official","hacktoberfest","helm","kubernetes"],"created_at":"2024-08-01T13:01:08.268Z","updated_at":"2025-04-03T18:33:29.864Z","avatar_url":"https://github.com/FairwindsOps.png","language":"Go","readme":"\u003cdiv align=\"center\" class=\"no-border\"\u003e\n  \u003cimg src=\"/img/pluto-logo.png\" alt=\"Pluto Logo\"\u003e\n  \u003cbr\u003e\n  \u003ch3\u003eFind Kubernetes resources that have been deprecated\u003c/h3\u003e\n  \u003ca href=\"https://github.com/FairwindsOps/pluto/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/FairwindsOps/pluto\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/FairwindsOps/pluto\"\u003e\n    \u003cimg src=\"https://goreportcard.com/badge/github.com/FairwindsOps/pluto\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://circleci.com/gh/FairwindsOps/pluto.svg\"\u003e\n    \u003cimg src=\"https://circleci.com/gh/FairwindsOps/pluto.svg?style=svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://insights.fairwinds.com/gh/FairwindsOps/pluto\"\u003e\n    \u003cimg src=\"https://insights.fairwinds.com/v0/gh/FairwindsOps/pluto/badge.svg\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\nPluto is a utility to help users find [deprecated Kubernetes apiVersions](https://k8s.io/docs/reference/using-api/deprecation-guide/) in their code repositories and their helm releases.\n\n## Documentation\nCheck out the [documentation at docs.fairwinds.com](https://pluto.docs.fairwinds.com)\n\n## Purpose\n\nKubernetes sometimes deprecates apiVersions. Most notably, a large number of deprecations happened in the [1.16 release](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/). This is fine, and it's a fairly easy thing to deal with. However, it can be difficult to find all the places where you might have used a version that will be deprecated in your next upgrade.\n\nYou might think, \"I'll just ask the api-server to tell me!\", but this is fraught with danger. If you ask the api-server to give you `deployments.v1.apps`, and the deployment was deployed as `deployments.v1beta1.extensions`, the api-server will quite happily convert the api version and return a manifest with `apps/v1`. This is fairly well outlined in the discussion in [this issue](https://github.com/kubernetes/kubernetes/issues/58131#issuecomment-356823588).\n\nSo, long story short, finding the places where you have deployed a deprecated apiVersion can be challenging. This is where `pluto` comes in. You can use pluto to check a couple different places where you might have placed a deprecated version:\n* Infrastructure-as-Code repos: Pluto can check both static manifests and Helm charts for deprecated apiVersions\n* Live Helm releases: Pluto can check both Helm 2 and Helm 3 releases running in your cluster for deprecated apiVersions\n\n## Kubernetes Deprecation Policy\n\nYou can read the full policy [here](https://kubernetes.io/docs/reference/using-api/deprecation-policy/)\n\nLong story short, apiVersions get deprecated, and then they eventually get removed entirely. Pluto differentiates between these two, and will tell you if a version is `DEPRECATED` or `REMOVED`\n\n## GitHub Action Usage\nWant to use pluto within your GitHub workflows?\n\n```yaml\n- name: Download Pluto\n  uses: FairwindsOps/pluto/github-action@master\n\n- name: Use pluto\n  run: |\n    pluto detect-files -d pkg/finder/testdata\n```\n\n\u003c!-- Begin boilerplate --\u003e\n## Join the Fairwinds Open Source Community\n\nThe goal of the Fairwinds Community is to exchange ideas, influence the open source roadmap,\nand network with fellow Kubernetes users.\n[Chat with us on Slack](https://join.slack.com/t/fairwindscommunity/shared_invite/zt-2na8gtwb4-DGQ4qgmQbczQyB2NlFlYQQ)\nor\n[join the user group](https://www.fairwinds.com/open-source-software-user-group) to get involved!\n\n\u003ca href=\"https://insights.fairwinds.com/auth/register/\"\u003e\n  \u003cimg src=\"https://www.fairwinds.com/hubfs/Doc_Banners/Fairwinds_OSS_User_Group_740x125_v6.png\"\n  alt=\"Love Fairwinds Open Source? Automate Fairwinds Open Source for free with Fairwinds Insights. Click to learn more\" /\u003e\n\u003c/a\u003e\n\n## Other Projects from Fairwinds\n\nEnjoying Pluto? Check out some of our other projects:\n* [Polaris](https://github.com/FairwindsOps/Polaris) - Audit, enforce, and build policies for Kubernetes resources, including over 20 built-in checks for best practices\n* [Goldilocks](https://github.com/FairwindsOps/Goldilocks) - Right-size your Kubernetes Deployments by compare your memory and CPU settings against actual usage\n* [Nova](https://github.com/FairwindsOps/Nova) - Check to see if any of your Helm charts have updates available\n* [rbac-manager](https://github.com/FairwindsOps/rbac-manager) - Simplify the management of RBAC in your Kubernetes clusters\n\nOr [check out the full list](https://www.fairwinds.com/open-source-software?utm_source=pluto\u0026utm_medium=pluto\u0026utm_campaign=pluto)\n## Fairwinds Insights\nIf you're interested in running Pluto in multiple clusters,\ntracking the results over time, integrating with Slack, Datadog, and Jira,\nor unlocking other functionality, check out\n[Fairwinds Insights](https://fairwinds.com/pricing),\na platform for auditing and enforcing policy in Kubernetes clusters.\n\n\u003ca href=\"https://fairwinds.com/pricing\"\u003e\n  \u003cimg src=\"https://www.fairwinds.com/hubfs/Doc_Banners/Fairwinds_Pluto_Ad.png\" alt=\"Fairwinds Insights\" /\u003e\n\u003c/a\u003e\n","funding_links":[],"categories":["Go","Kubernetes","Tools and Libraries","kubernetes","Configuration \u0026 Policy Automation","Configuration Management"],"sub_categories":["Kubernetes security posture management","Cluster Resources Management","Kubernetes // Dashboards, UI, Reporting and Validation"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFairwindsOps%2Fpluto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFairwindsOps%2Fpluto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFairwindsOps%2Fpluto/lists"}