Merge pull request 'Synthax on README' (#2) from test into main

Reviewed-on: #2
This commit is contained in:
Adrien Bouvais 2026-08-17 09:06:15 +00:00
commit b9eeab3e57

View File

@ -16,7 +16,7 @@ the tenant resources, and a shared **MinIO** instance for S3-compatible storage.
```mermaid ```mermaid
graph TD graph TD
subgraph Git Repository 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) A -->|Contains| C(tenant-b/config.yaml)
end end
@ -25,6 +25,11 @@ graph TD
E -->|Deploys via Helm| F[Namespace: tenant-a] E -->|Deploys via Helm| F[Namespace: tenant-a]
E -->|Deploys via Helm| G[Namespace: tenant-b] E -->|Deploys via Helm| G[Namespace: tenant-b]
subgraph argo [Namespace: argocd]
D(Argo CD)
E(ApplicationSet)
end
subgraph F [Namespace: tenant-a] subgraph F [Namespace: tenant-a]
F1(Jupyter Pod) 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. 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 ### 2.3 Container Images & Dependencies
* **Base & Dependent Images:** The project uses two custom images located in * **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`), `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 security contexts, and user setups. The `tenant/jupyter` image builds on top
of the base image and installs the application requirements. of the base image and installs the application requirements.
* **No Hardcoded Secrets:** Images are completely stateless and free of secrets. They * **No Hardcoded Secrets:** Images are completely stateless and free of secrets. They
rely solely on environment variables injected at runtime via Kubernetes Secrets. 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 * **Gitea Actions Pipeline:** The CI/CD workflow (`.gitea/workflows/`) automatically
manages the image lifecycle and code quality. 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, * **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 then uses it to build the Jupyter image. Triggered on `*.*.*` tags, it pushes the versioned
artifacts to a private Docker registry. 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 This section provides the step-by-step instructions to set up the local Kubernetes cluster and
bootstrap the GitOps environment. 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 ### 3.1 Prerequisites
Ensure the following tools are installed on your machine (e.g., via Homebrew on macOS): Ensure the following tools are installed on your machine (e.g., via Homebrew on macOS):