Skip to content

Commit a791ae2

Browse files
committed
created syncermetrics at the top level of multiproject
1 parent 088575f commit a791ae2

File tree

5 files changed

+32
-4
lines changed

5 files changed

+32
-4
lines changed

cmd/glbc/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,8 @@ func main() {
267267
nodeTopologyFactory = informernodetopology.NewSharedInformerFactory(nodeTopologyClient, flags.F.ResyncPeriod)
268268
}
269269
ctx := context.Background()
270+
syncerMetrics := syncMetrics.NewNegMetricsCollector(flags.F.NegMetricsExportInterval, rootLogger, "")
271+
270272
if flags.F.LeaderElection.LeaderElect {
271273
err := multiprojectstart.StartWithLeaderElection(
272274
ctx,
@@ -285,6 +287,7 @@ func main() {
285287
gceCreator,
286288
namer,
287289
stopCh,
290+
syncerMetrics,
288291
)
289292
if err != nil {
290293
rootLogger.Error(err, "Failed to start multi-project syncer with leader election")
@@ -305,6 +308,7 @@ func main() {
305308
gceCreator,
306309
namer,
307310
stopCh,
311+
syncerMetrics,
308312
)
309313
}
310314
}, rOption.wg)

pkg/multiproject/manager/manager.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"k8s.io/ingress-gce/pkg/multiproject/finalizer"
1616
"k8s.io/ingress-gce/pkg/multiproject/gce"
1717
"k8s.io/ingress-gce/pkg/multiproject/neg"
18+
syncMetrics "k8s.io/ingress-gce/pkg/neg/metrics/metricscollector"
1819
"k8s.io/ingress-gce/pkg/neg/syncers/labels"
1920
providerconfigclient "k8s.io/ingress-gce/pkg/providerconfig/client/clientset/versioned"
2021
svcnegclient "k8s.io/ingress-gce/pkg/svcneg/client/clientset/versioned"
@@ -44,6 +45,7 @@ type ProviderConfigControllersManager struct {
4445
lpConfig labels.PodLabelPropagationConfig
4546
gceCreator gce.GCECreator
4647
globalStopCh <-chan struct{}
48+
syncerMetrics *syncMetrics.SyncerMetrics
4749
}
4850

