Open edX deployment through Tutor in AWS EKS

Dmytro Vedetskyi
DevOops World … and the Universe
4 min readAug 12, 2022

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

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

--

--