Kubernetes Deployment
Helm chart
Section titled “Helm chart”There’s a Helm chart inside the helm/ folder, in each project repository.
The Helm chart bootstraps a Scoold instance on a Kubernetes cluster using the Helm package manager.
This chart does not install Para next to Scoold in the K8s cluster. There is a separate Helm chart for Para. We also offer a fully managed Para service at ParaIO.com
Prerequisites
Section titled “Prerequisites”- Para backend service (latest version recommended; Helm chart)
- Helm 3.0+
- Kubernetes 1.21+ (for the optional CronJob helper)
Installation
Section titled “Installation”Clone the repo and go inside the ./helm/ directory :
git clone https://github.com/Erudika/scooldcd scoold/helm# edit values.yaml as neededhelm install scoold ./scooldThe command deploys Scoold on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.
If you want to auto-initialize Scoold from scratch, deploy the Para Helm chart first, then take note of the root app secret key.
The root app secret key is stored in the para-application.conf file located inside /para/application.conf inside the Para pod.
Then modify values.yaml and add this Scoold configuration property:
scoold.autoinit.root_app_secret_key="{secret key for root Para app}"Finally, run helm upgrade --install scoold ./scoold.
Uninstalling the Chart
Section titled “Uninstalling the Chart”To uninstall/delete the scoold deployment:
helm uninstall scooldThe command removes all the Kubernetes components associated with the chart and deletes the release.
Configuration properties
Section titled “Configuration properties”The following table lists the configurable parameters inside values.yaml and their default values.
| Parameter | Default value |
|---|---|
image.repository Scoold image name | erudikaltd/scoold |
image.tag Scoold image tag | 1.65.0 |
image.pullPolicy Image pull policy | IfNotPresent |
image.pullSecrets References to image pull secrets | [] |
service.type Kubernetes Service type | ClusterIP |
service.port Service HTTP port | 8000 |
service.name Service port name | http |
applicationConf Scoold configuration | Sample block in values.yaml |
javaOpts JAVA_OPTS JVM arguments | -Xmx512m -Xms512m -Dconfig.file=/scoold/config/application.conf |
podAnnotations Pod annotations | {} |
extraEnvs Extra environment variables | [] |
updateStrategy Deployment update strategy | RollingUpdate |
ingress.enabled Create Ingress | false |
ingress.className Ingress class name | "" |
ingress.hosts[0].host Hostname for the Ingress | scoold.local |
ingress.hosts[0].paths[0].path HTTP path served by the Ingress | / |
ingress.tls TLS configuration | [] |
resources CPU/Memory resource requests/limits | {} |
nodeSelector Node selector | {} |
tolerations Tolerations | [] |
affinity Affinity rules | {} |
A YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
helm install scoold ./scoold -f values.yamlOr, when updating the chart with new configuration:
helm upgrade --install scoold ./scoold -f values.yamlThe Helm chart bootstraps a Scoold Pro deployment on a Kubernetes cluster using the Helm package manager.
This chart does not install Para next to Scoold in the K8s cluster. There is a separate Helm chart for Para. We also offer a fully managed Para service at ParaIO.com
Prerequisites
Section titled “Prerequisites”- Para backend service (latest version recommended; Helm chart)
- Access credentials for the private Scoold Pro Docker registry on ECR
- Helm 3.0+
- Kubernetes 1.21+ (for the optional CronJob helper)
Installation
Section titled “Installation”First of all, make sure you have followed the guide to get access to the private Docker registry on ECR. Access to the private Docker registry can be requested by emailing support, after you purchase a Scoold Pro license.
Then clone the Helm chart locally:
git clone https://github.com/Erudika/scoold-procd scoold-pro/helmInside the ./helm/ directory execute the following console command, while replacing the values {ecr_key_id} and {ecr_secret} with your ECR credentials:
helm install scooldpro ./scoold-pro \ --set ecrCredentials.accessKeyId={ecr_key_id},ecrCredentials.accessSecretKey={ecr_secret}The command deploys Scoold on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.
If you want to auto-initialize Scoold from scratch, deploy the Para Helm chart first, then take note of the root app secret key.
The root app secret key is stored in the para-application.conf file located inside /para/application.conf inside the Para pod.
Then modify values.yaml and add this Scoold configuration property:
scoold.autoinit.root_app_secret_key="{secret key for root Para app}"Finally, run helm upgrade --install scooldpro ./scoold-pro.
Uninstalling the Chart
Section titled “Uninstalling the Chart”To uninstall/delete the scoold deployment:
helm uninstall scooldproThe command removes all the Kubernetes components associated with the chart and deletes the release.
Configuration properties
Section titled “Configuration properties”The following table lists the configurable parameters inside [values.yaml](values.yaml) and their default values.
| Parameter | Default value |
|---|---|
image.repository Scoold image name | 374874639893.dkr.ecr.eu-west-1.amazonaws.com/scoold-pro |
image.tag Scoold image tag | 1.65.0 |
image.pullPolicy Image pull policy | IfNotPresent |
image.pullSecrets References to extra image pull secrets | [] |
ecrCredentials.registry Registry host used inside the generated Secret | 374874639893.dkr.ecr.eu-west-1.amazonaws.com |
ecrCredentials.region AWS region passed to the helper job | eu-west-1 |
ecrCredentials.accessKeyId AWS access key ID stored in a Secret | "" |
ecrCredentials.accessSecretKey AWS secret access key stored in a Secret | "" |
ecrCredentials.secretName Override for the generated docker-registry Secret name | "" |
ecrCredentials.refreshSchedule Cron expression for refreshing the pull secret | "0 */6 * * *" |
ecrCredentials.helper.image Container image used for the helper Job/CronJob | public.ecr.aws/aws-cli/aws-cli:2.15.30 |
ecrCredentials.helper.pullPolicy Image pull policy for the helper Job/CronJob | IfNotPresent |
ecrCredentials.helper.kubectlVersion Version of kubectl downloaded inside the helper Pods | v1.29.2 |
ecrCredentials.helper.pullPolicy Image pull policy for the helper Job/CronJob | IfNotPresent |
service.type Kubernetes Service type | ClusterIP |
service.port Service HTTP port | 8000 |
service.name Service port name | http |
applicationConf Scoold configuration | Sample block in values.yaml |
persistentVolumes.uploads.size Requested capacity for /scoold/uploads PVC | 2Gi |
persistentVolumes.uploads.accessModes Access modes for /scoold/uploads PVC | [ReadWriteOnce] |
persistentVolumes.uploads.storageClassName StorageClass for /scoold/uploads PVC | "" |
javaOpts JAVA_OPTS JVM arguments | -Xmx512m -Xms512m -Dconfig.file=/scoold/config/application.conf |
podAnnotations Pod annotations | {} |
extraEnvs Extra environment variables | [] |
updateStrategy Deployment update strategy | RollingUpdate |
ingress.enabled Create Ingress | false |
ingress.className Ingress class name | "" |
ingress.hosts[0].host Hostname for the Ingress | scooldpro.local |
ingress.hosts[0].paths[0].path HTTP path served by the Ingress | / |
ingress.tls TLS configuration | [] |
resources CPU/Memory resource requests/limits | {} |
nodeSelector Node selector | {} |
tolerations Tolerations | [] |
affinity Affinity rules | {} |
When working with the private AWS ECR registry, provide an AWS key pair (ecrCredentials.accessKeyId / ecrCredentials.accessSecretKey). The chart stores the credentials in a Secret and deploys a helper Job plus CronJob that run aws ecr get-login-password inside the cluster. The generated token is continuously applied to the docker-registry Secret referenced by the Deployment, so Kubernetes keeps pulling the private Scoold Pro image without any manual steps. Adjust ecrCredentials.refreshSchedule (default every 6 hours) or the helper image/kubectl version if you need different behavior.
A YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
$ helm install scooldpro ./scoold-pro -f values.yamlOr, when updating the chart with new configuration:
$ helm upgrade --install scooldpro ./scoold-pro -f values.yaml