{"id":13499513,"url":"https://github.com/olix0r/kubert","last_synced_at":"2025-05-15T14:08:02.462Z","repository":{"id":39879695,"uuid":"460711569","full_name":"olix0r/kubert","owner":"olix0r","description":"Rust Kubernetes runtime helpers. Based on kube-rs.","archived":false,"fork":false,"pushed_at":"2025-05-02T03:38:10.000Z","size":463,"stargazers_count":162,"open_issues_count":8,"forks_count":15,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-05-08T02:39:21.983Z","etag":null,"topics":["kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/olix0r.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-18T04:39:33.000Z","updated_at":"2025-04-24T09:25:28.000Z","dependencies_parsed_at":"2023-02-05T07:01:02.220Z","dependency_job_id":"a691a6ea-88ea-47eb-b420-c09e84c1b88a","html_url":"https://github.com/olix0r/kubert","commit_stats":{"total_commits":175,"total_committers":9,"mean_commits":"19.444444444444443","dds":0.3828571428571429,"last_synced_commit":"be485989947ebaf0be0c72878dbe2bb2aac8ecff"},"previous_names":[],"tags_count":58,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olix0r%2Fkubert","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olix0r%2Fkubert/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olix0r%2Fkubert/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olix0r%2Fkubert/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/olix0r","download_url":"https://codeload.github.com/olix0r/kubert/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254355335,"owners_count":22057354,"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":["kubernetes"],"created_at":"2024-07-31T22:00:33.943Z","updated_at":"2025-05-15T14:07:57.448Z","avatar_url":"https://github.com/olix0r.png","language":"Rust","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# kubert\n\nRust Kubernetes runtime helpers. Based on [`kube-rs`][krs].\n\n![kubert](https://user-images.githubusercontent.com/240738/154825590-5a94ca46-a453-4037-a738-26663b2c8630.png)\n\n/ˈkuː.bərt/\n\n[![Crates.io][crate-badge]][crate-url]\n[![Documentation][docs-badge]][docs-url]\n[![License](https://img.shields.io/crates/l/kubert)](LICENSE)\n\n[crate-badge]: https://img.shields.io/crates/v/kubert.svg\n[crate-url]: https://crates.io/crates/kubert\n[docs-badge]: https://docs.rs/kubert/badge.svg\n[docs-url]: https://docs.rs/kubert\n\n## Features\n\n* [`clap`](https://docs.rs/clap) command-line interface support;\n* A basic admin server with `/ready` and `/live` probe endpoints;\n* Optional [`prometheus-client`][pc] integration, with process and Tokio Runtime\n  metrics;\n* A default Kubernetes client;\n* Graceful shutdown on `SIGTERM` or `SIGINT` signals;\n* An HTTPS server (for admission controllers and API extensions) with\n  certificate reloading;\n* A utility for maintaining an index derived from watching one or more\n  Kubernetes resources types;\n* A _requeue_ channel that supports deferring/rescheduling updates (i.e. in case\n  a write fails);\n* And a [`Runtime`][rt] type that ties it all together!\n\n### Why not `kube-rs`?\n\nThe [`kube`][krs] crate is great! And in fact, `kubert` builds on `kube`'s\nclient and runtime modules. This crate, however, captures some of the repeated\npatterns we've encountered building controllers for\n[Linkerd](https://github.com/linkerd/linkerd2). It doesn't try to hide\n`kube`--though it does reduce boilerplate around initializing watches and caches\n(reflectors); and it expects you to schedule work via the `tokio` runtime.\n\n## Examples\n\nThis repository includes a simple [example application](./examples) that\ndemonstrates how to use a `kubert::Runtime`.\n\nOther examples include:\n\n* [Linkerd2 policy controller](https://github.com/linkerd/linkerd2/blob/d4543cd86e427b241ce961b50dd83b1738c0b069/policy-controller/src/main.rs)\n\n## kubert-prometheus-process\n\nThe `kubert-prometheus-process` crate provides [process metrics][pm] for\nprometheus-client. It has no dependencies on kubert, and can be used\nindependently.\n\n## kubert-prometheus-tokio\n\nThe `kubert-prometheus-tokio` crate exposes [Tokio runtime metrics][tm] for\nprometheus-client. It also has no dependencies on kubert, and can be used\nindependently.\n\nNote that tokio runtime metrics require `RUSTFLAGS=\"--cfg tokio_unstable\"` to be\nset at compile-time.\n\n## Status\n\nThis crate is still fairly experimental, though it's based on production code\nfrom Linkerd; and we plan to use it in Linkerd moving forward.\n\n[krs]: https://docs.rs/kube\n[pc]: https://docs.rs/prometheus-client\n[pm]: https://prometheus.io/docs/instrumenting/writing_clientlibs/#process-metrics\n[tm]: https://docs.rs/tokio-metrics\n[rt]: https://docs.rs/kubert/latest/kubert/runtime/struct.Runtime.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folix0r%2Fkubert","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Folix0r%2Fkubert","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folix0r%2Fkubert/lists"}