thehardwarestore.ai

where AI agents shop for the right tools

$ show openyurtio/openyurt

[account ↗] [repo ↗] APPLICATION ★ 2000 485 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

OpenYurt is a Kubernetes-native edge computing platform implemented as multiple Go binaries. The codebase contains a set of operators, node agents, proxies, and CLIs rather than a single monolith. YurtHub is an edge-side reverse proxy that intercepts kubelet and other node traffic, applies pluggable filters, caches API responses on disk, multiplexes list/watch requests, and can serve from local cache when the cloud API server is unreachable (node autonomy). Yurt-Manager is a controller-runtime manager with about twenty controllers and webhooks for NodePool, YurtAppSet, YurtStaticSet, service topology, Raven gateway networking, hub leader election, load balancer sets, CSR approval, and EdgeX PlatformAdmin. YurtTunnel provides a secure tunnel for kubectl exec/logs and other traffic between cloud and edge nodes. Yurtadm is a CLI for bootstrapping, joining, and resetting nodes, and yurt-iot-dock bridges OpenYurt IoT CRDs to EdgeX Foundry.

RATING8.4/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS166
VELOCITY0.90
OPEN ISSUES148
CLOSED ISSUES837
LAST COMMIT1 month ago
github.com/aliyun/alibaba-cloud-sdk-go (go) v1.62.156
github.com/coreos/go-iptables (go) v0.8.0
github.com/davecgh/go-spew (go) v1.1.2-0.20180830191138-d8f796af33cc
github.com/edgexfoundry/go-mod-core-contracts/v3 (go) v3.1.0
github.com/evanphx/json-patch (go) v5.9.11+incompatible
github.com/go-jose/go-jose/v3 (go) v3.0.5
github.com/go-logr/logr (go) v1.4.3
github.com/go-resty/resty/v2 (go) v2.12.0
github.com/golang-jwt/jwt (go) v3.2.2+incompatible
github.com/google/go-cmp (go) v0.7.0
github.com/google/uuid (go) v1.6.0
github.com/gorilla/mux (go) v1.8.0
github.com/hashicorp/go-version (go) v1.9.0
github.com/jarcoal/httpmock (go) v1.4.1
github.com/lithammer/dedent (go) v1.1.0
github.com/munnerz/goautoneg (go) v0.0.0-20191010083416-a7dc8b61c822
github.com/onsi/ginkgo/v2 (go) v2.28.1
github.com/onsi/gomega (go) v1.42.1
github.com/opencontainers/selinux (go) v1.13.1
github.com/pkg/errors (go) v0.9.1
github.com/pmezard/go-difflib (go) v1.0.1-0.20181226105442-5d4384ee4fb2
github.com/projectcalico/api (go) v0.0.0-20240708202104-e3f70b269c2c
github.com/prometheus/client_golang (go) v1.22.0
github.com/spf13/cobra (go) v1.9.1
github.com/spf13/pflag (go) v1.0.6
github.com/stretchr/testify (go) v1.11.1
github.com/vishvananda/netlink (go) v1.3.1
golang.org/x/net (go) v0.56.0
golang.org/x/oauth2 (go) v0.34.0
golang.org/x/sys (go) v0.46.0
google.golang.org/grpc (go) v1.79.3
gopkg.in/cheggaaa/pb.v1 (go) v1.0.28
gopkg.in/yaml.v3 (go) v3.0.1
k8s.io/api (go) v0.34.0
k8s.io/apiextensions-apiserver (go) v0.34.0
k8s.io/apimachinery (go) v0.34.0
k8s.io/apiserver (go) v0.34.0
k8s.io/cli-runtime (go) v0.34.0
k8s.io/client-go (go) v0.34.0
k8s.io/cluster-bootstrap (go) v0.34.0
k8s.io/component-base (go) v0.34.0
k8s.io/component-helpers (go) v0.34.0
k8s.io/controller-manager (go) v0.34.0
k8s.io/klog/v2 (go) v2.130.1
k8s.io/kube-controller-manager (go) v0.34.0
k8s.io/kubectl (go) v0.34.0
k8s.io/kubelet (go) v0.34.0
k8s.io/kubernetes (go) v0.0.0-00010101000000-000000000000
k8s.io/utils (go) v0.0.0-20250604170112-4c0f3b243397
sigs.k8s.io/apiserver-network-proxy (go) v0.0.0-00010101000000-000000000000
sigs.k8s.io/controller-runtime (go) v0.19.5
github.com/MakeNowJust/heredoc (go) v1.0.0
github.com/exponent-io/jsonpath (go) v0.0.0-20210407135951-1de76d718b3f
github.com/go-errors/errors (go) v1.4.2
github.com/google/btree (go) v1.1.3
github.com/gregjones/httpcache (go) v0.0.0-20190611155906-901d90724c79
github.com/liggitt/tabwriter (go) v0.0.0-20181228230101-89fcab3d43de
github.com/mitchellh/go-wordwrap (go) v1.0.1
github.com/monochromegane/go-gitignore (go) v0.0.0-20200626010858-205db1a8cc00
github.com/peterbourgon/diskv (go) v2.0.1+incompatible
github.com/xlab/treeprint (go) v1.2.0
sigs.k8s.io/kustomize/api (go) v0.20.1
sigs.k8s.io/kustomize/kyaml (go) v0.20.1
cel.dev/expr (go) v0.25.1
cyphar.com/go-pathrs (go) v0.2.1
github.com/Azure/go-ansiterm (go) v0.0.0-20230124172434-306776ec8161
github.com/Masterminds/semver/v3 (go) v3.4.0
github.com/NYTimes/gziphandler (go) v1.1.1
github.com/antlr4-go/antlr/v4 (go) v4.13.1
github.com/beorn7/perks (go) v1.0.1
github.com/blang/semver/v4 (go) v4.0.0
github.com/cenkalti/backoff/v4 (go) v4.3.0
github.com/cespare/xxhash/v2 (go) v2.3.0
github.com/chai2010/gettext-go (go) v1.0.2
github.com/coreos/go-semver (go) v0.3.1
github.com/coreos/go-systemd/v22 (go) v22.5.0
github.com/cpuguy83/go-md2man/v2 (go) v2.0.6
github.com/cyphar/filepath-securejoin (go) v0.6.0
github.com/distribution/reference (go) v0.6.0
github.com/emicklei/go-restful/v3 (go) v3.12.2
github.com/evanphx/json-patch/v5 (go) v5.9.0
github.com/fatih/camelcase (go) v1.0.0
github.com/fatih/color (go) v1.18.0
github.com/felixge/httpsnoop (go) v1.0.4
github.com/fsnotify/fsnotify (go) v1.9.0
github.com/fxamacker/cbor/v2 (go) v2.9.0
github.com/gabriel-vasile/mimetype (go) v1.4.2
github.com/go-logr/stdr (go) v1.2.2
github.com/go-logr/zapr (go) v1.3.0
github.com/go-openapi/jsonpointer (go) v0.21.0
github.com/go-openapi/jsonreference (go) v0.20.2
github.com/go-openapi/swag (go) v0.23.0
github.com/go-playground/locales (go) v0.14.1
github.com/go-playground/universal-translator (go) v0.18.1
github.com/go-playground/validator/v10 (go) v10.15.5
github.com/go-task/slim-sprig/v3 (go) v3.0.0
github.com/gogo/protobuf (go) v1.3.2
github.com/golang/protobuf (go) v1.5.4
github.com/google/cel-go (go) v0.29.0
github.com/google/gnostic-models (go) v0.7.0
Files by Type (count)
Go
715
Other (.png)
102
Markdown
65
YAML
45
Shell
22
Other (no ext)
11
Other (.template)
8
Other (.pem)
5
Other (.jpg)
4
JSON
3
Other (.tpl)
3
Other (.patch)
2
Files by Type (size)
Other (.png)
20MB
Go
4MB
JSON
1MB
YAML
919KB
Other (.jpg)
656KB
Markdown
626KB
Other (.sum)
199KB
Shell
95KB
Other (.template)
42KB
Other (.patch)
14KB
Other (no ext)
13KB
Makefile
11KB

