Open edX deployment through Tutor in AWS EKS
Overview:
Online learning platforms are important part of our lives. We spend most of our free time with learning something online. Companies need internal learning platforms as well. One of the most famous learning frameworks is Open edX. Current topic describes how easy this platform deploys Locally or in AWS EKS service with IaC approach based on Terraform and Tutor.
The Open edX project is run by The Center for Reimagining Learning (tCRIL), a nonprofit organization (the “NP”) that was formerly known as edX Inc. The NP is led by Harvard and MIT and will focus on inclusive learning and education. The NP will collaborate with educational institutions, governments, and other organizations to develop and evaluate new approaches to learning and pedagogy; invest in new learning models that combine the best of online and in-person; and promote the adoption of best practices across the education continuum. The NP plans to support innovation in lifelong learning and advance next generation learning experience platforms.
Tutor:
Tutor is the official Docker-based Open edX distribution, both for production and local development. The goal of Tutor is to make it easy to deploy, customise, upgrade and scale Open edX. Tutor is reliable, fast, extensible, and it is already used to deploy hundreds of Open edX platforms around the world.
Do you need professional assistance setting up or managing your Open edX platform? Overhang.IO provides online support as part of its Long Term Support (LTS) offering.
Features
- 100% open source
- Runs entirely on Docker
- World-famous 1-click installation and upgrades
- Comes with batteries included: theming, SCORM, HTTPS, web-based administration interface, mobile app, custom translations…
- Extensible architecture with plugins
- Works with Kubernetes
- Amazing premium plugins available in the Tutor Wizard Edition, including Cairn the next-generation analytics solution for Open edX.
- No technical skill required with the zero-click Tutor AWS image
Deployment:
Local
Install the latest stable release of Tutor from pip
pip install "tutor[full]"
Run locally
tutor local quickstart
If you got an error
ERROR: Service ‘mfe’ failed to build : Build failed
Disable mfe
tutor plugins disable mfe
Application will be available locally in http://local.overhang.io/ and http://studio.local.overhang.io/
AWS EKS
Next step is Deployment cluster using terraform into AWS EKS
Here’s an example of the Cluster deployments through Terraform
Requirements:
- aws cli
- S3 bucket for Terraform state
- DynamoDB for statelock
For creating EKS cluster just execute the command
terraform apply
After cluster is created you need to generate proper config for managing this cluster. Use command below
aws eks --region $region update-kubeconfig --name $eks-cluster-name
Create namespace for openedx
kubectl create namespace openedx
Here is example of the tutor deployments. Pull that repo for deploying Open edX.
https://github.com/helli0n/openedx-tutor-example
In Tutor folder run deployment command
kubectl apply --kustomize env/ --wait namespace/openedx configured
configmap/caddy-config-4k89g5fh74 created
configmap/openedx-config-dc96hfbbgm created
configmap/openedx-settings-cms-429tm85fdk created
configmap/openedx-settings-lms-gtgkm5t62f created
configmap/redis-config-fccm65mh4m created
service/caddy created
service/cms created
service/elasticsearch created
service/lms created
service/mongodb created
service/mysql created
service/redis created
service/smtp created
persistentvolumeclaim/caddy unchanged
persistentvolumeclaim/elasticsearch unchanged
persistentvolumeclaim/mongodb unchanged
persistentvolumeclaim/mysql unchanged
persistentvolumeclaim/redis unchanged
deployment.apps/caddy created
deployment.apps/cms created
deployment.apps/cms-worker created
deployment.apps/elasticsearch created
deployment.apps/lms created
deployment.apps/lms-worker created
deployment.apps/mongodb created
deployment.apps/mysql created
deployment.apps/redis created
deployment.apps/smtp created
job.batch/cms-job created
job.batch/lms-job created
job.batch/mysql-job created
After deployment is completed, dashboard looks like
System architecture diagram shows example of the components communications in AWS. End users will have access to apps through the AWS Application Load Balancer.
Summary
Deployment of your own learning platform is easy and will bring profit to your business. Tool set uses the best practices and approaches: IaC, Orchestration, Containerization, etc.
Open edx is considered to be a modern learning solution. It’s easy to deploy and customize, the example is provided here https://docs.tutor.overhang.io/k8s.html#customizing-kubernetes-resources.
URLs:
https://docs.tutor.overhang.io/
https://docs.tutor.overhang.io/k8s.html
https://docs.tutor.overhang.io/k8s.html#running-a-custom-openedx-docker-image
https://openedx.org/the-platform/
https://openedx.org/about-open-edx/
https://kubernetes.io/docs/reference/kubectl/cheatsheet/
https://github.com/helli0n/openedx-tutor-example
https://github.com/helli0n/aws-terraform-template