K8s: Make v0alpha1 opt-in (#107056)

This commit is contained in:
Stephanie Hingtgen
2025-06-20 16:37:17 -05:00
committed by GitHub
parent 0e35c8bdb4
commit ef6e28b955
21 changed files with 117 additions and 541 deletions
+34
View File
@@ -32,6 +32,7 @@ import (
grafanarest "github.com/grafana/grafana/pkg/apiserver/rest"
"github.com/grafana/grafana/pkg/services/apiserver/endpoints/request"
"github.com/grafana/grafana/pkg/services/apiserver/options"
"github.com/grafana/grafana/pkg/services/featuremgmt"
"github.com/grafana/grafana/pkg/storage/legacysql/dualwrite"
"github.com/grafana/grafana/pkg/storage/unified/apistore"
)
@@ -276,6 +277,7 @@ func InstallAPIs(
serverLock ServerLockService,
dualWriteService dualwrite.Service,
optsregister apistore.StorageOptionsRegister,
features featuremgmt.FeatureToggles,
) error {
// dual writing is only enabled when the storage type is not legacy.
// this is needed to support setting a default RESTOptionsGetter for new APIs that don't
@@ -400,6 +402,25 @@ func InstallAPIs(
if len(g.PrioritizedVersions) < 1 {
continue
}
// if grafanaAPIServerWithExperimentalAPIs is not enabled, remove v0alpha1 resources unless explicitly allowed
if !features.IsEnabledGlobally(featuremgmt.FlagGrafanaAPIServerWithExperimentalAPIs) {
if resources, ok := g.VersionedResourcesStorageMap["v0alpha1"]; ok {
for name := range resources {
if !allowRegisteringResourceByInfo(b.AllowedV0Alpha1Resources(), name) {
delete(resources, name)
}
}
if len(resources) == 0 {
delete(g.VersionedResourcesStorageMap, "v0alpha1")
}
}
}
}
// skip installing the group if there are no resources left after filtering
if len(g.VersionedResourcesStorageMap) == 0 {
continue
}
err := server.InstallAPIGroup(&g)
@@ -433,3 +454,16 @@ func AddPostStartHooks(
}
return nil
}
func allowRegisteringResourceByInfo(allowedResources []string, name string) bool {
// trim any subresources from the name
name = strings.Split(name, "/")[0]
for _, allowedResource := range allowedResources {
if allowedResource == name || allowedResource == AllResourcesAllowed {
return true
}
}
return false
}