Skip to content

Commit a9011f9

Browse files
authored
Merge pull request #123 from fleetboard-io/feat/fit-with-mcs-serviceimport
Feat: Remove local syncer-operator namespace
2 parents 9e15a48 + 1927727 commit a9011f9

File tree

15 files changed

+37
-121
lines changed

15 files changed

+37
-121
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
fetch-depth: 1
3131
path: ${{ env.GOPATH }}/src/github.com/${{ github.repository }}
3232
- name: Cache go modules and build cache
33-
uses: actions/cache@v4.0.1
33+
uses: actions/cache@v4
3434
with:
3535
# In order:
3636
# * Module download cache

cmd/proxy/app/proxy.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,8 +632,13 @@ func (s *ProxyServer) Run() error {
632632
return err
633633
}
634634

635+
hasFleetServiceName, err := labels.NewRequirement(known.LabelServiceName, selection.Exists, nil)
636+
if err != nil {
637+
return err
638+
}
639+
635640
labelSelector := labels.NewSelector()
636-
labelSelector = labelSelector.Add(*noProxyName, *noHeadlessEndpoints)
641+
labelSelector = labelSelector.Add(*noProxyName, *noHeadlessEndpoints, *hasFleetServiceName)
637642

638643
// Make informers that filter out objects that want a non-default service proxy.
639644
informerFactory := informers.NewSharedInformerFactoryWithOptions(s.Client, s.Config.ConfigSyncPeriod.Duration,

examples/client-import.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,6 @@ apiVersion: multicluster.x-k8s.io/v1alpha1
3636
kind: ServiceImport
3737
metadata:
3838
name: nginx-svc
39-
namespace: syncer-operator
40-
labels:
41-
services.fleetboard.io/multi-cluster-service-LocalNamespace: default
42-
services.fleetboard.io/multi-cluster-service-name: nginx-svc
4339
spec:
4440
type: "ClusterSetIP"
4541
ports:

pkg/cnf/CNFManager.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ func NewCNFManager(opts *tunnel.Options) (*Manager, error) {
158158
serviceSyncer, errSyncer := syncer.New(&agentSpec, known.SyncerConfig{
159159
LocalRestConfig: localConfig,
160160
LocalClient: dynamicLocalClient,
161-
LocalNamespace: agentSpec.LocalNamespace,
162161
LocalClusterID: agentSpec.ClusterID,
163162
}, hubConfig)
164163
if errSyncer != nil {

pkg/controller/mcs/serviceimport_controller.go

Lines changed: 13 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ func NewServiceImportController(kubeclient kubernetes.Interface,
7171
default:
7272
return sic.Handle(key)
7373
}
74-
}).
75-
WithEnqueueFilterFunc(preFilter)
74+
})
7675
_, err := sic.localSIInformer.Informer().AddEventHandler(yachtcontroller.DefaultResourceEventHandlerFuncs())
7776
if err != nil {
7877
klog.Errorf("failed to add event handler for serviceimport: %v", err)
@@ -131,40 +130,19 @@ func (s *ServiceImportController) AddInitialInfoToServiceImport(si *v1alpha1.Ser
131130
func (s *ServiceImportController) getServiceImportFromEndpointSlice(obj interface{}) (*v1alpha1.ServiceImport, error) {
132131
slice := obj.(*discoveryv1.EndpointSlice)
133132
rawServiceName, serviceExist := slice.Labels[known.LabelServiceName]
134-
rawServiceNamespace, serviceNamespaceExsit := slice.Labels[known.LabelServiceNameSpace]
133+
_, serviceNamespaceExsit := slice.Labels[known.LabelServiceNameSpace]
135134
if serviceExist && serviceNamespaceExsit {
136-
if siList, err := s.localSILister.ServiceImports(s.operatorNamespace).List(
137-
labels.SelectorFromSet(labels.Set{
138-
known.LabelServiceName: rawServiceName,
139-
known.LabelServiceNameSpace: rawServiceNamespace,
140-
})); err == nil && len(siList) > 0 {
141-
return siList[0], nil
135+
if si, err := s.localSILister.ServiceImports(slice.Namespace).Get(rawServiceName); err == nil {
136+
return si, nil
142137
} else {
143-
klog.Errorf("failed to list ServiceImport for ServiceImport: %v", err)
138+
klog.Errorf("failed to list ServiceImport for EndpointSlice %s/%s: %v",
139+
slice.Namespace, slice.Name, err)
144140
}
145141
}
146142
klog.Infof("can't resolve service import from this slice %s/%s", slice.Namespace, slice.Name)
147143
return nil, fmt.Errorf("can't resolve service import from this slice %s/%s", slice.Namespace, slice.Name)
148144
}
149145

150-
// preFilter filter ServiceImport if has no label known.LabelServiceName and known.LabelServiceNameSpace
151-
func preFilter(oldObj, newObj interface{}) (bool, error) {
152-
var si *v1alpha1.ServiceImport
153-
if newObj == nil {
154-
// Delete
155-
si = oldObj.(*v1alpha1.ServiceImport)
156-
} else {
157-
// Add or Update
158-
si = newObj.(*v1alpha1.ServiceImport)
159-
}
160-
_, serviceExist := si.Labels[known.LabelServiceName]
161-
_, serviceNamespaceExist := si.Labels[known.LabelServiceNameSpace]
162-
if !serviceExist || !serviceNamespaceExist {
163-
return false, nil
164-
}
165-
return true, nil
166-
}
167-
168146
func (s *ServiceImportController) Handle(obj interface{}) (requeueAfter *time.Duration, err error) {
169147
ctx := context.Background()
170148
key := obj.(string)
@@ -202,19 +180,20 @@ func (s *ServiceImportController) Handle(obj interface{}) (requeueAfter *time.Du
202180
si, err = s.mcsClientset.MulticlusterV1alpha1().ServiceImports(namespace).Update(context.TODO(),
203181
si, metav1.UpdateOptions{})
204182
if err != nil {
183+
klog.Errorf("failed to update serviceimport %s/%s, for %v", si.Namespace, si.Name, err)
205184
d := time.Second
206185
return &d, err
207186
}
208187
}
209188

210189
// apply endpoint slices.
211190
srcLabelMap := labels.Set{
212-
known.LabelServiceName: si.Labels[known.LabelServiceName],
213-
known.LabelServiceNameSpace: si.Labels[known.LabelServiceNameSpace],
191+
known.LabelServiceName: si.Name,
192+
known.LabelServiceNameSpace: si.Namespace,
214193
}
215194
dstLabelMap := labels.Set{
216-
known.LabelServiceName: si.Labels[known.LabelServiceName],
217-
known.LabelServiceNameSpace: si.Labels[known.LabelServiceNameSpace],
195+
known.LabelServiceName: si.Name,
196+
known.LabelServiceNameSpace: si.Namespace,
218197
}
219198

220199
endpointSliceList, err := utils.RemoveNonexistentEndpointslice(s.sourceEndpointSlicesLister, "",
@@ -266,8 +245,8 @@ func (s *ServiceImportController) Run(ctx context.Context, delicatedNamespace st
266245

267246
// recycleServiceImport recycle derived service and derived endpoint slices.
268247
func (s *ServiceImportController) recycleServiceImport(ctx context.Context, si *v1alpha1.ServiceImport) error {
269-
rawServiceName := si.Labels[known.LabelServiceName]
270-
rawServiceNamespace := si.Labels[known.LabelServiceNameSpace]
248+
rawServiceName := si.Name
249+
rawServiceNamespace := si.Namespace
271250
// 1. recycle endpoint slices.
272251
if err := s.localk8sClient.DiscoveryV1().EndpointSlices(si.Namespace).
273252
DeleteCollection(ctx, metav1.DeleteOptions{}, metav1.ListOptions{

pkg/controller/syncer/agent.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ type AgentConfig struct {
3131
}
3232

3333
type Syncer struct {
34-
ClusterID string
35-
LocalNamespace string
34+
ClusterID string
3635

3736
HubKubeConfig *rest.Config
3837
SyncerConf known.SyncerConfig
@@ -78,7 +77,6 @@ func New(spec *tunnel.Specification, syncerConf known.SyncerConfig, hubKubeConfi
7877
return nil, err
7978
}
8079

81-
syncerConf.LocalNamespace = spec.LocalNamespace
8280
syncerConf.LocalClusterID = spec.ClusterID
8381
syncerConf.RemoteNamespace = spec.ShareNamespace
8482

@@ -88,7 +86,6 @@ func New(spec *tunnel.Specification, syncerConf known.SyncerConfig, hubKubeConfi
8886
HubKubeConfig: hubKubeConfig,
8987
ServiceExportController: serviceExportController,
9088
ServiceImportController: serviceImportController,
91-
LocalNamespace: syncerConf.LocalNamespace,
9289
KubeInformerFactory: kubeInformerFactory,
9390
KubeClientSet: localKubeClientSet,
9491
McsInformerFactory: mcsInformerFactory,
@@ -108,8 +105,7 @@ func (s *Syncer) Start(ctx context.Context) (err error) {
108105

109106
klog.Info("Starting Syncer and init virtual service CIDR...")
110107
var cidr string
111-
if cidr, err = s.ServiceImportController.IPAM.InitNewCIDR(s.LocalMcsClientSet,
112-
s.LocalNamespace, s.KubeClientSet); err != nil {
108+
if cidr, err = s.ServiceImportController.IPAM.InitNewCIDR(s.LocalMcsClientSet, s.KubeClientSet); err != nil {
113109
klog.Errorf("we allocate for virtual service failed for %v", err)
114110
return err
115111
} else {

pkg/known/constants.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
const (
88
Fleetboard = "fleetboard"
99
FleetboardSystemNamespace = "fleetboard-system"
10-
SyncNamespace = "syncer-operator"
1110
HubClusterName = "hub"
1211
HubSecretName = Fleetboard
1312
)

pkg/known/types.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ type SyncerConfig struct {
1212
// LocalClient the client used to access local resources to sync. This is optional and is provided for unit testing
1313
// in lieu of the LocalRestConfig. If not specified, one is created from the LocalRestConfig.
1414
LocalClient dynamic.Interface
15-
LocalNamespace string
1615
LocalClusterID string
1716
RemoteNamespace string
1817
}

pkg/plugin/crossdns.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,7 @@ func (c *CrossDNS) getDNSRecord(ctx context.Context, _ string, state *request.Re
7575
klog.Fatal("unable to sync caches for endpointslices or service import")
7676
}
7777

78-
si, errGetSI := c.SILister.ServiceImports("syncer-operator").List(labels.SelectorFromSet(
79-
labels.Set{
80-
known.LabelServiceNameSpace: pReq.namespace,
81-
known.LabelServiceName: pReq.service,
82-
}))
78+
si, errGetSI := c.SILister.ServiceImports(pReq.namespace).Get(pReq.service)
8379
if errGetSI != nil {
8480
klog.Errorf("Failed to get service import %v", errGetSI)
8581
return dns.RcodeServerFailure, errors.New("failed to write response")
@@ -88,24 +84,24 @@ func (c *CrossDNS) getDNSRecord(ctx context.Context, _ string, state *request.Re
8884
var dnsRecords []DNSRecord
8985
var err error
9086
var srcEndpointSliceList []*v1.EndpointSlice
91-
if si[0].Spec.Type == v1alpha1.ClusterSetIP {
92-
if len(si[0].Spec.IPs) != 0 {
87+
if si.Spec.Type == v1alpha1.ClusterSetIP {
88+
if len(si.Spec.IPs) != 0 {
9389
record := DNSRecord{
94-
IP: si[0].Spec.IPs[0],
90+
IP: si.Spec.IPs[0],
9591
}
9692
dnsRecords = append(dnsRecords, record)
9793
}
9894
} else {
9995
if pReq.cluster != "" {
100-
srcEndpointSliceList, err = c.endpointSlicesLister.EndpointSlices("syncer-operator").List(
96+
srcEndpointSliceList, err = c.endpointSlicesLister.EndpointSlices(pReq.namespace).List(
10197
labels.SelectorFromSet(
10298
labels.Set{
10399
known.LabelServiceNameSpace: pReq.namespace,
104100
known.LabelServiceName: pReq.service,
105101
known.LabelClusterID: pReq.cluster,
106102
}))
107103
} else {
108-
srcEndpointSliceList, err = c.endpointSlicesLister.EndpointSlices("syncer-operator").List(
104+
srcEndpointSliceList, err = c.endpointSlicesLister.EndpointSlices(pReq.namespace).List(
109105
labels.SelectorFromSet(
110106
labels.Set{
111107
known.LabelServiceNameSpace: pReq.namespace,

pkg/proxy/config/config.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ import (
2727
"k8s.io/klog/v2"
2828
"sigs.k8s.io/mcs-api/pkg/apis/v1alpha1"
2929
mcsinformer "sigs.k8s.io/mcs-api/pkg/client/informers/externalversions/apis/v1alpha1"
30-
31-
"github.com/fleetboard-io/fleetboard/pkg/known"
3230
)
3331

3432
// ServiceImportHandler is an abstract interface of objects which receive
@@ -119,11 +117,6 @@ func (c *EndpointSliceConfig) handleAddEndpointSlice(obj interface{}) {
119117
return
120118
}
121119
for _, h := range c.eventHandlers {
122-
if endpointSlice.Namespace != known.SyncNamespace {
123-
klog.Infof("EndpointSliceConfig.handleAddEndpointSlice will not deal: %v/%v",
124-
endpointSlice.Namespace, endpointSlice.Name)
125-
continue
126-
}
127120
klog.V(4).InfoS("Calling handler.OnEndpointSliceAdd", "endpointslice",
128121
klog.KObj(endpointSlice))
129122
h.OnEndpointSliceAdd(endpointSlice)
@@ -142,11 +135,6 @@ func (c *EndpointSliceConfig) handleUpdateEndpointSlice(oldObj, newObj interface
142135
return
143136
}
144137
for _, h := range c.eventHandlers {
145-
if newEndpointSlice.Namespace != known.SyncNamespace {
146-
klog.Infof("EndpointSliceConfig.handleUpdateEndpointSlice will not deal: %v/%v",
147-
newEndpointSlice.Namespace, newEndpointSlice.Name)
148-
continue
149-
}
150138
klog.V(4).InfoS("Calling handler.OnEndpointSliceUpdate", "endpointslice",
151139
klog.KObj(newEndpointSlice))
152140
h.OnEndpointSliceUpdate(oldEndpointSlice, newEndpointSlice)
@@ -167,12 +155,6 @@ func (c *EndpointSliceConfig) handleDeleteEndpointSlice(obj interface{}) {
167155
}
168156
}
169157
for _, h := range c.eventHandlers {
170-
if endpointSlice.Namespace != known.SyncNamespace {
171-
klog.Infof("EndpointSliceConfig.handleDeleteEndpointSlice will not deal: %v/%v",
172-
endpointSlice.Namespace, endpointSlice.Name)
173-
continue
174-
}
175-
176158
klog.V(4).InfoS("Calling handler.OnEndpointsDelete", "endpointslice", klog.KObj(endpointSlice))
177159
h.OnEndpointSliceDelete(endpointSlice)
178160
}

0 commit comments

Comments
 (0)