m/n/core/roleserver: implement

This implements the Role Server, which is the new service responsible
for actually running Metropolis workloads like the Kubernetes services.

This decouples starting Kubernetes from node startup code, and handles
cases like nodes changing roles at runtime.

Change-Id: Ie5f7f2c30b05fe74ca003805532dba50bf3821d0
Reviewed-on: https://review.monogon.dev/c/monogon/+/187
Reviewed-by: Lorenz Brun <lorenz@nexantic.com>
diff --git a/metropolis/node/core/roleserve/BUILD.bazel b/metropolis/node/core/roleserve/BUILD.bazel
new file mode 100644
index 0000000..405efb3
--- /dev/null
+++ b/metropolis/node/core/roleserve/BUILD.bazel
@@ -0,0 +1,23 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = [
+        "kubernetes_worker.go",
+        "roleserve.go",
+    ],
+    importpath = "source.monogon.dev/metropolis/node/core/roleserve",
+    visibility = ["//visibility:public"],
+    deps = [
+        "//metropolis/node/core/curator/proto/api:go_default_library",
+        "//metropolis/node/core/localstorage:go_default_library",
+        "//metropolis/node/core/network:go_default_library",
+        "//metropolis/node/kubernetes:go_default_library",
+        "//metropolis/node/kubernetes/containerd:go_default_library",
+        "//metropolis/node/kubernetes/pki:go_default_library",
+        "//metropolis/pkg/event:go_default_library",
+        "//metropolis/pkg/event/memory:go_default_library",
+        "//metropolis/pkg/supervisor:go_default_library",
+        "@org_golang_google_grpc//:go_default_library",
+    ],
+)