Skip to content

Commit

Permalink
feat: support mcs
Browse files Browse the repository at this point in the history
Signed-off-by: shentiecheng <[email protected]>
  • Loading branch information
Poor12 committed Jan 9, 2024
1 parent 1a2c9ff commit 78fa5e9
Show file tree
Hide file tree
Showing 26 changed files with 2,684 additions and 53 deletions.
4 changes: 4 additions & 0 deletions cmd/controller-manager/app/controllermanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ const (
AutoMigrationControllerName = "auto-migration"
StatusAggregatorControllerName = "status-aggregator"
FederatedHPAControllerName = "federated-hpa"
ServiceExportControllerName = "serviceexport"
ServiceImportControllerName = "serviceimport"
)

var knownControllers = map[string]controllermanager.StartControllerFunc{
Expand All @@ -62,6 +64,8 @@ var knownControllers = map[string]controllermanager.StartControllerFunc{
AutoMigrationControllerName: startAutoMigrationController,
StatusAggregatorControllerName: startStatusAggregatorController,
FederatedHPAControllerName: startFederatedHPAController,
ServiceExportControllerName: startServiceExportController,
ServiceImportControllerName: startServiceImportController,
}

var controllersDisabledByDefault = sets.New[string]()
Expand Down
44 changes: 44 additions & 0 deletions cmd/controller-manager/app/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import (
"github.com/kubewharf/kubeadmiral/pkg/controllers/federatedcluster"
"github.com/kubewharf/kubeadmiral/pkg/controllers/federatedhpa"
"github.com/kubewharf/kubeadmiral/pkg/controllers/follower"
"github.com/kubewharf/kubeadmiral/pkg/controllers/mcs"
"github.com/kubewharf/kubeadmiral/pkg/controllers/nsautoprop"
"github.com/kubewharf/kubeadmiral/pkg/controllers/override"
"github.com/kubewharf/kubeadmiral/pkg/controllers/policyrc"
Expand Down Expand Up @@ -344,3 +345,46 @@ func startFederatedHPAController(

return federatedHPAController, nil
}

func startServiceExportController(
ctx context.Context,
controllerCtx *controllercontext.Context,
) (controllermanager.Controller, error) {
serviceExportController, err := mcs.NewServiceExportController(
controllerCtx.KubeClientset,
controllerCtx.KubeInformerFactory.Discovery().V1beta1().EndpointSlices(),
controllerCtx.FederatedInformerManager,
klog.Background(),
controllerCtx.Metrics,
controllerCtx.WorkerCount,
)
if err != nil {
return nil, fmt.Errorf("error creating serviceexport controller: %w", err)
}

go serviceExportController.Run(ctx)

return serviceExportController, nil
}

func startServiceImportController(
ctx context.Context,
controllerCtx *controllercontext.Context,
) (controllermanager.Controller, error) {
serviceImportController, err := mcs.NewServiceImportController(
controllerCtx.KubeClientset,
controllerCtx.KubeInformerFactory.Discovery().V1beta1().EndpointSlices(),
controllerCtx.FedClientset,
controllerCtx.FedInformerFactory.Core().V1alpha1().FederatedObjects(),
controllerCtx.Metrics,
klog.Background(),
controllerCtx.WorkerCount,
)
if err != nil {
return nil, fmt.Errorf("error creating serviceimport controller: %w", err)
}

go serviceImportController.Run(ctx)

return serviceImportController, nil
}
99 changes: 99 additions & 0 deletions config/crds/multicluster.x-k8s.io_serviceexports.yaml

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

133 changes: 133 additions & 0 deletions config/crds/multicluster.x-k8s.io_serviceimports.yaml

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

42 changes: 42 additions & 0 deletions config/sample/host/01-ftc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -422,3 +422,45 @@ spec:
fields:
- metadata.creationTimestamp
- status
---
apiVersion: core.kubeadmiral.io/v1alpha1
kind: FederatedTypeConfig
metadata:
name: serviceimports.multicluster.x-k8s.io
spec:
sourceType:
kind: ServiceImport
pluralName: serviceimports
scope: Namespaced
version: v1alpha1
group: multicluster.x-k8s.io
controllers:
- - kubeadmiral.io/global-scheduler
- - kubeadmiral.io/overridepolicy-controller
---
apiVersion: core.kubeadmiral.io/v1alpha1
kind: FederatedTypeConfig
metadata:
name: serviceexports.multicluster.x-k8s.io
spec:
sourceType:
kind: ServiceExport
pluralName: serviceexports
scope: Namespaced
version: v1alpha1
group: multicluster.x-k8s.io
controllers:
- - kubeadmiral.io/global-scheduler
- - kubeadmiral.io/overridepolicy-controller
---
apiVersion: core.kubeadmiral.io/v1alpha1
kind: FederatedTypeConfig
metadata:
name: endpointslices.discovery.k8s.io
spec:
sourceType:
kind: EndpointSlice
pluralName: endpointslices
scope: Namespaced
version: v1beta1
group: discovery.k8s.io
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ require (
sigs.k8s.io/controller-runtime v0.14.1
sigs.k8s.io/custom-metrics-apiserver v1.27.0
sigs.k8s.io/kind v0.17.0
sigs.k8s.io/mcs-api v0.1.0
)

require (
Expand Down
Loading

0 comments on commit 78fa5e9

Please sign in to comment.