// image base directory::media/
//ifndef::imagesdir[:imagesdir: ../media]

=== Kubernetes Cluster Setup for edX

This document describes the steps to set up a Kubernetes cluster for hosting the edX platform. Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications.
The repository with all informations and the helm charts is available at link:https://github.com/openedx/openedx-k8s-harmony[openedx/openedx-k8s-harmony].

In particular, this project aims to provide the following benefits to Open edX operators:

* Ease of use and rapid deployment: This project aims to provide an Open edX hosting environment that just works out of the box, that can be easily upgraded, and that follows best practices for monitoring, security, etc.
* Lower costs by sharing resources where it makes sense. For example, by default Tutor's k8s feature will deploy a separate load balancer and ingress controller for each Open edX instance, instead of a shared ingress controller for all the instances in the cluster. Likewise for MySQL, MongoDB, ElasticSearch, and other resources. By using shared resources by default, costs can be dramatically reduced and operational monitoring and maintenance is greatly simplified.
** For setups with many small instances, this shared approach provides a huge cost savings with virtually no decrease in performance.
** For larger instances on the cluster that need dedicated resources, they can easily be configured to do so.

* Scalable hosting for instances of any size. This means for example that the default configuration includes autoscaling of LMS pods to handle increased traffic.
* Flexibility: this project aims to be "batteries included" and to support setting up all the resources that you need, with useful default configurations, but it is carefully designed so that operators can configure, replace, or disable any components as needed.

//image:edX-k8s.drawio.svg[edX-K8s Deployment,align=center]