mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-22 10:15:35 +01:00
feat: add the configuration for quota update provider (#18928)
Add the related configurations for the quota update provider to the harbor.yml. Signed-off-by: chlins <chenyuzh@vmware.com>
This commit is contained in:
parent
c030fd7863
commit
8ff095d68f
@ -258,3 +258,15 @@ cache:
|
|||||||
enabled: false
|
enabled: false
|
||||||
# keep cache for one day by default
|
# keep cache for one day by default
|
||||||
expire_hours: 24
|
expire_hours: 24
|
||||||
|
|
||||||
|
# Harbor core configurations
|
||||||
|
# Uncomment to enable the following harbor core related configuration items.
|
||||||
|
# core:
|
||||||
|
# # The provider for updating project quota(usage), there are 2 options, redis or db,
|
||||||
|
# # by default is implemented by db but you can switch the updation via redis which
|
||||||
|
# # can improve the performance of high concurrent pushing to the same project,
|
||||||
|
# # and reduce the database connections spike and occupies.
|
||||||
|
# # By redis will bring up some delay for quota usage updation for display, so only
|
||||||
|
# # suggest switch provider to redis if you were ran into the db connections spike aroud
|
||||||
|
# # the scenario of high concurrent pushing to same project, no improvment for other scenes.
|
||||||
|
# quota_update_provider: redis # Or db
|
@ -241,3 +241,14 @@ class Cache:
|
|||||||
if not self.expire_hours or self.expire_hours <= 0:
|
if not self.expire_hours or self.expire_hours <= 0:
|
||||||
raise Exception('cache expire hours should be positive number')
|
raise Exception('cache expire hours should be positive number')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
class Core:
|
||||||
|
def __init__(self, config: dict):
|
||||||
|
self.quota_update_provider = config.get('quota_update_provider') or 'db'
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
if not self.quota_update_provider:
|
||||||
|
return
|
||||||
|
|
||||||
|
if self.quota_update_provider not in ['db', 'redis']:
|
||||||
|
raise Exception('invalid quota update provider: {}'.format(self.quota_update_provider))
|
@ -87,3 +87,7 @@ TRACE_OTEL_INSECURE={{ trace.otel.insecure }}
|
|||||||
CACHE_ENABLED=true
|
CACHE_ENABLED=true
|
||||||
CACHE_EXPIRE_HOURS={{ cache.expire_hours }}
|
CACHE_EXPIRE_HOURS={{ cache.expire_hours }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if core.quota_update_provider %}
|
||||||
|
QUOTA_UPDATE_PROVIDER={{ core.quota_update_provider }}
|
||||||
|
{% endif %}
|
@ -3,7 +3,7 @@ import os
|
|||||||
import yaml
|
import yaml
|
||||||
from urllib.parse import urlencode, quote
|
from urllib.parse import urlencode, quote
|
||||||
from g import versions_file_path, host_root_dir, DEFAULT_UID, INTERNAL_NO_PROXY_DN
|
from g import versions_file_path, host_root_dir, DEFAULT_UID, INTERNAL_NO_PROXY_DN
|
||||||
from models import InternalTLS, Metric, Trace, PurgeUpload, Cache
|
from models import InternalTLS, Metric, Trace, PurgeUpload, Cache, Core
|
||||||
from utils.misc import generate_random_string, owner_can_read, other_can_read
|
from utils.misc import generate_random_string, owner_can_read, other_can_read
|
||||||
|
|
||||||
# NOTE: https://golang.org/pkg/database/sql/#DB.SetMaxIdleConns
|
# NOTE: https://golang.org/pkg/database/sql/#DB.SetMaxIdleConns
|
||||||
@ -85,6 +85,9 @@ def validate(conf: dict, **kwargs):
|
|||||||
if conf.get('cache'):
|
if conf.get('cache'):
|
||||||
conf['cache'].validate()
|
conf['cache'].validate()
|
||||||
|
|
||||||
|
if conf.get('core'):
|
||||||
|
conf['core'].validate()
|
||||||
|
|
||||||
|
|
||||||
def parse_versions():
|
def parse_versions():
|
||||||
if not versions_file_path.is_file():
|
if not versions_file_path.is_file():
|
||||||
@ -324,6 +327,10 @@ def parse_yaml_config(config_file_path, with_trivy):
|
|||||||
cache_config = configs.get('cache')
|
cache_config = configs.get('cache')
|
||||||
config_dict['cache'] = Cache(cache_config or {})
|
config_dict['cache'] = Cache(cache_config or {})
|
||||||
|
|
||||||
|
# core configs
|
||||||
|
core_config = configs.get('core')
|
||||||
|
config_dict['core'] = Core(core_config or {})
|
||||||
|
|
||||||
return config_dict
|
return config_dict
|
||||||
|
|
||||||
|
|
||||||
|
@ -59,8 +59,8 @@ var (
|
|||||||
// quotaExpireTimeout is the expire time for quota when update quota by redis
|
// quotaExpireTimeout is the expire time for quota when update quota by redis
|
||||||
quotaExpireTimeout = time.Minute * 5
|
quotaExpireTimeout = time.Minute * 5
|
||||||
|
|
||||||
updateQuotaProviderRedis updateQuotaProviderType = "Redis"
|
updateQuotaProviderRedis updateQuotaProviderType = "redis"
|
||||||
updateQuotaProviderDB updateQuotaProviderType = "DB"
|
updateQuotaProviderDB updateQuotaProviderType = "db"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
Loading…
Reference in New Issue
Block a user