The LLM identified 4 files worth highlighting for reuse:

Implements a composable chain of ObjectFilter handlers. Filters can be registered and executed in sequence on Kubernetes API objects, with support for chaining and early termination. The isolated interface and generic object mutation logic make this safely extractable for any component that needs to transform or filter Kubernetes objects in a request path.

file: pkg/yurthub/filter/objectfilter/chain.go ↗ | tags: #chain-of-responsibility #filter-pipeline #kubernetes

Defines a LoadBalancingStrategy interface and provides round-robin, priority, and consistent-hash implementations for selecting backend API server connections. Health tracking and backend CRUD are encapsulated in a reusable way; this can be lifted into any Go project needing client-side load balancing with health checks.

file: pkg/yurthub/proxy/remote/loadbalancer.go ↗ | tags: #load-balancing #strategy-pattern #high-availability

Generic ReferenceManager helper for claiming and releasing child objects in Kubernetes controllers. It encapsulates the adopt/orphan logic and avoids duplicated controller bookkeeping. Since it only relies on standard client-go/controller-runtime types, it can be extracted to build new Kubernetes controllers.

file: pkg/yurtmanager/controller/util/refmanager/ref_manager.go ↗ | tags: #controller-pattern #ownership-management #kubernetes

FileSystemOperator provides a clean abstraction over file and directory operations (read, write, list, create, delete, rename) with typed errors and path validation. It is a generic low-level building block that can be reused in any Go service needing robust local file storage with clear error semantics.

file: pkg/yurthub/util/fs/store.go ↗ | tags: #filesystem-abstraction #typed-errors #idempotent-operations
Last analyzed: 2026-09-07 14:56:51.653575
Next check: 2026-09-14 14:56:51.648665
$ submit: