Synthax on README #2

Merged
adrien merged 1 commits from test into main 2026-08-17 09:06:15 +00:00

View File

@ -16,7 +16,7 @@ the tenant resources, and a shared **MinIO** instance for S3-compatible storage.
```mermaid
graph TD
subgraph Git Repository
A[GitOps: gitops/tenants/] -->|Contains| B(tenant-a/config.yaml)
A[GitOps: tenants/] -->|Contains| B(tenant-a/config.yaml)
A -->|Contains| C(tenant-b/config.yaml)
end
@ -25,6 +25,11 @@ graph TD
E -->|Deploys via Helm| F[Namespace: tenant-a]
E -->|Deploys via Helm| G[Namespace: tenant-b]
subgraph argo [Namespace: argocd]
D(Argo CD)
E(ApplicationSet)
end
subgraph F [Namespace: tenant-a]
F1(Jupyter Pod)
@ -47,7 +52,7 @@ graph TD
---
## 2. Meeting the Requirements
## 2. Requirements
This section details how the technical choices address the specific requirements of the assessment.
@ -80,8 +85,8 @@ application containers as a non-root user.
### 2.3 Container Images & Dependencies
* **Base & Dependent Images:** The project uses two custom images located in
`images/`. The `tenant-base` image contains the core OS (`python:3.12-slim-bookworm`),
security contexts, and user setups. The `tenant-jupyter` image builds on top
`images/`. The `tenant/base` image contains the core OS (`python:3.12-slim-bookworm`),
security contexts, and user setups. The `tenant/jupyter` image builds on top
of the base image and installs the application requirements.
* **No Hardcoded Secrets:** Images are completely stateless and free of secrets. They
rely solely on environment variables injected at runtime via Kubernetes Secrets.
@ -90,7 +95,7 @@ rely solely on environment variables injected at runtime via Kubernetes Secrets.
* **Gitea Actions Pipeline:** The CI/CD workflow (`.gitea/workflows/`) automatically
manages the image lifecycle and code quality.
* **Validation:** Helm charts and Kubernetes manifests are validated before deployment.
* **Validation:** Helm charts and tenant configs are validated before deployment.
* **Ordered Build Strategy:** The pipeline respects the image hierarchy. It builds the base image first,
then uses it to build the Jupyter image. Triggered on `*.*.*` tags, it pushes the versioned
artifacts to a private Docker registry.
@ -111,6 +116,9 @@ using the `Reflector` Kubernetes addon.
This section provides the step-by-step instructions to set up the local Kubernetes cluster and
bootstrap the GitOps environment.
*Note: You will not be able to use this repo directly as it require credentials for
my selfhosted gitea and docker registry.*
### 3.1 Prerequisites
Ensure the following tools are installed on your machine (e.g., via Homebrew on macOS):