diff --git a/README.rst b/README.rst index 1395f4ca0..6ddf8bd01 100644 --- a/README.rst +++ b/README.rst @@ -97,6 +97,14 @@ At this point you should have a working Tutor / Aspects environment, but with no You should now have data to look at in Superset! Log in to https://superset.local.overhang.io/ with your admin account and you should see charts with your data. +Aspects Autoscaling +------------------- + +Aspects adds default autoscaling values for `Ralph`, `Superset` and the `Superset Worker` deployments via +`tutor-contrib-pod-autoscaling `_. To apply the +autoscaling settings make sure to install the plugin and enable it. To modify the autoscaling values +see the `Configuration `_ section. + Superset Assets --------------- diff --git a/requirements/dev.in b/requirements/dev.in index 985b9c3dd..7495aca5d 100644 --- a/requirements/dev.in +++ b/requirements/dev.in @@ -4,3 +4,4 @@ black pyinstaller pylint twine +git+https://github.com/edunext/tutor-contrib-pod-autoscaling@18.0.1 diff --git a/tutoraspects/filters.py b/tutoraspects/filters.py new file mode 100644 index 000000000..88ffd7b67 --- /dev/null +++ b/tutoraspects/filters.py @@ -0,0 +1,51 @@ +"""Filters usage.""" + +from tutorpod_autoscaling.hooks import ( # pylint: disable=import-error + AUTOSCALING_CONFIG, +) + + +@AUTOSCALING_CONFIG.add() +def add_aspects_autoscaling(autoscaling_config): + """Add autoscaling values for Aspects services.""" + autoscaling_config.update( + { + "ralph": { + "enable_hpa": True, + "memory_request": "300Mi", + "cpu_request": 0.25, + "memory_limit": "600Mi", + "cpu_limit": 1, + "min_replicas": 1, + "max_replicas": 10, + "avg_cpu": 80, + "avg_memory": "", + "enable_vpa": False, + }, + "superset": { + "enable_hpa": True, + "memory_request": "500Mi", + "cpu_request": 0.25, + "memory_limit": "1000Mi", + "cpu_limit": 1, + "min_replicas": 1, + "max_replicas": 10, + "avg_cpu": 80, + "avg_memory": "", + "enable_vpa": False, + }, + "superset-worker": { + "enable_hpa": True, + "memory_request": "600Mi", + "cpu_request": 0.25, + "memory_limit": "1500Mi", + "cpu_limit": 1, + "min_replicas": 1, + "max_replicas": 10, + "avg_cpu": 80, + "avg_memory": "", + "enable_vpa": False, + }, + } + ) + return autoscaling_config diff --git a/tutoraspects/plugin.py b/tutoraspects/plugin.py index aeb89ba88..44974b3cf 100644 --- a/tutoraspects/plugin.py +++ b/tutoraspects/plugin.py @@ -636,3 +636,11 @@ def _aspects_public_hosts( # file for now. for f in TUTOR_V1_COMMANDS: hooks.Filters.CLI_COMMANDS.add_item(f) + +# Autoscaling +try: + from tutoraspects.filters import ( # pylint: disable=unused-import + add_aspects_autoscaling, + ) +except ImportError: + pass