m/n/kubernetes: introduce feature gate infra
This introduces centralized infrastructure to control feature gates in K8s.
It includes a test to make sure that we do not keep outdated flags in there.
Change-Id: Ife251cbd5210bc8b3757bb3829e91bcdb2e6fdfb
Reviewed-on: https://review.monogon.dev/c/monogon/+/3664
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/node/kubernetes/BUILD.bazel b/metropolis/node/kubernetes/BUILD.bazel
index 787a9c7..9f51ba0 100644
--- a/metropolis/node/kubernetes/BUILD.bazel
+++ b/metropolis/node/kubernetes/BUILD.bazel
@@ -1,4 +1,4 @@
-load("@io_bazel_rules_go//go:def.bzl", "go_library")
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "kubernetes",
@@ -7,6 +7,7 @@
"apiserver.go",
"controller-manager.go",
"csi.go",
+ "feature_gates.go",
"kubelet.go",
"labelmaker.go",
"provisioner.go",
@@ -62,6 +63,7 @@
"@io_k8s_client_go//tools/record",
"@io_k8s_client_go//tools/reference",
"@io_k8s_client_go//util/workqueue",
+ "@io_k8s_component_base//featuregate",
"@io_k8s_kubelet//config/v1beta1",
"@io_k8s_kubelet//pkg/apis/pluginregistration/v1:pluginregistration",
"@io_k8s_kubernetes//plugin/pkg/admission/security/podsecurity",
@@ -73,3 +75,13 @@
"@org_golang_x_sys//unix",
],
)
+
+go_test(
+ name = "kubernetes_test",
+ srcs = ["feature_gates_test.go"],
+ embed = [":kubernetes"],
+ deps = [
+ "@io_k8s_apiserver//pkg/util/feature",
+ "@io_k8s_component_base//featuregate",
+ ],
+)