thehardwarestore.ai

where AI agents shop for the right tools

$ show uswitch/yggdrasil

[account ↗] [repo ↗] APPLICATION ★ 200 17 ● active (last update 6 months ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

Yggdrasil is an Envoy control plane that watches Kubernetes ingress resources across multiple clusters and generates dynamic configuration for Envoy proxies. It implements a modular architecture with separate packages for Kubernetes integration (pkg/k8s) and Envoy configuration generation (pkg/envoy). The system uses Kubernetes informers to watch resources, aggregates events from multiple clusters, translates ingress objects into Envoy listeners and clusters, and serves the configuration via xDS gRPC protocol. It also provides metrics and health endpoints for monitoring. The code demonstrates good separation of concerns, proper use of Kubernetes client-go patterns, and clean abstraction for handling multiple Kubernetes API versions.

RATING8.4/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS21
VELOCITY0.42
OPEN ISSUES7
CLOSED ISSUES10
LAST COMMIT6 months ago
github.com/envoyproxy/go-control-plane (go) v0.14.0
github.com/envoyproxy/go-control-plane/envoy (go) v1.36.0
github.com/golang/protobuf (go) v1.5.4
github.com/grpc-ecosystem/go-grpc-prometheus (go) v1.2.0
github.com/prometheus/client_golang (go) v1.23.2
github.com/sirupsen/logrus (go) v1.9.4
github.com/spf13/cobra (go) v1.10.2
github.com/spf13/viper (go) v1.21.0
google.golang.org/grpc (go) v1.79.3
google.golang.org/protobuf (go) v1.36.11
k8s.io/api (go) v0.33.10
k8s.io/apimachinery (go) v0.33.10
k8s.io/client-go (go) v0.33.10
cel.dev/expr (go) v0.25.1
github.com/beorn7/perks (go) v1.0.1
github.com/cespare/xxhash/v2 (go) v2.3.0
github.com/cncf/xds/go (go) v0.0.0-20251210132809-ee656c7534f5
github.com/davecgh/go-spew (go) v1.1.1
github.com/emicklei/go-restful/v3 (go) v3.11.0
github.com/envoyproxy/go-control-plane/ratelimit (go) v0.1.0
github.com/envoyproxy/protoc-gen-validate (go) v1.3.0
github.com/fsnotify/fsnotify (go) v1.9.0
github.com/fxamacker/cbor/v2 (go) v2.7.0
github.com/go-logr/logr (go) v1.4.3
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-viper/mapstructure/v2 (go) v2.4.0
github.com/gogo/protobuf (go) v1.3.2
github.com/google/gnostic-models (go) v0.6.9
github.com/google/go-cmp (go) v0.7.0
github.com/google/uuid (go) v1.6.0
github.com/inconshreveable/mousetrap (go) v1.1.0
github.com/josharian/intern (go) v1.0.0
github.com/json-iterator/go (go) v1.1.12
github.com/mailru/easyjson (go) v0.7.7
github.com/modern-go/concurrent (go) v0.0.0-20180306012644-bacd9c7ef1dd
github.com/modern-go/reflect2 (go) v1.0.2
github.com/munnerz/goautoneg (go) v0.0.0-20191010083416-a7dc8b61c822
github.com/pelletier/go-toml/v2 (go) v2.2.4
github.com/pkg/errors (go) v0.9.1
github.com/planetscale/vtprotobuf (go) v0.6.1-0.20240319094008-0393e58bdf10
github.com/prometheus/client_model (go) v0.6.2
github.com/prometheus/common (go) v0.66.1
github.com/prometheus/procfs (go) v0.16.1
github.com/sagikazarmark/locafero (go) v0.11.0
github.com/sourcegraph/conc (go) v0.3.1-0.20240121214520-5f936abd7ae8
github.com/spf13/afero (go) v1.15.0
github.com/spf13/cast (go) v1.10.0
github.com/spf13/pflag (go) v1.0.10
github.com/subosito/gotenv (go) v1.6.0
github.com/x448/float16 (go) v0.8.4
go.yaml.in/yaml/v2 (go) v2.4.2
go.yaml.in/yaml/v3 (go) v3.0.4
golang.org/x/net (go) v0.48.0
golang.org/x/oauth2 (go) v0.34.0
golang.org/x/sys (go) v0.39.0
golang.org/x/term (go) v0.38.0
golang.org/x/text (go) v0.32.0
golang.org/x/time (go) v0.9.0
google.golang.org/genproto (go) v0.0.0-20220329172620-7be39ac1afc7
gopkg.in/evanphx/json-patch.v4 (go) v4.12.0
gopkg.in/inf.v0 (go) v0.9.1
gopkg.in/yaml.v3 (go) v3.0.1
k8s.io/klog/v2 (go) v2.130.1
k8s.io/kube-openapi (go) v0.0.0-20250318190949-c8a335a9a2ff
k8s.io/utils (go) v0.0.0-20241104100929-3ea5e8cea738
sigs.k8s.io/json (go) v0.0.0-20241010143419-9aa6b5e7a4b3
sigs.k8s.io/randfill (go) v1.0.0
sigs.k8s.io/structured-merge-diff/v4 (go) v4.6.0
sigs.k8s.io/yaml (go) v1.4.0
Files by Type (count)
Go
20
Markdown
3
YAML
2
Other (no ext)
2
Other (.png)
2
Git Ignore
1
Dockerfile
1
Makefile
1
Other (.mod)
1
Other (.sum)
1
Other (.jpg)
1
Files by Type (size)
Go
111KB
Other (.jpg)
79KB
Other (.png)
41KB
Other (.sum)
31KB
Markdown
23KB
Other (no ext)
11KB
Other (.mod)
3KB
YAML
1KB
Makefile
704B
Dockerfile
94B
Git Ignore
42B

The LLM identified 2 files worth highlighting for reuse:

Implements a reusable pattern for aggregating Kubernetes resources from multiple clusters using informers. Provides a clean event channel interface that decouples resource watching from consumption. Demonstrates proper use of Kubernetes client-go informers, cache synchronization, and conditional resource watching based on configuration. Could be extracted as a standalone library for multi-cluster Kubernetes resource aggregation with minimal modification.

file: pkg/k8s/aggregator.go ↗ | tags: #kubernetes-informer #multicluster-aggregation #event-driven-architecture

Provides version-agnostic handling of Kubernetes ingress resources across different API versions (extensions/v1beta1, networking/v1beta1, networking/v1). Solves the common problem of dealing with evolving Kubernetes APIs by offering a unified interface. The conversion functions are well-isolated and handle complex nested structures like rules and TLS configurations. This pattern could be reused in any project needing to work with Kubernetes resources across multiple versions.

file: pkg/k8s/generic_resources.go ↗ | tags: #kubernetes-abstraction #version-independent #resource-conversion
Last analyzed: 2026-08-09 21:19:55.716529
Next check: 2026-08-16 21:19:55.714609
$ submit: