The Moodle Plugin Monorepo is a centralized repository housing Helm charts, Kubernetes operators, and Moodle plugins. It aims to simplify the deployment and management of Moodle instances in Kubernetes environments. This monorepo is intended for DevOps teams, plugin authors, and Helm users to streamline their workflow.
The repository is organized into the following top-level directories:
charts/: Contains Helm charts for Moodle and its dependencies, making it easier to deploy and manage Moodle instances in Kubernetes.operators/: Includes Kubernetes operators that manage the lifecycle of Moodle instances, handling tasks such as scaling, backups, and upgrades.plugins/: Houses custom Moodle plugins and examples to extend the functionality of Moodle.infra/: Provides infrastructure-as-code scripts and automation helpers for setting up and managing the underlying infrastructure.docs/: Offers in-depth documentation, including guides, concepts, and features related to the Moodle Plugin Monorepo.
- Pre-packaged Helm charts for both production and development environments.
- Kubernetes operator for managing Moodle instances, including scaling, backups, and upgrades.
- Reference Moodle plugins and extension templates for custom development.
- Infrastructure automation scripts and CI/CD integrations for streamlined deployment.
To get started with the Moodle Plugin Monorepo, ensure you have the following prerequisites installed:
- Docker
- Kubernetes (minikube or a Kubernetes cluster)
- Helm CLI
- Rust toolchain (for compiling the Kubernetes operator)
-
Add the Helm repository and install the charts:
helm repo add moodle https://example.com/moodle-repo helm install moodle/moodle --generate-name
-
Build and deploy the Kubernetes operator:
cd operators/operator cargo build --release kubectl apply -f deploy/operator.yaml -
Install or update Moodle plugins:
cd plugins # Follow the instructions in the plugin directory
To run Moodle locally using Docker Compose:
docker-compose up -dTo build and run the frontend WASM example:
- Build the WASM module and copy necessary files:
wasm-pack build --target web --out-dir ./frontend-example/pkg ./packages/moodle-wasm-example
- Open
frontend-example/index.htmlin a web browser to view the example.
To deploy Moodle on a Kubernetes cluster:
kubectl apply -f examples/moodle-deployment.yamlFor detailed guides and documentation, please refer to the MkDocs site. Key guides include:
We welcome contributions to the Moodle Plugin Monorepo. Please follow the issue filing and PR workflow guidelines. Ensure your code adheres to our coding standards and linting rules as outlined in .vale.ini and Rust formatting guidelines.
This project is licensed under the MIT License.
For support and discussions, please use GitHub Discussions or file an issue on the issue tracker. You can also join our Slack channel for community support.