metropolis/node/kubernetes: synchronize metropolis node labels to kubernetes

This extends the labelmaker to manage Kubernetes node labels mirrored
from Metropolis node labels.

Note that currently there is no way to edit a ClusterConfiguration at
cluster runtime, but this will come in a future CL.

Change-Id: If7dbc3796085a8b85c1b5b2a181bcb1cee3d1db4
Reviewed-on: https://review.monogon.dev/c/monogon/+/3469
Reviewed-by: Jan Schär <jan@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/node/kubernetes/service_controller.go b/metropolis/node/kubernetes/service_controller.go
index 71b133c..02cce8c 100644
--- a/metropolis/node/kubernetes/service_controller.go
+++ b/metropolis/node/kubernetes/service_controller.go
@@ -44,12 +44,13 @@
 	ServiceIPRange net.IPNet
 	ClusterNet     net.IPNet
 
-	KPKI      *pki.PKI
-	Root      *localstorage.Root
-	Consensus consensus.ServiceHandle
-	Network   *network.Service
-	Node      *identity.NodeCredentials
-	Curator   ipb.CuratorClient
+	KPKI       *pki.PKI
+	Root       *localstorage.Root
+	Consensus  consensus.ServiceHandle
+	Network    *network.Service
+	Node       *identity.NodeCredentials
+	Curator    ipb.CuratorClient
+	Management apb.ManagementClient
 }
 
 type Controller struct {
@@ -163,6 +164,7 @@
 	lm := labelmaker{
 		clientSet: clientSet,
 		curator:   s.c.Curator,
+		mgmt:      s.c.Management,
 	}
 	if err := supervisor.Run(ctx, "labelmaker", lm.run); err != nil {
 		return err