diff options
author | Jaime Martinez <jmartinez@gitlab.com> | 2021-03-01 08:37:56 +0300 |
---|---|---|
committer | Jaime Martinez <jmartinez@gitlab.com> | 2021-03-02 01:57:46 +0300 |
commit | 258be795aa78afe2252e630508fa049a596251fc (patch) | |
tree | e5d69697c866a18784a68258221965f00ef322ad | |
parent | 7c1d5db80c552d2031361a7a8498538b286e952d (diff) |
Add use-legacy-storage flag
Adds the flag `use-legacy-storage` which will override the
`domain-config-source` flag when enabled and will use disk serving along
with configuration source. This is a temporary flag that will allow
self-managed instances use legacy storage while migrating to Object
Storage and making API-based configuration work.
Changelog: added
-rw-r--r-- | internal/config/config.go | 7 | ||||
-rw-r--r-- | internal/config/flags.go | 27 | ||||
-rw-r--r-- | test/acceptance/serving_test.go | 26 |
3 files changed, 43 insertions, 17 deletions
diff --git a/internal/config/config.go b/internal/config/config.go index 7e44abbc..85f0aad2 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -48,6 +48,7 @@ type Config struct { type General struct { Domain string DomainConfigurationSource string + UseLegacyStorage bool HTTP2 bool MaxConns int MetricsAddress string @@ -252,6 +253,10 @@ func (config Config) GitlabJWTTokenExpiry() time.Duration { } func (config Config) DomainConfigSource() string { + if config.General.UseLegacyStorage { + return "disk" + } + return config.General.DomainConfigurationSource } @@ -260,6 +265,7 @@ func loadConfig() *Config { General: General{ Domain: strings.ToLower(*pagesDomain), DomainConfigurationSource: *domainConfigSource, + UseLegacyStorage: *useLegacyStorage, HTTP2: *useHTTP2, MaxConns: *maxConns, MetricsAddress: *metricsAddress, @@ -389,6 +395,7 @@ func LogConfig(config *Config) { "internal-gitlab-server": config.GitLab.InternalServer, "api-secret-key": *gitLabAPISecretKey, "domain-config-source": config.General.DomainConfigurationSource, + "use-legacy-storage": config.General.UseLegacyStorage, "auth-redirect-uri": config.Authentication.RedirectURI, "auth-scope": config.Authentication.Scope, "zip-cache-expiration": config.Zip.ExpirationInterval, diff --git a/internal/config/flags.go b/internal/config/flags.go index d2cee32d..c51298e8 100644 --- a/internal/config/flags.go +++ b/internal/config/flags.go @@ -40,18 +40,21 @@ var ( gitlabClientHTTPTimeout = flag.Duration("gitlab-client-http-timeout", 10*time.Second, "GitLab API HTTP client connection timeout in seconds (default: 10s)") gitlabClientJWTExpiry = flag.Duration("gitlab-client-jwt-expiry", 30*time.Second, "JWT Token expiry time in seconds (default: 30s)") domainConfigSource = flag.String("domain-config-source", "auto", "Domain configuration source 'disk', 'auto' or 'gitlab' (default: 'auto'). DEPRECATED: gitlab-pages will use the API-based configuration starting from 14.0 see https://gitlab.com/gitlab-org/gitlab-pages/-/issues/382") - clientID = flag.String("auth-client-id", "", "GitLab application Client ID") - clientSecret = flag.String("auth-client-secret", "", "GitLab application Client Secret") - redirectURI = flag.String("auth-redirect-uri", "", "GitLab application redirect URI") - authScope = flag.String("auth-scope", "api", "Scope to be used for authentication (must match GitLab Pages OAuth application settings)") - maxConns = flag.Int("max-conns", 5000, "Limit on the number of concurrent connections to the HTTP, HTTPS or proxy listeners") - insecureCiphers = flag.Bool("insecure-ciphers", false, "Use default list of cipher suites, may contain insecure ones like 3DES and RC4") - tlsMinVersion = flag.String("tls-min-version", "tls1.2", tlsconfig.FlagUsage("min")) - tlsMaxVersion = flag.String("tls-max-version", "", tlsconfig.FlagUsage("max")) - zipCacheExpiration = flag.Duration("zip-cache-expiration", 60*time.Second, "Zip serving archive cache expiration interval") - zipCacheCleanup = flag.Duration("zip-cache-cleanup", 30*time.Second, "Zip serving archive cache cleanup interval") - zipCacheRefresh = flag.Duration("zip-cache-refresh", 30*time.Second, "Zip serving archive cache refresh interval") - zipOpenTimeout = flag.Duration("zip-open-timeout", 30*time.Second, "Zip archive open timeout") + // TODO: remove this flag https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6009 + useLegacyStorage = flag.Bool("use-legacy-storage", false, "Temporary flag that enables legacy serving from disk/NFS. API-Based configuration and object storage are preferred https://docs.gitlab.com/ee/administration/pages/ and will be the only available solution starting from 14.4") + + clientID = flag.String("auth-client-id", "", "GitLab application Client ID") + clientSecret = flag.String("auth-client-secret", "", "GitLab application Client Secret") + redirectURI = flag.String("auth-redirect-uri", "", "GitLab application redirect URI") + authScope = flag.String("auth-scope", "api", "Scope to be used for authentication (must match GitLab Pages OAuth application settings)") + maxConns = flag.Int("max-conns", 5000, "Limit on the number of concurrent connections to the HTTP, HTTPS or proxy listeners") + insecureCiphers = flag.Bool("insecure-ciphers", false, "Use default list of cipher suites, may contain insecure ones like 3DES and RC4") + tlsMinVersion = flag.String("tls-min-version", "tls1.2", tlsconfig.FlagUsage("min")) + tlsMaxVersion = flag.String("tls-max-version", "", tlsconfig.FlagUsage("max")) + zipCacheExpiration = flag.Duration("zip-cache-expiration", 60*time.Second, "Zip serving archive cache expiration interval") + zipCacheCleanup = flag.Duration("zip-cache-cleanup", 30*time.Second, "Zip serving archive cache cleanup interval") + zipCacheRefresh = flag.Duration("zip-cache-refresh", 30*time.Second, "Zip serving archive cache refresh interval") + zipOpenTimeout = flag.Duration("zip-open-timeout", 30*time.Second, "Zip archive open timeout") disableCrossOriginRequests = flag.Bool("disable-cross-origin-requests", false, "Disable cross-origin requests") diff --git a/test/acceptance/serving_test.go b/test/acceptance/serving_test.go index 19476830..07dc0345 100644 --- a/test/acceptance/serving_test.go +++ b/test/acceptance/serving_test.go @@ -378,10 +378,11 @@ func TestDomainsSource(t *testing.T) { skipUnlessEnabled(t) type args struct { - configSource string - domain string - urlSuffix string - readyCount int + configSource string + useLegacyStorage bool + domain string + urlSuffix string + readyCount int } type want struct { statusCode int @@ -481,6 +482,19 @@ func TestDomainsSource(t *testing.T) { apiCalled: true, }, }, + { + name: "use_legacy_storage_overrides_domain_source", + args: args{ + useLegacyStorage: true, + domain: "test.domain.com", + urlSuffix: "/", + }, + want: want{ + statusCode: http.StatusOK, + content: "main-dir\n", + apiCalled: false, + }, + }, } for _, tt := range tests { @@ -495,7 +509,9 @@ func TestDomainsSource(t *testing.T) { gitLabAPISecretKey := CreateGitLabAPISecretKeyFixtureFile(t) - pagesArgs := []string{"-gitlab-server", source.URL, "-api-secret-key", gitLabAPISecretKey, "-domain-config-source", tt.args.configSource} + pagesArgs := []string{"-gitlab-server", source.URL, "-api-secret-key", gitLabAPISecretKey, "-domain-config-source", tt.args.configSource, + // TODO: remove in https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6009 + fmt.Sprintf("-use-legacy-storage=%t", tt.args.useLegacyStorage)} teardown := RunPagesProcessWithEnvs(t, true, *pagesBinary, []ListenSpec{httpListener}, "", []string{}, pagesArgs...) defer teardown() |