feat: replace galactic-agent with galactic-router (controller-runtime)#125
Merged
Conversation
- Add cmd/galactic-router as the new binary entry point - Add internal/controller with BGPRouter, BGPPeer, BGPAdvertisement, BGPPolicy, Secret, and Node reconcilers - Add internal/reconcile for CRD-to-DesiredRouter translation - Add internal/runtime with RuntimeFactory pattern (GoBGP tenant, FRR fabric) - Add internal/model for internal BGP types and internal/hash for change detection - Add config/daemonset, config/rbac, config/samples for galactic-router - Remove internal/agent, internal/bootstrap, internal/gobgp packages - Remove cmd/galactic-agent binary
Replace the ErrEVPNNotImplemented stub with a real implementation that builds and advertises EVPN Type 5 IP Prefix routes for each SRv6 endpoint prefix in a BGPAdvertisement. - Route distinguisher derived from BGPRouter routerID (Type 1 IP:0) - MpReachNLRI next-hop is node's primary IPv6 address - Route target communities parsed from advertisement's communities field - Support withdrawals via b.DeletePath - Add configurable BGP_LISTEN_PORT env var for tenant GoBGP instance Co-authored-by: Claude <noreply@anthropic.com>
…ions - Replace setPeerSessionState + setPeerCondition with setPeerReadyCondition that sets a single Ready condition using bgpv1alpha1.ConditionTypeReady - Remove unused FSM condition constants (SessionIdle..SessionEstablished) - Remove dead code: fsmConditions slice, fsmStateToCondition map
This was referenced Jun 23, 2026
feat: implement EVPN Type 5 path construction in GoBGP runtime
refactor: align BGPPeer status with cosmos API v3 consolidated conditions
Resolve merge conflict in go.sum (cosmos pseudo-version) and complete the cosmos v3 API migration that fb4318e began but left uncompiled. The branch referenced cosmos v3 symbols (bgpv1alpha1.ConditionTypeReady) in internal/controller/status.go while go.mod still pinned a pre-v3 cosmos that lacks them, so pr/1c-core never built. Bump cosmos to the v3 API (v0.0.0-20260623153148-6678708e0513) and finish the migration: - internal/cni/cni.go: construct BGPAdvertisementSpec.Prefixes as []AdvertisedPrefix{{CIDR: ...}} and Communities as []Community, matching the v3 typed fields (previously []string). - internal/reconcile/reconcile.go: convert the typed AdvertisedPrefix/Community slices back to the internal model's []string at the API boundary, leaving the DesiredRouter model and gobgp runtime unchanged. - internal/runtime/gobgp/paths.go: gofmt import ordering. go build ./..., go vet, unit tests, and golangci-lint all pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ecv
approved these changes
Jun 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replace the gRPC-based galactic-agent DaemonSet with a controller-runtime based galactic-router.
New code added
Code removed
Key design decisions
Dependencies