metropolis/node: use Event Value for network status
This moves over the GetIP API to use our fancy new event/value library.
The consumers of this data are currently the cluster manager and the
kubernetes root service. Both are migrated over.
Test Plan: Refactor, covered by E2E tests.
X-Origin-Diff: phab/D711
GitOrigin-RevId: 8a1e0dd35236d55492722f4439323cb2ee9574fc
diff --git a/metropolis/node/core/main.go b/metropolis/node/core/main.go
index 0f6ebd1..7c3f10c 100644
--- a/metropolis/node/core/main.go
+++ b/metropolis/node/core/main.go
@@ -37,7 +37,6 @@
"source.monogon.dev/metropolis/node/core/localstorage"
"source.monogon.dev/metropolis/node/core/localstorage/declarative"
"source.monogon.dev/metropolis/node/core/network"
- "source.monogon.dev/metropolis/node/core/network/dns"
"source.monogon.dev/metropolis/node/kubernetes"
"source.monogon.dev/metropolis/node/kubernetes/containerd"
"source.monogon.dev/metropolis/node/kubernetes/pki"
@@ -112,9 +111,7 @@
logger.Fatalf("Failed to initialize TPM 2.0: %v", err)
}
- corednsRegistrationChan := make(chan *dns.ExtraDirective)
-
- networkSvc := network.New(network.Config{CorednsRegistrationChan: corednsRegistrationChan})
+ networkSvc := network.New()
// This function initializes a headless Delve if this is a debug build or does nothing if it's not
initializeDebugger(networkSvc)
@@ -146,12 +143,6 @@
return fmt.Errorf("when starting network: %w", err)
}
- // Wait for IP address from network.
- ip, err := networkSvc.GetIP(ctx, true)
- if err != nil {
- return fmt.Errorf("when waiting for IP address: %w", err)
- }
-
// Start cluster manager. This kicks off cluster membership machinery, which will either start
// a new cluster, enroll into one or join one.
m := cluster.NewManager(root, networkSvc)
@@ -211,8 +202,7 @@
kubernetesConfig.KPKI = kpki
kubernetesConfig.Root = root
- kubernetesConfig.AdvertiseAddress = *ip
- kubernetesConfig.CorednsRegistrationChan = corednsRegistrationChan
+ kubernetesConfig.Network = networkSvc
kubeSvc = kubernetes.New(kubernetesConfig)
if err := supervisor.Run(ctx, "kubernetes", kubeSvc.Run); err != nil {
return fmt.Errorf("failed to start kubernetes service: %w", err)