4951
type ControllerSet struct {
@@ -66,6 +68,7 @@ func NewProviderConfigControllerManager(
6668
gceCreator gce.GCECreator,
6769
globalStopCh <-chan struct{},
6870
logger klog.Logger,
71+
syncerMetrics *syncMetrics.SyncerMetrics,
6972
) *ProviderConfigControllersManager {
7073
return &ProviderConfigControllersManager{
7174
controllers: make(map[string]*ControllerSet),
@@ -84,6 +87,7 @@ func NewProviderConfigControllerManager(
8487
lpConfig: lpConfig,
8588
gceCreator: gceCreator,
8689
globalStopCh: globalStopCh,
90+
syncerMetrics: syncerMetrics,
8791
}
8892
}
8993

@@ -133,6 +137,7 @@ func (pccm *ProviderConfigControllersManager) StartControllersForProviderConfig(
133137
pccm.globalStopCh,
134138
logger,
135139
pc,
140+
pccm.syncerMetrics,
136141
)
137142
if err != nil {
138143
cleanupErr := finalizer.DeleteProviderConfigNEGCleanupFinalizer(pc, pccm.providerConfigClient, logger)

pkg/multiproject/neg/neg.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ func StartNEGController(
6868
globalStopCh <-chan struct{},
6969
logger klog.Logger,
7070
providerConfig *providerconfig.ProviderConfig,
71+
syncerMetrics *syncMetrics.SyncerMetrics,
7172
) (chan<- struct{}, error) {
7273
providerConfigName := providerConfig.Name
7374
logger.V(2).Info("Initializing NEG controller", "providerConfig", providerConfigName)
@@ -130,6 +131,7 @@ func StartNEGController(
130131
joinedStopCh,
131132
logger,
132133
providerConfigID,
134+
syncerMetrics,
133135
)
134136

135137
if err != nil {
@@ -289,6 +291,7 @@ func createNEGController(
289291
stopCh <-chan struct{},
290292
logger klog.Logger,
291293
providerConfigID string,
294+
syncerMetrics *syncMetrics.SyncerMetrics,
292295
) (*neg.Controller, error) {
293296

294297
// The adapter uses Network SelfLink
@@ -301,7 +304,6 @@ func createNEGController(
301304
noDefaultBackendServicePort := utils.ServicePort{}
302305
var noNodeTopologyInformer cache.SharedIndexInformer
303306
negMetrics := metrics.NewNegMetrics(providerConfigID)
304-
syncerMetrics := syncMetrics.NewNegMetricsCollector(flags.F.NegMetricsExportInterval, logger, negMetrics.ProviderConfigID)
305307
negController, err := neg.NewController(
306308
kubeClient,
307309
svcNegClient,

pkg/multiproject/start/start.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@ import (
1919
pccontroller "k8s.io/ingress-gce/pkg/multiproject/controller"
2020
"k8s.io/ingress-gce/pkg/multiproject/gce"
2121
"k8s.io/ingress-gce/pkg/multiproject/manager"
22+
"k8s.io/ingress-gce/pkg/neg/metrics"
23+
syncMetrics "k8s.io/ingress-gce/pkg/neg/metrics/metricscollector"
2224
"k8s.io/ingress-gce/pkg/neg/syncers/labels"
2325
providerconfigclient "k8s.io/ingress-gce/pkg/providerconfig/client/clientset/versioned"
2426
providerconfiginformers "k8s.io/ingress-gce/pkg/providerconfig/client/informers/externalversions"
2527
"k8s.io/ingress-gce/pkg/recorders"
28+
2629
svcnegclient "k8s.io/ingress-gce/pkg/svcneg/client/clientset/versioned"
2730
informersvcneg "k8s.io/ingress-gce/pkg/svcneg/client/informers/externalversions"
2831
"k8s.io/ingress-gce/pkg/utils/namer"
@@ -31,6 +34,12 @@ import (
3134

3235
const multiProjectLeaderElectionLockName = "ingress-gce-multi-project-lock"
3336

37+
func init() {
38+
// register prometheus metrics
39+
metrics.RegisterMetrics()
40+
syncMetrics.RegisterMetrics()
41+
}
42+
3443
// StartWithLeaderElection starts the ProviderConfig controller with leader election.
3544
func StartWithLeaderElection(
3645
parentCtx context.Context,
@@ -49,12 +58,13 @@ func StartWithLeaderElection(
4958
gceCreator gce.GCECreator,
5059
rootNamer *namer.Namer,
5160
stopCh <-chan struct{},
61+
syncerMetrics *syncMetrics.SyncerMetrics,
5262
) error {
5363
logger.V(1).Info("Starting multi-project controller with leader election", "host", hostname)
5464

5565
recordersManager := recorders.NewManager(eventRecorderKubeClient, logger)
5666

57-
leConfig, err := makeLeaderElectionConfig(leaderElectKubeClient, hostname, recordersManager, logger, kubeClient, svcNegClient, kubeSystemUID, eventRecorderKubeClient, providerConfigClient, informersFactory, svcNegFactory, networkFactory, nodeTopologyFactory, gceCreator, rootNamer)
67+
leConfig, err := makeLeaderElectionConfig(leaderElectKubeClient, hostname, recordersManager, logger, kubeClient, svcNegClient, kubeSystemUID, eventRecorderKubeClient, providerConfigClient, informersFactory, svcNegFactory, networkFactory, nodeTopologyFactory, gceCreator, rootNamer, syncerMetrics)
5868
if err != nil {
5969
return err
6070
}
@@ -88,6 +98,7 @@ func makeLeaderElectionConfig(
8898
nodeTopologyFactory informernodetopology.SharedInformerFactory,
8999
gceCreator gce.GCECreator,
90100
rootNamer *namer.Namer,
101+
syncerMetrics *syncMetrics.SyncerMetrics,
91102
) (*leaderelection.LeaderElectionConfig, error) {
92103
recorder := recordersManager.Recorder(flags.F.LeaderElection.LockObjectNamespace)
93104
// add a uniquifier so that two processes on the same host don't accidentally both become active
@@ -116,7 +127,7 @@ func makeLeaderElectionConfig(
116127
Callbacks: leaderelection.LeaderCallbacks{
117128
OnStartedLeading: func(ctx context.Context) {
118129
logger.Info("Became leader, starting multi-project controller")
119-
Start(logger, kubeClient, svcNegClient, kubeSystemUID, eventRecorderKubeClient, providerConfigClient, informersFactory, svcNegFactory, networkFactory, nodeTopologyFactory, gceCreator, rootNamer, ctx.Done())
130+
Start(logger, kubeClient, svcNegClient, kubeSystemUID, eventRecorderKubeClient, providerConfigClient, informersFactory, svcNegFactory, networkFactory, nodeTopologyFactory, gceCreator, rootNamer, ctx.Done(), syncerMetrics)
120131
},
121132
OnStoppedLeading: func() {
122133
logger.Info("Stop running multi-project leader election")
@@ -143,6 +154,7 @@ func Start(
143154
gceCreator gce.GCECreator,
144155
rootNamer *namer.Namer,
145156
stopCh <-chan struct{},
157+
syncerMetrics *syncMetrics.SyncerMetrics,
146158
) {
147159
logger.V(1).Info("Starting ProviderConfig controller")
148160
lpConfig := labels.PodLabelPropagationConfig{}
@@ -173,6 +185,7 @@ func Start(
173185
gceCreator,
174186
stopCh,
175187
logger,
188+
syncerMetrics,
176189
)
177190
logger.V(1).Info("Initialized ProviderConfig controller manager")
178191

pkg/multiproject/start/start_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@ import (
3030
"k8s.io/ingress-gce/pkg/multiproject/finalizer"
3131
multiprojectgce "k8s.io/ingress-gce/pkg/multiproject/gce"
3232
"k8s.io/ingress-gce/pkg/multiproject/testutil"
33+
syncMetrics "k8s.io/ingress-gce/pkg/neg/metrics/metricscollector"
3334
negtypes "k8s.io/ingress-gce/pkg/neg/types"
3435
pcclientfake "k8s.io/ingress-gce/pkg/providerconfig/client/clientset/versioned/fake"
36+
3537
svcnegfake "k8s.io/ingress-gce/pkg/svcneg/client/clientset/versioned/fake"
3638
informersvcneg "k8s.io/ingress-gce/pkg/svcneg/client/informers/externalversions"
3739
"k8s.io/ingress-gce/pkg/utils/namer"
@@ -242,6 +244,7 @@ func TestStartProviderConfigIntegration(t *testing.T) {
242244
gceCreator,
243245
rootNamer,
244246
stopCh,
247+
syncMetrics.FakeSyncerMetrics(),
245248
)
246249
}()
247250

@@ -347,7 +350,7 @@ func TestSharedInformers_PC1Stops_PC2AndPC3KeepWorking(t *testing.T) {
347350
go Start(
348351
logger, kubeClient, svcNegClient, kubeSystemUID, kubeClient,
349352
pcClient, informersFactory, svcNegFactory, networkFactory, nodeTopoFactory,
350-
gceCreator, rootNamer, globalStop,
353+
gceCreator, rootNamer, globalStop, syncMetrics.FakeSyncerMetrics(),
351354
)
352355

353356
// --- pc-1: create and validate baseline service ---
@@ -971,6 +974,7 @@ func TestProviderConfigErrorCases(t *testing.T) {
971974
gceCreator,
972975
rootNamer,
973976
stopCh,
977+
syncMetrics.FakeSyncerMetrics(),
974978
)
975979
}()
976980

0 commit comments

Comments
 (0)