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/core/roleserve/BUILD.bazel b/metropolis/node/core/roleserve/BUILD.bazel
index 7f3f0d3..f5e140a 100644
--- a/metropolis/node/core/roleserve/BUILD.bazel
+++ b/metropolis/node/core/roleserve/BUILD.bazel
@@ -36,6 +36,7 @@
"//metropolis/node/kubernetes",
"//metropolis/node/kubernetes/containerd",
"//metropolis/node/kubernetes/pki",
+ "//metropolis/proto/api",
"//metropolis/proto/common",
"//metropolis/version",
"//osbase/event",
diff --git a/metropolis/node/core/roleserve/worker_kubernetes.go b/metropolis/node/core/roleserve/worker_kubernetes.go
index 898b60e..cfab7cb 100644
--- a/metropolis/node/core/roleserve/worker_kubernetes.go
+++ b/metropolis/node/core/roleserve/worker_kubernetes.go
@@ -6,18 +6,20 @@
"net"
"source.monogon.dev/metropolis/node/core/clusternet"
- ipb "source.monogon.dev/metropolis/node/core/curator/proto/api"
"source.monogon.dev/metropolis/node/core/identity"
"source.monogon.dev/metropolis/node/core/localstorage"
"source.monogon.dev/metropolis/node/core/network"
"source.monogon.dev/metropolis/node/kubernetes"
"source.monogon.dev/metropolis/node/kubernetes/containerd"
kpki "source.monogon.dev/metropolis/node/kubernetes/pki"
- cpb "source.monogon.dev/metropolis/proto/common"
"source.monogon.dev/osbase/event"
"source.monogon.dev/osbase/event/memory"
"source.monogon.dev/osbase/net/dns"
"source.monogon.dev/osbase/supervisor"
+
+ ipb "source.monogon.dev/metropolis/node/core/curator/proto/api"
+ apb "source.monogon.dev/metropolis/proto/api"
+ cpb "source.monogon.dev/metropolis/proto/common"
)
// workerKubernetes is the Kubernetes Worker, responsible for launching
@@ -42,10 +44,11 @@
// reduced) datum for the main Kubernetes launcher responsible for starting the
// service, if at all.
type kubernetesStartup struct {
- roles *cpb.NodeRoles
- lcp *localControlPlane
- curator ipb.CuratorClient
- node *identity.NodeCredentials
+ roles *cpb.NodeRoles
+ lcp *localControlPlane
+ curator ipb.CuratorClient
+ management apb.ManagementClient
+ node *identity.NodeCredentials
}
// changed informs the Kubernetes launcher whether two different
@@ -95,10 +98,11 @@
}
if lr != nil && cc != nil {
startupV.Set(&kubernetesStartup{
- roles: lr,
- lcp: lcp,
- node: cc.Credentials,
- curator: ipb.NewCuratorClient(cc.conn),
+ roles: lr,
+ lcp: lcp,
+ node: cc.Credentials,
+ curator: ipb.NewCuratorClient(cc.conn),
+ management: apb.NewManagementClient(cc.conn),
})
}
}
@@ -163,6 +167,7 @@
Consensus: d.lcp.consensus,
Network: s.network,
Curator: d.curator,
+ Management: d.management,
})
// Start Kubernetes.
if err := supervisor.Run(ctx, "run", controller.Run); err != nil {