Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
027f180
feat: Add flexible topology configuration support to SliceConfig CRD
Transcendental-Programmer Oct 5, 2025
d781701
feat: Add flexible topology configuration to SliceConfig
Transcendental-Programmer Oct 14, 2025
ca3e1d1
Week 3: Implement flexible topology service with auto, hub-spoke, cus…
Transcendental-Programmer Oct 14, 2025
a9622cf
fix: removed partial mesh as auto and custom already implement it's u…
Transcendental-Programmer Oct 15, 2025
0aca3ab
feat(topology): add topology service and validation (auto/full-mesh/c…
Transcendental-Programmer Oct 22, 2025
af6c1ee
feat: Replace ClusterRole/PolicyNodes with ForbiddenEdges API
Transcendental-Programmer Oct 27, 2025
5a5e553
refactor: remove topology service and related files
Transcendental-Programmer Nov 2, 2025
f3a5591
feat(topology): add sample topology configuration files
Transcendental-Programmer Nov 2, 2025
84b163c
feat(topology): update slice config validation and service logic
Transcendental-Programmer Nov 2, 2025
0804950
test(topology): update slice config webhook validation tests
Transcendental-Programmer Nov 2, 2025
15d2d46
feat(topology): update worker slice gateway service logic
Transcendental-Programmer Nov 2, 2025
ffd9bf3
test(topology): update worker slice gateway service tests
Transcendental-Programmer Nov 2, 2025
0ae91df
Update topologyType default to full-mesh and clean up comments
Transcendental-Programmer Nov 2, 2025
0ce3632
Add changes to slice config service test
Transcendental-Programmer Nov 2, 2025
4ab93f0
Update service/slice_config_service_test.go with new changes
Transcendental-Programmer Nov 2, 2025
197c3e1
Remove autotopology telemetry options from API definitions
Transcendental-Programmer Nov 3, 2025
2afe629
Remove autotopology telemetry options from API definitions
Transcendental-Programmer Nov 3, 2025
c34be3e
fix: move GatewayPair to util package to resolve circular dependency
Transcendental-Programmer Nov 10, 2025
1145788
refactor: rename topology from auto to restricted
Transcendental-Programmer Nov 10, 2025
f03da56
fix: resolve util.Client compilation error
Transcendental-Programmer Nov 10, 2025
5fa703e
Update sliceconfigs CRD
Transcendental-Programmer Nov 12, 2025
b042c17
gitignore fixed
Transcendental-Programmer Nov 13, 2025
27c2121
test(topology): rename auto tests to restricted, remove partition hea…
Transcendental-Programmer Nov 13, 2025
b8fed54
remove partition-healing code
Transcendental-Programmer Nov 13, 2025
d3aa18e
feat(topology): remove bidirectional field and implement isolated clu…
Transcendental-Programmer Nov 13, 2025
02ca23d
chore: remove coverage
Transcendental-Programmer Nov 13, 2025
d6ee3e0
chore: cleaned gitignore
Transcendental-Programmer Nov 13, 2025
0f1b678
feat: comprehensive topology tests and fixes
Transcendental-Programmer Nov 14, 2025
e960ad6
test(topology): restore comprehensive integration tests and remove ob…
Transcendental-Programmer Nov 13, 2025
3a3411c
fix: controller tests
Transcendental-Programmer Nov 13, 2025
669effb
feat: added all ut till 100% completion for topology
Transcendental-Programmer Nov 14, 2025
9bcb6ee
test(iperf): add iperf manifests, slice templates, and run script
Transcendental-Programmer Nov 17, 2025
2aba737
feat: Add TopologyConfig to WorkerSliceConfig API
Transcendental-Programmer Nov 19, 2025
2ec29fb
worker slicegateway service updated
Transcendental-Programmer Nov 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,5 @@ work

cover.out
coverage.out
.vscode
.vscode

33 changes: 33 additions & 0 deletions apis/controller/v1alpha1/sliceconfig_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ type SliceConfigSpec struct {
// RenewBefore is used for renew now!
RenewBefore *metav1.Time `json:"renewBefore,omitempty"`
VPNConfig *VPNConfiguration `json:"vpnConfig,omitempty"`
// TopologyConfig defines cluster connectivity patterns
TopologyConfig *TopologyConfig `json:"topologyConfig,omitempty"`
}

// ExternalGatewayConfig is the configuration for external gateways like 'istio', etc/
Expand Down Expand Up @@ -174,6 +176,37 @@ type VPNConfiguration struct {
Cipher string `json:"cipher"`
}

// +kubebuilder:validation:Enum:=restricted;full-mesh;custom
type TopologyType string

const (
TopologyRestricted TopologyType = "restricted"
TopologyFullMesh TopologyType = "full-mesh"
TopologyCustom TopologyType = "custom"
)

type TopologyConfig struct {
//+kubebuilder:default:=full-mesh
TopologyType TopologyType `json:"topologyType,omitempty"`
ConnectivityMatrix []ConnectivityEntry `json:"connectivityMatrix,omitempty"`
ForbiddenEdges []ForbiddenEdge `json:"forbiddenEdges,omitempty"`
}

type ConnectivityEntry struct {
//+kubebuilder:validation:Required
SourceCluster string `json:"sourceCluster"`
//+kubebuilder:validation:Required
TargetClusters []string `json:"targetClusters"`
}

type ForbiddenEdge struct {
//+kubebuilder:validation:Required
SourceCluster string `json:"sourceCluster"`
//+kubebuilder:validation:Required
TargetClusters []string `json:"targetClusters"`
}


type KubesliceEvent struct {
// Type of the event. Can be one of Error, Success or InProgress
Type string `json:"type,omitempty"`
Expand Down
74 changes: 74 additions & 0 deletions apis/controller/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions apis/worker/v1alpha1/workersliceconfig_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ type WorkerSliceConfigSpec struct {
ExternalGatewayConfig ExternalGatewayConfig `json:"externalGatewayConfig,omitempty"`
//+kubebuilder:default:=single-network
OverlayNetworkDeploymentMode controllerv1alpha1.NetworkType `json:"overlayNetworkDeploymentMode,omitempty"`
// Topology configuration for flexible topology support
TopologyConfig *controllerv1alpha1.TopologyConfig `json:"topologyConfig,omitempty"`
}

// WorkerSliceGatewayProvider defines the configuration for slicegateway
Expand Down
6 changes: 6 additions & 0 deletions apis/worker/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

40 changes: 40 additions & 0 deletions config/crd/bases/controller.kubeslice.io_sliceconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,46 @@ spec:
type: string
standardQosProfileName:
type: string
topologyConfig:
description: TopologyConfig defines cluster connectivity patterns
properties:
connectivityMatrix:
items:
properties:
sourceCluster:
type: string
targetClusters:
items:
type: string
type: array
required:
- sourceCluster
- targetClusters
type: object
type: array
forbiddenEdges:
items:
properties:
sourceCluster:
type: string
targetClusters:
items:
type: string
type: array
required:
- sourceCluster
- targetClusters
type: object
type: array
topologyType:
default: full-mesh
enum:
- restricted
- full-mesh
- custom
type: string
type: object

vpnConfig:
description: VPNConfiguration defines the additional (optional) VPN
Configuration to customise
Expand Down
39 changes: 39 additions & 0 deletions config/crd/bases/worker.kubeslice.io_workersliceconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,45 @@ spec:
sliceType:
default: Application
type: string
topologyConfig:
description: Topology configuration for flexible topology support
properties:
connectivityMatrix:
items:
properties:
sourceCluster:
type: string
targetClusters:
items:
type: string
type: array
required:
- sourceCluster
- targetClusters
type: object
type: array
forbiddenEdges:
items:
properties:
sourceCluster:
type: string
targetClusters:
items:
type: string
type: array
required:
- sourceCluster
- targetClusters
type: object
type: array
topologyType:
default: full-mesh
enum:
- restricted
- full-mesh
- custom
type: string
type: object
type: object
status:
description: WorkerSliceConfigStatus defines the observed state of Slice
Expand Down
17 changes: 17 additions & 0 deletions config/samples/topology-custom-matrix.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
apiVersion: controller.kubeslice.io/v1alpha1
kind: SliceConfig
metadata:
name: demo-custom-matrix
namespace: kubeslice-avesha
spec:
sliceSubnet: "10.3.0.0/16"
clusters: ["dmz", "gateway", "internal", "database"]
topologyConfig:
topologyType: custom
connectivityMatrix:
- sourceCluster: dmz
targetClusters: ["gateway"]
- sourceCluster: gateway
targetClusters: ["internal", "dmz"]
- sourceCluster: internal
targetClusters: ["database", "gateway"]
18 changes: 18 additions & 0 deletions config/samples/topology-full-mesh.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: controller.kubeslice.io/v1alpha1
kind: SliceConfig
metadata:
name: demo-full-mesh
namespace: kubeslice-avesha
spec:
sliceSubnet: "10.1.0.0/16"
clusters: ["cluster-1", "cluster-2", "cluster-3", "cluster-4"]
topologyConfig:
topologyType: full-mesh
# Full-mesh creates all possible connections between clusters
# For 4 clusters: 6 gateway pairs (n*(n-1)/2)
# cluster-1 <-> cluster-2
# cluster-1 <-> cluster-3
# cluster-1 <-> cluster-4
# cluster-2 <-> cluster-3
# cluster-2 <-> cluster-4
# cluster-3 <-> cluster-4
13 changes: 13 additions & 0 deletions config/samples/topology-restricted-secure.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: controller.kubeslice.io/v1alpha1
kind: SliceConfig
metadata:
name: demo-restricted-secure
namespace: kubeslice-avesha
spec:
sliceSubnet: "10.2.0.0/16"
clusters: ["dmz", "gateway", "internal", "analytics"]
topologyConfig:
topologyType: restricted
forbiddenEdges:
- sourceCluster: gateway
targetClusters: ["dmz", "analytics"]
Loading