Skip to content

Commit

Permalink
dbp-moodle
Browse files Browse the repository at this point in the history
  • Loading branch information
dbp-moodle-gha committed Nov 25, 2024
1 parent 36c9b61 commit 93ab672
Show file tree
Hide file tree
Showing 9 changed files with 42 additions and 108 deletions.
2 changes: 1 addition & 1 deletion automation/dbp-moodle/Chart.lock
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ dependencies:
repository: https://burningalchemist.github.io/sql_exporter/
version: 0.6.1
digest: sha256:c2d696cb5b0cfe3096fabb66d1fbdf72969e84cf33898a25fd8f218e6bdca87b
generated: "2024-11-25T09:19:42.614778425Z"
generated: "2024-11-25T09:24:33.429632445Z"
2 changes: 1 addition & 1 deletion automation/dbp-moodle/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,4 @@ description: 'This is a Helm Chart bundling some of the bitnami resources to dep
home: https://dbildungsplattform.github.io/dbp-moodle/
name: dbp-moodle
type: application
version: 0.0.0-dbp-000-20241125-0919
version: 0.0.0-dbp-000-20241125-0924
46 changes: 10 additions & 36 deletions automation/dbp-moodle/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,13 @@ The Chart can be deployed without any modification but it is advised to set own
| dbpMoodle.backup.s3_certificate_secret.key | string | `"certificate.crt"` | Path where the certificate is mounted |
| dbpMoodle.backup.secrets | object | `{"existingSecret":"","s3_access_key":"","s3_access_secret":"","s3_endpoint_url":""}` | Either provide an existing secret, or set each secret value here. If both are set the existingSecret is used |
| dbpMoodle.backup.secrets.existingSecret | string | `""` | Existing secret for s3 endpoint |
| dbpMoodle.hpa | object | `{"deployment_name_ref":"moodle","enabled":false,"max_replicas":4,"min_replicas":1,"scale_down_stabilization_window_seconds":0,"scale_up_stabilization_window_seconds":0,"scaledown_cooldown":60,"scaledown_value":25,"scaleup_cooldown":15,"scaleup_value":50,"target_average_cpu_utilization":50}` | Horizontal pod autoscaling values |
| dbpMoodle.hpa.deployment_name_ref | string | `"moodle"` | The deployment to scale |
| dbpMoodle.hpa.max_replicas | int | `4` | Maximum replicas of deployment |
| dbpMoodle.hpa.min_replicas | int | `1` | Minimum replicas of deployment |
| dbpMoodle.external_pvc.accessModes[0] | string | `"ReadWriteMany"` | |
| dbpMoodle.external_pvc.annotations."helm.sh/resource-policy" | string | `"keep"` | |
| dbpMoodle.external_pvc.enabled | bool | `true` | |
| dbpMoodle.external_pvc.name | string | `"moodle-data"` | |
| dbpMoodle.external_pvc.size | string | `"8Gi"` | |
| dbpMoodle.external_pvc.storage_class | string | `"nfs-client"` | |
| dbpMoodle.hpa | object | `{"average_cpu_utilization":50,"deployment_name_ref":"moodle","enabled":false,"max_replicas":4,"min_replicas":1,"scaledown_cooldown":60,"scaledown_value":25,"scaleup_cooldown":15,"scaleup_value":50}` | Horizontal pod autoscaling values |
| dbpMoodle.hpa.scaledown_cooldown | int | `60` | How many seconds to wait between downscaling adjustments |
| dbpMoodle.hpa.scaledown_value | int | `25` | The max amount in percent to scale down in one step per cooldown period |
| dbpMoodle.hpa.scaleup_cooldown | int | `15` | How many seconds to wait between upscaling adjustments |
Expand All @@ -127,7 +130,7 @@ The Chart can be deployed without any modification but it is advised to set own
| dbpMoodle.moodleUpdatePreparationJob | object | `{"affinity":{},"enabled":false,"image":"moodle-tools","repository":"ghcr.io/dbildungsplattform","resources":{},"tag":"1.0.8","tolerations":[]}` | A preperation job which disables the php-cronjob, scales down the deployment and creates a backup if dbpMoodle.backup.enabled=true |
| dbpMoodle.moodleUpdatePreparationJob.repository | string | `"ghcr.io/dbildungsplattform"` | Which kubectl image to use |
| dbpMoodle.moodlecronjob | object | `{"rules":[{"apiGroups":[""],"resources":["pods","pods/exec"],"verbs":["get","list","create","watch"]}],"wait_timeout":"15m"}` | Configuration for the moodle-cronjob which runs moodles cron.php. This is required since moodle does not run as root |
| dbpMoodle.phpConfig | object | `{"additional":"","debug":false,"existingConfig":"","extendedLogging":false}` | These settings affect the config.php of the moodle container |
| dbpMoodle.name | string | `"infra"` | |
| dbpMoodle.phpConfig.additional | string | `""` | Any additional text to be included into the config.php |
| dbpMoodle.phpConfig.debug | bool | `false` | Moodle debugging is not safe for production |
| dbpMoodle.phpConfig.existingConfig | string | `""` | Provide an existing secret containing the config.php instead of generating it from chart -- Remember to adjust moodle.extraVolumes & moodle.extraVolumeMounts when setting this. -- Secret key is by default expected to be config.php |
Expand Down Expand Up @@ -189,37 +192,8 @@ The Chart can be deployed without any modification but it is advised to set own
| etherpadlite.volumes[0].secret.items[0].key | string | `"etherpad-api-key"` | |
| etherpadlite.volumes[0].secret.items[0].path | string | `"APIKEY.txt"` | |
| etherpadlite.volumes[0].secret.secretName | string | `"moodle"` | |
| global.moodlePlugins | object | `{"adaptable":{"enabled":false},"booking":{"enabled":false},"boost_magnific":{"enabled":false},"boost_union":{"enabled":false},"choicegroup":{"enabled":false},"coursecertificate":{"enabled":false},"dash":{"enabled":false},"etherpadlite":{"enabled":false},"flexsections":{"enabled":false},"geogebra":{"enabled":false},"groupselect":{"enabled":false},"heartbeat":{"enabled":false},"hvp":{"enabled":false},"jitsi":{"enabled":false},"kaltura":{"enabled":false},"multitopic":{"enabled":false},"oidc":{"enabled":false},"pdfannotator":{"enabled":false},"reengagement":{"enabled":false},"remuiformat":{"enabled":false},"saml2":{"enabled":false},"sharing_cart":{"enabled":false},"skype":{"enabled":false},"snap":{"enabled":false},"staticpage":{"enabled":false},"tiles":{"enabled":false},"topcoll":{"enabled":false},"unilabel":{"enabled":false},"xp":{"enabled":false},"zoom":{"enabled":false}}` | Moodle Plugins that are enabled will be installed on container startup -- If a plugin is changed from enabled to disabled, or vice versa, with an upgrade, the plugin will be installed/ uninstalled to match the new state |
| global.moodlePlugins.adaptable | object | `{"enabled":false}` | [Adaptable](https://moodle.org/plugins/theme_adaptable) |
| global.moodlePlugins.booking | object | `{"enabled":false}` | [Booking](https://moodle.org/plugins/mod_booking) |
| global.moodlePlugins.boost_magnific | object | `{"enabled":false}` | [Boost Magnific](https://moodle.org/plugins/theme_boost_magnific) |
| global.moodlePlugins.boost_union | object | `{"enabled":false}` | [Boost Union](https://moodle.org/plugins/theme_boost_union) |
| global.moodlePlugins.choicegroup | object | `{"enabled":false}` | [Group choice](https://moodle.org/plugins/mod_choicegroup) |
| global.moodlePlugins.coursecertificate | object | `{"enabled":false}` | [Workplace course certificate](https://moodle.org/plugins/mod_coursecertificate) |
| global.moodlePlugins.dash | object | `{"enabled":false}` | [Dash](https://moodle.org/plugins/block_dash) |
| global.moodlePlugins.etherpadlite | object | `{"enabled":false}` | [Etherpad Lite](https://moodle.org/plugins/mod_etherpadlite) |
| global.moodlePlugins.flexsections | object | `{"enabled":false}` | [Flexible sections format](https://moodle.org/plugins/format_flexsections) |
| global.moodlePlugins.geogebra | object | `{"enabled":false}` | [GeoGebra](https://moodle.org/plugins/mod_geogebra) |
| global.moodlePlugins.groupselect | object | `{"enabled":false}` | [Group self-selection](https://moodle.org/plugins/mod_groupselect) |
| global.moodlePlugins.heartbeat | object | `{"enabled":false}` | [Heartbeat check](https://moodle.org/plugins/tool_heartbeat) |
| global.moodlePlugins.hvp | object | `{"enabled":false}` | [Interactive Content – H5P](https://moodle.org/plugins/mod_hvp) |
| global.moodlePlugins.jitsi | object | `{"enabled":false}` | [Jitsi](https://moodle.org/plugins/mod_jitsi) |
| global.moodlePlugins.kaltura | object | `{"enabled":false}` | [Kaltura Video Package](https://moodle.org/plugins/view.php?id=447) |
| global.moodlePlugins.multitopic | object | `{"enabled":false}` | [Multitopic format](https://moodle.org/plugins/format_multitopic) |
| global.moodlePlugins.oidc | object | `{"enabled":false}` | [OpenID Connect](https://moodle.org/plugins/auth_oidc) |
| global.moodlePlugins.pdfannotator | object | `{"enabled":false}` | [PDF Annotation](https://moodle.org/plugins/mod_pdfannotator) |
| global.moodlePlugins.reengagement | object | `{"enabled":false}` | [Reengagement](https://moodle.org/plugins/mod_reengagement) |
| global.moodlePlugins.remuiformat | object | `{"enabled":false}` | [Edwiser Course Formats](https://moodle.org/plugins/format_remuiformat) |
| global.moodlePlugins.saml2 | object | `{"enabled":false}` | [SAML2 Single sign on](https://moodle.org/plugins/auth_saml2) |
| global.moodlePlugins.sharing_cart | object | `{"enabled":false}` | [Sharing Cart](https://moodle.org/plugins/block_sharing_cart) |
| global.moodlePlugins.skype | object | `{"enabled":false}` | [Skype](https://moodle.org/plugins/mod_skype) |
| global.moodlePlugins.snap | object | `{"enabled":false}` | [Snap](https://moodle.org/plugins/theme_snap) |
| global.moodlePlugins.staticpage | object | `{"enabled":false}` | [Static Pages](https://moodle.org/plugins/local_staticpage) |
| global.moodlePlugins.tiles | object | `{"enabled":false}` | [Tiles format](https://moodle.org/plugins/format_tiles) |
| global.moodlePlugins.topcoll | object | `{"enabled":false}` | [Collapsed Topics](https://moodle.org/plugins/format_topcoll) |
| global.moodlePlugins.unilabel | object | `{"enabled":false}` | [Unilabel](https://moodle.org/plugins/mod_unilabel) |
| global.moodlePlugins.xp | object | `{"enabled":false}` | [Level Up XP - Gamification](https://moodle.org/plugins/block_xp) |
| global.moodlePlugins.zoom | object | `{"enabled":false}` | [Zoom meeting](https://moodle.org/plugins/mod_zoom) |
| global.kubectl_version | string | `"1.28.7"` | |
| global.moodlePlugins | object | `{"adaptable":{"enabled":false},"booking":{"enabled":false},"boost_magnific":{"enabled":false},"boost_union":{"enabled":false},"certificate":{"enabled":false},"choicegroup":{"enabled":false},"coursecertificate":{"enabled":false},"dash":{"enabled":false},"etherpadlite":{"enabled":false},"flexsections":{"enabled":false},"geogebra":{"enabled":false},"groupselect":{"enabled":false},"heartbeat":{"enabled":false},"hvp":{"enabled":false},"jitsi":{"enabled":false},"kaltura":{"enabled":false},"multitopic":{"enabled":false},"oidc":{"enabled":false},"pdfannotator":{"enabled":false},"reengagement":{"enabled":false},"remuiformat":{"enabled":false},"saml2":{"enabled":false},"sharing_cart":{"enabled":false},"skype":{"enabled":false},"snap":{"enabled":false},"staticpage":{"enabled":false},"tiles":{"enabled":false},"topcoll":{"enabled":false},"unilabel":{"enabled":false},"xp":{"enabled":false},"zoom":{"enabled":false}}` | All plugins are disabled by default. if enabled, the plugin is installed on image startup |
| global.storageClass | string | `"nfs-client"` | Default storage class, should support ReadWriteMany |
| mariadb.auth.database | string | `"moodle"` | |
| mariadb.auth.existingSecret | string | `"moodle"` | |
Expand Down
2 changes: 1 addition & 1 deletion automation/dbp-moodle/scripts/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
$CFG->session_redis_host = '{{ .Values.dbpMoodle.redis.host }}';
$CFG->session_redis_port = {{ .Values.dbpMoodle.redis.port }};
$CFG->session_redis_database = 0;
$CFG->session_redis_auth = '{{ include "dbpMoodle.secrets.redis_password" . }}';
$CFG->session_redis_auth = '{{ .Values.dbpMoodle.redis.password }}';
$CFG->session_redis_prefix = 'mdl_';
$CFG->session_redis_acquire_lock_timeout = 60;
$CFG->session_redis_acquire_lock_warn = 0;
Expand Down
4 changes: 2 additions & 2 deletions automation/dbp-moodle/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{{- define "dbpMoodle.moodlePvc.name" -}}
{{- if .Values.dbpMoodle.moodleExternalPVC.enabled }}
{{- .Values.dbpMoodle.moodleExternalPVC.name -}}
{{- if .Values.dbpMoodle.external_pvc.enabled }}
{{- .Values.dbpMoodle.external_pvc.name -}}
{{- else if .Values.moodle.persistence.enabled }}
{{- .Release.Name }}-moodle
{{- else }}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{ if and .Values.dbpMoodle.updateMigration.enabled (not .Values.dbpMoodle.restore.enabled) }}
{{ if and .Values.dbpMoodle.moodleUpdatePreparationJob.enabled (not .Values.dbpMoodle.restore.enabled) }}
apiVersion: batch/v1
kind: Job
metadata:
Expand Down
5 changes: 2 additions & 3 deletions automation/dbp-moodle/templates/hpa.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,16 @@ spec:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.dbpMoodle.hpa.target_average_cpu_utilization }}
averageUtilization: {{ .Values.dbpMoodle.hpa.average_cpu_utilization }}
behavior:
scaleUp:
stabilizationWindowSeconds: {{ .Values.dbpMoodle.hpa.scale_up_stabilization_window_seconds }}
stabilizationWindowSeconds: 0
selectPolicy: Max
policies:
- type: Percent
value: {{ .Values.dbpMoodle.hpa.scaleup_value }}
periodSeconds: {{ .Values.dbpMoodle.hpa.scaleup_cooldown }}
scaleDown:
stabilizationWindowSeconds: {{ .Values.dbpMoodle.hpa.scale_down_stabilization_window_seconds }}
selectPolicy: Max
policies:
- type: Percent
Expand Down
14 changes: 7 additions & 7 deletions automation/dbp-moodle/templates/pvcs/moodle-pvc.yaml
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
{{- if .Values.dbpMoodle.moodleExternalPVC.enabled -}}
{{- if .Values.dbpMoodle.external_pvc.enabled -}}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
{{- with .Values.dbpMoodle.moodleExternalPVC.annotations }}
{{- with .Values.dbpMoodle.external_pvc.annotations }}
{{- toYaml . | nindent 4 }}
{{- end }}
name: "{{ .Values.dbpMoodle.moodleExternalPVC.name }}"
name: "{{ .Values.dbpMoodle.external_pvc.name }}"
namespace: "{{ .Release.Namespace }}"
spec:
storageClassName: "{{ .Values.dbpMoodle.moodleExternalPVC.storage_class }}"
storageClassName: "{{ .Values.dbpMoodle.external_pvc.storage_class }}"
accessModes:
{{- if not (empty .Values.dbpMoodle.moodleExternalPVC.accessModes) }}
{{- range .Values.dbpMoodle.moodleExternalPVC.accessModes }}
{{- if not (empty .Values.dbpMoodle.external_pvc.accessModes) }}
{{- range .Values.dbpMoodle.external_pvc.accessModes }}
- {{ . | quote }}
{{- end }}
{{- end }}
resources:
requests:
storage: "{{ .Values.dbpMoodle.moodleExternalPVC.size }}"
storage: "{{ .Values.dbpMoodle.external_pvc.size }}"
{{- end }}
73 changes: 17 additions & 56 deletions automation/dbp-moodle/values.yaml
Original file line number Diff line number Diff line change
@@ -1,108 +1,79 @@
global:
kubectl_version: "1.28.7"
# -- Default storage class, should support ReadWriteMany
storageClass: "nfs-client"
# -- Moodle Plugins that are enabled will be installed on container startup
# -- If a plugin is changed from enabled to disabled, or vice versa, with an upgrade, the plugin will be installed/ uninstalled to match the new state
# -- All plugins are disabled by default. if enabled, the plugin is installed on image startup
moodlePlugins:
# -- [Kaltura Video Package](https://moodle.org/plugins/view.php?id=447)
kaltura:
enabled: false
# -- [Etherpad Lite](https://moodle.org/plugins/mod_etherpadlite)
etherpadlite:
enabled: false
# -- [Interactive Content – H5P](https://moodle.org/plugins/mod_hvp)
hvp:
enabled: false
# -- [Group self-selection](https://moodle.org/plugins/mod_groupselect)
groupselect:
enabled: false
# -- [PDF Annotation](https://moodle.org/plugins/mod_pdfannotator)
jitsi:
enabled: false
pdfannotator:
enabled: false
# -- [Jitsi](https://moodle.org/plugins/mod_jitsi)
jitsi:
tiles:
enabled: false
# -- [Skype](https://moodle.org/plugins/mod_skype)
skype:
enabled: false
# -- [Zoom meeting](https://moodle.org/plugins/mod_zoom)
zoom:
enabled: false
# -- [Booking](https://moodle.org/plugins/mod_booking)
booking:
enabled: false
# -- [Reengagement](https://moodle.org/plugins/mod_reengagement)
reengagement:
enabled: false
# -- [Unilabel](https://moodle.org/plugins/mod_unilabel)
unilabel:
enabled: false
# -- [GeoGebra](https://moodle.org/plugins/mod_geogebra)
geogebra:
enabled: false
# -- [Group choice](https://moodle.org/plugins/mod_choicegroup)
choicegroup:
enabled: false
# -- [Static Pages](https://moodle.org/plugins/local_staticpage)
staticpage:
enabled: false
# -- [Heartbeat check](https://moodle.org/plugins/tool_heartbeat)
heartbeat:
enabled: false
# -- [Edwiser Course Formats](https://moodle.org/plugins/format_remuiformat)
remuiformat:
enabled: false
# -- [Tiles format](https://moodle.org/plugins/format_tiles)
tiles:
enabled: false
# -- [Collapsed Topics](https://moodle.org/plugins/format_topcoll)
topcoll:
enabled: false
# -- [Flexible sections format](https://moodle.org/plugins/format_flexsections)
flexsections:
enabled: false
# -- [Multitopic format](https://moodle.org/plugins/format_multitopic)
multitopic:
enabled: false
# -- [OpenID Connect](https://moodle.org/plugins/auth_oidc)
oidc:
enabled: false
# -- [SAML2 Single sign on](https://moodle.org/plugins/auth_saml2)
saml2:
enabled: false
# -- [Dash](https://moodle.org/plugins/block_dash)
dash:
enabled: false
# -- [Sharing Cart](https://moodle.org/plugins/block_sharing_cart)
sharing_cart:
enabled: false
# -- [Level Up XP - Gamification](https://moodle.org/plugins/block_xp)
xp:
enabled: false
# -- [Workplace course certificate](https://moodle.org/plugins/mod_coursecertificate)
certificate:
enabled: false
coursecertificate:
enabled: false
# -- [Adaptable](https://moodle.org/plugins/theme_adaptable)
adaptable:
enabled: false
# -- [Boost Union](https://moodle.org/plugins/theme_boost_union)
boost_union:
enabled: false
# -- [Boost Magnific](https://moodle.org/plugins/theme_boost_magnific)
boost_magnific:
enabled: false
# -- [Snap](https://moodle.org/plugins/theme_snap)
snap:
enabled: false
flexsections:
enabled: false
multitopic:
enabled: false


# -- Settings specific to the umbrella chart
# -- Either extend functionality of one chart or connects/configures services from two charts
dbpMoodle:
# -- Disallows all egress from release namespace for the moodle deployment
name: infra
stage: infra

# -- disallows all egress from release namespace for the moodle deployment
allowInternalNetworkingOnly: false

# -- These settings affect the config.php of the moodle container
phpConfig:
# -- Extended php logging
extendedLogging: false
Expand All @@ -121,8 +92,7 @@ dbpMoodle:
port: 6379
password: ""

# -- Creates a PVC for the moodle chart, this allows for additional configuration
moodleExternalPVC:
external_pvc:
enabled: true
name: "moodle-data"
size: "8Gi"
Expand All @@ -142,7 +112,6 @@ dbpMoodle:
etherpad_postgresql_password: ""
etherpad_api_key: ""

# -- The dbp update process to migrate moodle data when container image versions are increased
# -- A preperation job which disables the php-cronjob, scales down the deployment and creates a backup if dbpMoodle.backup.enabled=true
moodleUpdatePreparationJob:
enabled: false
Expand Down Expand Up @@ -241,18 +210,10 @@ dbpMoodle:
# -- Horizontal pod autoscaling values
hpa:
enabled: false
# -- The deployment to scale
deployment_name_ref: "moodle"
# -- Minimum replicas of deployment
min_replicas: 1
# -- Maximum replicas of deployment
max_replicas: 4
# -- The average cpu utilization of all pods in deployment to aim for, if exceeded for stabilization_window_seconds the deployment is scaled
target_average_cpu_utilization: 50
# How long to wait before scaling up when utilization exceeds target_average_cpu_utilization
scale_up_stabilization_window_seconds: 0
# How long to wait before scaling down when utilization is below target_average_cpu_utilization
scale_down_stabilization_window_seconds: 0
average_cpu_utilization: 50
# -- The max amount in percent to scale down in one step per cooldown period
scaledown_value: 25
# -- How many seconds to wait between downscaling adjustments
Expand Down

0 comments on commit 93ab672

Please sign in to comment.