No description
  • Go 82.1%
  • Shell 7.7%
  • Makefile 5.3%
  • Smarty 4.9%
Find a file
2026-06-18 03:13:00 +00:00
.forgejo/workflows chore(deps): update dependency helm to v4.2.2 2026-06-18 03:12:56 +00:00
api/networking/v1alpha1 refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00
chart refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00
docs refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00
hack chore: initial scaffold (plan-12 M0 prep) 2026-05-20 16:18:59 +02:00
internal refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00
.gitignore chore: initial scaffold (plan-12 M0 prep) 2026-05-20 16:18:59 +02:00
.goreleaser.yaml chore: initial scaffold (plan-12 M0 prep) 2026-05-20 16:18:59 +02:00
Dockerfile.goreleaser chore: initial scaffold (plan-12 M0 prep) 2026-05-20 16:18:59 +02:00
go.mod fix(deps): update kubernetes & kcp to v0.36.2 2026-06-15 03:08:23 +00:00
go.sum fix(deps): update kubernetes & kcp to v0.36.2 2026-06-15 03:08:23 +00:00
LICENSE chore: initial scaffold (plan-12 M0 prep) 2026-05-20 16:18:59 +02:00
main.go chore: initial scaffold (plan-12 M0 prep) 2026-05-20 16:18:59 +02:00
Makefile ci: set nodeID=ci in helm render to satisfy required value 2026-05-20 20:51:08 +02:00
NOTICE chore: initial scaffold (plan-12 M0 prep) 2026-05-20 16:18:59 +02:00
README.md refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00
renovate.json refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00

kcp-fabric-provider

CI

Provider-agnostic cross-cluster connectivity layer for Edge Connect.

This repo publishes the networking.edge-portal.eu/v1alpha1 APIExport (FabricClass, ConnectivityFabric, ExposedService) and ships the fabric-controller core that selects a fabric driver per ConnectivityFabric, gates membership on substrate feasibility, aggregates status, and orders finaliser cleanup. The per-technology fabric drivers (Cilium, Skupper, Submariner, MCS-API) live in their own sibling repos.

Role in the platform

Plane Component Repo
API publisher (kcp-provider) fabric-controller (this repo) + admission/conversion webhooks kcp-fabric-provider
Fabric driver: Cilium cilium-provider kcp-cilium-mesh-provider
Fabric driver: Skupper TBD kcp-skupper-provider (planned)
Fabric driver: Submariner TBD kcp-submariner-provider (planned)
Fabric driver: MCS-API TBD kcp-mcs-api-provider (planned)
In-CI stub driver (D12) internal/stub/ (this repo)

The core never imports a real driver package. INV-06 is enforced by hack/check-no-provider-imports.sh in CI.

See plan 12 for the binding decisions, milestone map, and invariant matrix.

Layout

api/networking/v1alpha1/   FabricClass, ConnectivityFabric, ExposedService Go types
cmd/                       (reserved for sub-binaries if split out later)
internal/controller/       reconcilers: selection, gating, status aggregation, finalizer ordering
internal/dispatch/         label-based dispatch (selected-provider=<driver>)
internal/stub/             D12 in-CI stub driver — proves abstraction holds against >1 provider
internal/webhook/          admission webhook + ClusterMeshBinding conversion webhook
hack/                      CI lint scripts (INV-06 import boundary)
chart/                     Helm chart for OCI release
docs/                      ADR mirrors, architecture, deployment, developer-guide, C4 L3

Quickstart (development)

make tidy        # go mod tidy
make build       # builds bin/kcp-fabric-provider
make test        # unit tests
make vet         # go vet
make lint-imports  # INV-06 boundary check
make helm-lint   # helm lint chart

Release

Tag v* on master triggers two Forgejo Actions workflows in parallel:

  • release.yaml — GoReleaser builds the multi-arch binary, Trivy-scans, pushes the OCI image to edp.buildth.ing/devfw-cicd/kcp-fabric-provider:<version>.
  • release-charts.yaml — Helm lints + packages + pushes the chart to oci://edp.buildth.ing/devfw-cicd/kcp-fabric-provider:<version>. Chart version and appVersion are stamped from the tag at package time.

Status

Scaffold (pre-v0.1.0). No production releases yet. See plan 12 §8 milestones M0M3.5 for the phase-1 deliverables this repo is the home of.