Skip to content

docs: add instance and cluster docs#11

Merged
gabor-boros merged 4 commits intomainfrom
gabor/add-documentation
Feb 26, 2026
Merged

docs: add instance and cluster docs#11
gabor-boros merged 4 commits intomainfrom
gabor/add-documentation

Conversation

@gabor-boros
Copy link
Copy Markdown
Collaborator

[SE-6524]

Copy link
Copy Markdown
Member

@kaustavb12 kaustavb12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a few comments, but otherwise LGTM 👍

👍

  • I tested this: Setup mkdocs in local and read through docs
  • I read through the code
  • I checked for accessibility issues
  • Includes documentation
  • Added to the Code Drift project board (for backports)

@kaustavb12
Copy link
Copy Markdown
Member

@gabor-boros

One thing I found missing in the new docs was instructions on setting up a cluster repo in github. These can be confusing for a first time user, specially things like setting up actions secrets. Also, we should briefly talk about the different workflows and how to trigger them, plus what are some of the workflow common inputs, such as "strain", "runner label", "phd cli version", etc.

Copy link
Copy Markdown
Member

@Agrendalath Agrendalath left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for preparing such detailed documentation, @gabor-boros! I left some suggestions.

uv pip install -r docs/requirements.txt
```

This creates a virtual environment (`.venv`) at the repository root and installs the MkDocs dependencies, making them available to `uv run` commands.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: if uv is already a prerequisite, we can simply run uvx --with mkdocs-material --with mkdocs-glightbox mkdocs. It does not require any virtualenv or dependency management.
It would be a one-liner in the CI. If needed, we could also pin mkdocs version to avoid automatically upgrading it to 2.0.

Comment on lines +20 to +24
- name: Install uv
uses: astral-sh/setup-uv@v4
- uses: actions/setup-python@v5
with:
python-version: 3.12
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- name: Install uv
uses: astral-sh/setup-uv@v4
- uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Install uv and set the python version
uses: astral-sh/setup-uv@v4
with:
python-version: 3.12

Nit - uv action already sets up Python.

Comment on lines +25 to +32
- name: Set cache ID
run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v4
with:
key: mkdocs-material-${{ env.cache_id }}
path: ~/.cache
restore-keys: |
mkdocs-material-
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- name: Set cache ID
run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v4
with:
key: mkdocs-material-${{ env.cache_id }}
path: ~/.cache
restore-keys: |
mkdocs-material-

Nit: with these dependencies, running the cache action will take more time than installing everything from scratch with uv.

@@ -0,0 +1,93 @@
# Documentation

This directory contains the documentation for the Launchpad (Launchpad) cluster template, built with [MkDocs](https://www.mkdocs.org/) and the [Material theme](https://squidfunk.github.io/mkdocs-material/).
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we renaming PHD to Launchpad? Isn't it too close to the name of the website owned by Canonical?

Comment on lines +316 to +317
- **Database Snapshots**: Some cloud providers maintain database snapshots
- **Storage Buckets**: If buckets weren't destroyed, data may still be accessible
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If these are managed by Terraform and not marked with prevent_destroy, they will be deleted. We should probably add a huge red warning at the top of this page.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While I see where are you coming from for this, I believe "infrastructure de-provisioning" and "destroy" are pretty self-explanatory for indicating that something irreversible will happen. also, the descriptions are explicitly telling that resources will be destroyed.


Open edX services write logs to stdout. Log level and format are controlled by application settings (e.g. Django `LOGGING`, Celery, or environment variables). Adjust these in the instance configuration or in custom settings if you need different verbosity or structure.

To get the application logs, use:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we browse all logs from a central place? IIRC, Harmony provisioned an OpenSearch instance.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It depends on Harmony. However, setting that up should not be part of this documentation for the reasons mentioned above; rather, if we feel the need for it, let's update the documentation of Harmony. I wouldn't like to blow up the already monumental scope. Would you be up for opening a task for this under the corresponding epic?

- **Tutor** generates the Kubernetes YAML for the instance (Deployments, Services, Ingress, etc.) from `config.yml`.
- **Drydock** is a Tutor plugin used in this stack; options such as `DRYDOCK_INIT_JOBS` and `DRYDOCK_REGISTRY_CREDENTIALS` are set in `config.yml`.

Regenerate manifests with Tutor from the instance config and commit the result to the cluster repo so ArgoCD can sync.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a command for this?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pipelines are doing this, this is just an explanation what will happen. By the way, it is done by tutor config save IIRC. An operator will have nothing to do with this besides kicking off the pipeline.

## Overview

- **Picasso** provides GitHub Actions workflows to build Docker images from the instance configuration and Tutor/Picasso setup.
- Image names and tags are typically set in the instance `config.yml` (e.g. `DOCKER_IMAGE_OPENEDX`, `MFE_DOCKER_IMAGE`) and automatically updated by Picasso after a build.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An example config would be nice here.

SE-6524

Signed-off-by: Gabor Boros <gabor@opencraft.com>
SE-6525

Signed-off-by: Gabor Boros <gabor@opencraft.com>
@gabor-boros gabor-boros force-pushed the gabor/add-documentation branch from 67c2a1f to 3d16dfa Compare February 26, 2026 13:39
SE-6525

Signed-off-by: Gabor Boros <gabor@opencraft.com>
@gabor-boros gabor-boros force-pushed the gabor/add-documentation branch from 9e929ed to ba44b4b Compare February 26, 2026 13:48
Copy link
Copy Markdown
Member

@kaustavb12 kaustavb12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

  • I tested this: Spun up mkdocs in local and read through the docs
  • I read through the code

SE-6524

Co-authored-by: Kaustav Banerjee <kaustav@opencraft.com>
@gabor-boros gabor-boros merged commit 0e4fe0f into main Feb 26, 2026
2 checks passed
@gabor-boros
Copy link
Copy Markdown
Collaborator Author

The rest of the comments can be resolved in a follow-up PR (or multiple ones). Merging now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants