Skip to content

Commit

Permalink
service cidr controller manager
Browse files Browse the repository at this point in the history
Controls the lifecycle of the ServiceCIDRs adding finalizers and
setting the Ready condition in status when they are created, and
removing the finalizers once it is safe to remove (no orphan IPAddresses)

An IPAddress is orphan if there are no ServiceCIDR containing it.

Change-Id: Icbe31e1ed8525fa04df3b741c8a817e5f2a49e80
  • Loading branch information
aojea committed Oct 31, 2023
1 parent 1642761 commit 4ff8086
Show file tree
Hide file tree
Showing 8 changed files with 1,266 additions and 0 deletions.
3 changes: 3 additions & 0 deletions cmd/kube-controller-manager/app/controllermanager.go
Expand Up @@ -563,6 +563,9 @@ func NewControllerDescriptors() map[string]*ControllerDescriptor {
panic(fmt.Sprintf("alias %q conflicts with a controller name", alias))
}
}
if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.MultiCIDRServiceAllocator) {
register(names.ServiceCIDRController, startServiceCIDRsController)
}

return controllers
}
Expand Down
38 changes: 38 additions & 0 deletions cmd/kube-controller-manager/app/networking.go
@@ -0,0 +1,38 @@
/*
Copyright 2023 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

// Package app implements a server that runs a set of active
// components. This includes replication controllers, service endpoints and
// nodes.
package app

import (
"context"

"k8s.io/controller-manager/controller"
"k8s.io/kubernetes/pkg/controller/servicecidrs"
)

func startServiceCIDRsController(ctx context.Context, controllerContext ControllerContext) (controller.Interface, bool, error) {
go servicecidrs.NewController(
controllerContext.InformerFactory.Networking().V1alpha1().ServiceCIDRs(),
controllerContext.InformerFactory.Networking().V1alpha1().IPAddresses(),
controllerContext.ClientBuilder.ClientOrDie("service-cidrs-controller"),
).Run(ctx, 5)
// TODO use component config
return nil, true, nil

}
1 change: 1 addition & 0 deletions cmd/kube-controller-manager/names/controller_names.go
Expand Up @@ -82,4 +82,5 @@ const (
ResourceClaimController = "resourceclaim-controller"
LegacyServiceAccountTokenCleanerController = "legacy-serviceaccount-token-cleaner-controller"
ValidatingAdmissionPolicyStatusController = "validatingadmissionpolicy-status-controller"
ServiceCIDRController = "service-cidr-controller"
)

0 comments on commit 4ff8086

Please sign in to comment.