From 2b355ff280cb50f5804349b0c921cb8e9ea58ea6 Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Tue, 23 Jan 2024 08:27:28 -0800 Subject: [PATCH] K8s: Remove grafanaAPIServer feature toggle (#81030) --- .../configure-grafana/feature-toggles/index.md | 1 - .../grafana-data/src/types/featureToggles.gen.ts | 1 - pkg/infra/metrics/service.go | 14 +++----------- pkg/services/featuremgmt/registry.go | 9 --------- pkg/services/featuremgmt/toggles_gen.csv | 1 - pkg/services/featuremgmt/toggles_gen.go | 4 ---- pkg/services/grafana-apiserver/config.go | 2 +- pkg/services/grafana-apiserver/config_test.go | 2 +- pkg/tests/apis/dashboard/dashboards_test.go | 2 -- pkg/tests/apis/datasource/testdata_test.go | 1 - pkg/tests/apis/example/example_test.go | 1 - pkg/tests/apis/folders/folders_test.go | 1 - pkg/tests/apis/playlist/playlist_test.go | 12 +++--------- 13 files changed, 8 insertions(+), 43 deletions(-) diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md index a779fffd19d..983e7b51ea9 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -47,7 +47,6 @@ Some features are enabled by default. You can disable these feature by setting t | `cloudWatchLogsMonacoEditor` | Enables the Monaco editor for CloudWatch Logs queries | Yes | | `recordedQueriesMulti` | Enables writing multiple items from a single query within Recorded Queries | Yes | | `transformationsRedesign` | Enables the transformations redesign | Yes | -| `grafanaAPIServer` | Enable Kubernetes API Server for Grafana resources | Yes | | `awsAsyncQueryCaching` | Enable caching for async queries for Redshift and Athena. Requires that the datasource has caching and async query support enabled | Yes | | `splitScopes` | Support faster dashboard and folder search by splitting permission scopes into parts | Yes | | `prometheusConfigOverhaulAuth` | Update the Prometheus configuration page with the new auth component | Yes | diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index 9493f21bf45..5a916c02e11 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -102,7 +102,6 @@ export interface FeatureToggles { mlExpressions?: boolean; traceQLStreaming?: boolean; metricsSummary?: boolean; - grafanaAPIServer?: boolean; grafanaAPIServerWithExperimentalAPIs?: boolean; grafanaAPIServerEnsureKubectlAccess?: boolean; featureToggleAdminPage?: boolean; diff --git a/pkg/infra/metrics/service.go b/pkg/infra/metrics/service.go index f62ad23f2a8..dd8d57aec5c 100644 --- a/pkg/infra/metrics/service.go +++ b/pkg/infra/metrics/service.go @@ -12,7 +12,6 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/infra/metrics/graphitebridge" - "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/setting" ) @@ -61,19 +60,12 @@ func (im *InternalMetricsService) Run(ctx context.Context) error { } func ProvideRegisterer(cfg *setting.Cfg) prometheus.Registerer { - if cfg.IsFeatureToggleEnabled(featuremgmt.FlagGrafanaAPIServer) { - return legacyregistry.Registerer() - } - return prometheus.DefaultRegisterer + return legacyregistry.Registerer() } func ProvideGatherer(cfg *setting.Cfg) prometheus.Gatherer { - if cfg.IsFeatureToggleEnabled(featuremgmt.FlagGrafanaAPIServer) { - k8sGatherer := newAddPrefixWrapper(legacyregistry.DefaultGatherer) - return newMultiRegistry(k8sGatherer, prometheus.DefaultGatherer) - } - - return prometheus.DefaultGatherer + k8sGatherer := newAddPrefixWrapper(legacyregistry.DefaultGatherer) + return newMultiRegistry(k8sGatherer, prometheus.DefaultGatherer) } func ProvideRegistererForTest() prometheus.Registerer { diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index 022e4d5eac7..53d93ceecea 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -714,15 +714,6 @@ var ( Owner: grafanaObservabilityTracesAndProfilingSquad, Created: time.Date(2023, time.August, 28, 12, 0, 0, 0, time.UTC), }, - { - Name: "grafanaAPIServer", - Description: "Enable Kubernetes API Server for Grafana resources", - Stage: FeatureStageGeneralAvailability, - Expression: "true", // enabled by default - RequiresRestart: true, - Owner: grafanaAppPlatformSquad, - Created: time.Date(2023, time.July, 14, 12, 0, 0, 0, time.UTC), - }, { Name: "grafanaAPIServerWithExperimentalAPIs", Description: "Register experimental APIs with the k8s API server", diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 7a4fd21e8b5..ff83cfd647c 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -83,7 +83,6 @@ transformationsRedesign,GA,@grafana/observability-metrics,2023-07-12,false,false mlExpressions,experimental,@grafana/alerting-squad,2023-07-13,false,false,false,false traceQLStreaming,experimental,@grafana/observability-traces-and-profiling,2023-07-26,false,false,false,true metricsSummary,experimental,@grafana/observability-traces-and-profiling,2023-08-28,false,false,false,true -grafanaAPIServer,GA,@grafana/grafana-app-platform-squad,2023-07-14,false,false,true,false grafanaAPIServerWithExperimentalAPIs,experimental,@grafana/grafana-app-platform-squad,2023-10-06,true,false,true,false grafanaAPIServerEnsureKubectlAccess,experimental,@grafana/grafana-app-platform-squad,2023-12-06,true,false,true,false featureToggleAdminPage,experimental,@grafana/grafana-operator-experience-squad,2023-07-18,false,false,true,false diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index 99ed5276759..5d700972f8a 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -343,10 +343,6 @@ const ( // Enables metrics summary queries in the Tempo data source FlagMetricsSummary = "metricsSummary" - // FlagGrafanaAPIServer - // Enable Kubernetes API Server for Grafana resources - FlagGrafanaAPIServer = "grafanaAPIServer" - // FlagGrafanaAPIServerWithExperimentalAPIs // Register experimental APIs with the k8s API server FlagGrafanaAPIServerWithExperimentalAPIs = "grafanaAPIServerWithExperimentalAPIs" diff --git a/pkg/services/grafana-apiserver/config.go b/pkg/services/grafana-apiserver/config.go index 70a0d1fd429..df30eb12eb9 100644 --- a/pkg/services/grafana-apiserver/config.go +++ b/pkg/services/grafana-apiserver/config.go @@ -46,7 +46,7 @@ func newConfig(cfg *setting.Cfg, features featuremgmt.FeatureToggles) *config { host := fmt.Sprintf("%s:%d", ip, port) return &config{ - enabled: features.IsEnabledGlobally(featuremgmt.FlagGrafanaAPIServer), + enabled: true, devMode: features.IsEnabledGlobally(featuremgmt.FlagGrafanaAPIServerEnsureKubectlAccess), dataPath: filepath.Join(cfg.DataPath, "grafana-apiserver"), ip: ip, diff --git a/pkg/services/grafana-apiserver/config_test.go b/pkg/services/grafana-apiserver/config_test.go index 9726277ee90..e76fe5e7f93 100644 --- a/pkg/services/grafana-apiserver/config_test.go +++ b/pkg/services/grafana-apiserver/config_test.go @@ -22,7 +22,7 @@ func TestNewConfig(t *testing.T) { section.Key("log_level").SetValue("5") section.Key("etcd_servers").SetValue("http://localhost:2379") - actual := newConfig(cfg, featuremgmt.WithFeatures(featuremgmt.FlagGrafanaAPIServer)) + actual := newConfig(cfg, featuremgmt.WithFeatures()) expected := &config{ enabled: true, diff --git a/pkg/tests/apis/dashboard/dashboards_test.go b/pkg/tests/apis/dashboard/dashboards_test.go index feb1dfb5253..92010b98cdd 100644 --- a/pkg/tests/apis/dashboard/dashboards_test.go +++ b/pkg/tests/apis/dashboard/dashboards_test.go @@ -18,7 +18,6 @@ func TestRequiresDevMode(t *testing.T) { AppModeProduction: true, // should fail DisableAnonymous: true, EnableFeatureToggles: []string{ - featuremgmt.FlagGrafanaAPIServer, featuremgmt.FlagGrafanaAPIServerWithExperimentalAPIs, // Required to start the example service }, }) @@ -35,7 +34,6 @@ func TestDashboardsApp(t *testing.T) { AppModeProduction: false, // required for experimental APIs DisableAnonymous: true, EnableFeatureToggles: []string{ - featuremgmt.FlagGrafanaAPIServer, featuremgmt.FlagGrafanaAPIServerWithExperimentalAPIs, // Required to start the example service }, }) diff --git a/pkg/tests/apis/datasource/testdata_test.go b/pkg/tests/apis/datasource/testdata_test.go index ae24519def9..c21b1bdf309 100644 --- a/pkg/tests/apis/datasource/testdata_test.go +++ b/pkg/tests/apis/datasource/testdata_test.go @@ -22,7 +22,6 @@ func TestTestDatasource(t *testing.T) { AppModeProduction: false, // dev mode required for datasource connections DisableAnonymous: true, EnableFeatureToggles: []string{ - featuremgmt.FlagGrafanaAPIServer, featuremgmt.FlagGrafanaAPIServerWithExperimentalAPIs, // Required to start the example service }, }) diff --git a/pkg/tests/apis/example/example_test.go b/pkg/tests/apis/example/example_test.go index 608ae5aab9f..6f3f6f423f6 100644 --- a/pkg/tests/apis/example/example_test.go +++ b/pkg/tests/apis/example/example_test.go @@ -23,7 +23,6 @@ func TestExampleApp(t *testing.T) { AppModeProduction: false, // required for experimental APIs DisableAnonymous: true, EnableFeatureToggles: []string{ - featuremgmt.FlagGrafanaAPIServer, featuremgmt.FlagGrafanaAPIServerWithExperimentalAPIs, // Required to start the example service }, }) diff --git a/pkg/tests/apis/folders/folders_test.go b/pkg/tests/apis/folders/folders_test.go index 005ed140e1c..23f61c9b549 100644 --- a/pkg/tests/apis/folders/folders_test.go +++ b/pkg/tests/apis/folders/folders_test.go @@ -19,7 +19,6 @@ func TestFoldersApp(t *testing.T) { AppModeProduction: false, // required for experimental APIs DisableAnonymous: true, EnableFeatureToggles: []string{ - featuremgmt.FlagGrafanaAPIServer, featuremgmt.FlagGrafanaAPIServerWithExperimentalAPIs, // Required to start the example service }, }) diff --git a/pkg/tests/apis/playlist/playlist_test.go b/pkg/tests/apis/playlist/playlist_test.go index decf3c73240..25919c4964f 100644 --- a/pkg/tests/apis/playlist/playlist_test.go +++ b/pkg/tests/apis/playlist/playlist_test.go @@ -33,11 +33,9 @@ func TestPlaylist(t *testing.T) { t.Run("default setup", func(t *testing.T) { h := doPlaylistTests(t, apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{ - AppModeProduction: true, // do not start extra port 6443 - DisableAnonymous: true, - EnableFeatureToggles: []string{ - featuremgmt.FlagGrafanaAPIServer, - }, + AppModeProduction: true, // do not start extra port 6443 + DisableAnonymous: true, + EnableFeatureToggles: []string{}, })) // The accepted verbs will change when dual write is enabled @@ -76,7 +74,6 @@ func TestPlaylist(t *testing.T) { AppModeProduction: true, // do not start extra port 6443 DisableAnonymous: true, EnableFeatureToggles: []string{ - featuremgmt.FlagGrafanaAPIServer, featuremgmt.FlagKubernetesPlaylists, // <<< The change we are testing! }, })) @@ -88,7 +85,6 @@ func TestPlaylist(t *testing.T) { DisableAnonymous: true, APIServerStorageType: "file", // write the files to disk EnableFeatureToggles: []string{ - featuremgmt.FlagGrafanaAPIServer, featuremgmt.FlagKubernetesPlaylists, // Required so that legacy calls are also written }, })) @@ -101,7 +97,6 @@ func TestPlaylist(t *testing.T) { APIServerStorageType: "unified", // use the entity api tables EnableFeatureToggles: []string{ featuremgmt.FlagUnifiedStorage, - featuremgmt.FlagGrafanaAPIServer, featuremgmt.FlagKubernetesPlaylists, // Required so that legacy calls are also written }, })) @@ -116,7 +111,6 @@ func TestPlaylist(t *testing.T) { DisableAnonymous: true, APIServerStorageType: "etcd", // requires etcd running on localhost:2379 EnableFeatureToggles: []string{ - featuremgmt.FlagGrafanaAPIServer, featuremgmt.FlagKubernetesPlaylists, // Required so that legacy calls are also written }, })