# Which community Kubernetes deployment strategy should we choose for self-hosting?

**URL:** <https://discuss.openedx.org/t/which-community-kubernetes-deployment-strategy-should-we-choose-for-self-hosting/15408>\
**Category:** Site Operators\
**Created:** [April 2, 2025, 3:04pm UTC](https://discuss.openedx.org/t/which-community-kubernetes-deployment-strategy-should-we-choose-for-self-hosting/15408 "2025-04-02T15:04:12Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Zachary\_Trabookis](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/zachary_trabookis/32/753_2.png) [@Zachary\_Trabookis](https://discuss.openedx.org/u/Zachary_Trabookis)\
**Post date:** [April 2, 2025, 3:04pm UTC](https://discuss.openedx.org/t/which-community-kubernetes-deployment-strategy-should-we-choose-for-self-hosting/15408/1 "2025-04-02T15:04:12Z")

</div>

I’m trying to figure out which community K8s deployment would be right for our organization if we were to self-host it on AWS infrastructure. We’re looking for a solution that handles provisioning, updates, and monitors K8s well.

We’ve deployed using `tutor local` on AWS but realize that we need to set up K8s architecture to handle our growing user base. Here are some of the K8s deployment solutions that I see in the community. Based on this criteria, I’d like feedback (positive/negative) on these options.

**Criteria**

- Cloud provider AWS.
- Metrics for Overall Accounts and Course Enrollments for our instance.
  - 19544 active accounts.
  - 41511 active course enrollments

- Microsites with Site Configuration and Theming Enabled for our instance.
  - 17 sites (we’re considering reducing this a good bit)

**Open Source K8s Solutions**  
I’m trying to keep the write-up below short because the repos/documentation go into more detail about these deployment solutions.

- [cookiecutter-openedx-devops](https://github.com/cookiecutter-openedx/cookiecutter-openedx-devops)  
This seems like a complete solution for deploying on AWS with K8s and other services needed by Open edX. Additional blog articles to help you get started here [https://blog.lawrencemcdaniel.com/](https://blog.lawrencemcdaniel.com/) appear helpful.

- [Grove](https://gitlab.com/opencraft/dev/grove)  
This seems like a complete solution for deploying on AWS. Additional documentation here [https://grove.opencraft.com/](https://grove.opencraft.com/) is a good starting place.

- [Harmony](https://github.com/openedx/openedx-k8s-harmony)  
This does not appear to be a full solution for setting up the infrastructure (e.g. VPC, K8s, S3, MySQL, MongoDB) on AWS. It includes a Helm chart to configure the K8s cluster for multiple Open edX instances (namespaces), including a single load balancer with ingress-Nginx controller and scalability for pods both horizontal and vertical.

---

<div class="post-metadata">

**Author:** ![feanil](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/feanil/32/37_2.png) [@feanil](https://discuss.openedx.org/u/feanil)\
**Post date:** [April 2, 2025, 5:47pm UTC](https://discuss.openedx.org/t/which-community-kubernetes-deployment-strategy-should-we-choose-for-self-hosting/15408/2 "2025-04-02T17:47:56Z")

</div>

My understanding is that harmony is where the community is working together to make something production ready for large scale and multi-tenancy. I haven’t been working closely with it but I think a few providers have been using it.

---

<div class="post-metadata">

**Author:** ![e0d](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/e0d/32/199_2.png) [@e0d](https://discuss.openedx.org/u/e0d)\
**Post date:** [April 2, 2025, 6:03pm UTC](https://discuss.openedx.org/t/which-community-kubernetes-deployment-strategy-should-we-choose-for-self-hosting/15408/3 "2025-04-02T18:03:24Z")

</div>

This is timely as we’ve just reengaged with AWS to create a refreshed reference architecture for hosting the Open edX platform on AWS.

I would also benefit from knowing the why or if one would use Grove rather than Harmony.

---

<div class="post-metadata">

**Author:** ![braden](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/braden/32/46_2.png) [@braden](https://discuss.openedx.org/u/braden)\
**Post date:** [April 4, 2025, 10:08pm UTC](https://discuss.openedx.org/t/which-community-kubernetes-deployment-strategy-should-we-choose-for-self-hosting/15408/4 "2025-04-04T22:08:59Z")

</div>

[cookiecutter-openedx-devops](https://github.com/cookiecutter-openedx/cookiecutter-openedx-devops): Yes, this is a nice project by Lawrence McDaniel; it follows a lot of best practices and has a lot of batteries included. It is a completely different approach than the others, though it of course uses some of the same pieces like `cert-manager` and `metrics-server`. One big drawback to the cookiecutter approach is that as far as I know it’s a one-time setup that creates everything for you, but doesn’t have any mechanism for updating your stuff later on if the cookiecutter is improved. It also hasn’t been updated in 7 months so it doesn’t support Sumac or the new Studio features that are powered by Meilisearch.

[**Harmony**](https://github.com/openedx/openedx-k8s-harmony): This is the main, community-developed toolkit for running Open edX on Kubernetes. If you want to run Open edX on Kubernetes, then I recommend you use Harmony one way or another. Both OpenCraft and eduNEXT currently use it in production (and Raccoon Gang and others have contributed to it). We also use it for things like the automated sandboxes that can be created for some PRs to Open edX.

Harmony focuses on everything that runs within the cluster; it doesn’t necessarily set up the cluster (VPC, K8s, S3, MySQL, MongoDB) as you pointed out. However, it does include [complete Terraform code](https://github.com/openedx/openedx-k8s-harmony/tree/main/infra-examples/aws) for setting up a cluster on AWS if you want to use Terraform to manage it. So if you use that optional part, it is a complete solution.

**[Grove](https://gitlab.com/opencraft/dev/grove)** is our own deployment management tool that is built around GitLab CI and Harmony. If you want to use GitLab to deploy stuff, want to monitor PRs and auto-create sandboxes, or want to deploy to both DigitalOcean and AWS, then Grove could be a nice choice for you and we welcome collaboration (it’s all open source). If you want to use something else like GitHub CI, GoCD, or just using Terraform to manage everything (which is totally reasonable) then Grove probably doesn’t have much to offer and you can just use Harmony itself and/or whatever infra management tool you’d like.

---

<div class="post-metadata">

**Author:** ![Zachary\_Trabookis](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/zachary_trabookis/32/753_2.png) [@Zachary\_Trabookis](https://discuss.openedx.org/u/Zachary_Trabookis)\
**Post date:** [April 5, 2025, 1:12am UTC](https://discuss.openedx.org/t/which-community-kubernetes-deployment-strategy-should-we-choose-for-self-hosting/15408/5 "2025-04-05T01:12:22Z")

</div>

@braden  
Thank for for this detailed feedback! We’ll talk this over and go with one of the three solutions.

---

<div class="post-metadata">

**Author:** ![Zachary\_Trabookis](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/zachary_trabookis/32/753_2.png) [@Zachary\_Trabookis](https://discuss.openedx.org/u/Zachary_Trabookis)\
**Post date:** [April 21, 2025, 3:51pm UTC](https://discuss.openedx.org/t/which-community-kubernetes-deployment-strategy-should-we-choose-for-self-hosting/15408/6 "2025-04-21T15:51:18Z")

</div>

We decided to go with **Grove** because it has already integrated Harmony which will allow us to pursue the Sumac release. Grove also provides a production ready solution for pushing additional infrastructure updates through Terraform for both AWS and DigitalOcean that will continue to remain open-sourced. Also, the separation of running instances and documentation alone is invaluable when getting started with Open edX deployment.
