2.5 KiB
2.5 KiB
Architecture — Nginx + upload-sidecar
gitea-reports on korvattu. Uusi arkkitehtuuri: Nginx palvelee staattisia tiedostoja PV:ltä, upload-sidecar (busybox httpd + CGI) ottaa vastaan tar.gz-PUTit.
Yleiskuvaus
Yksi apex-host, monta Gitea-repoa. URL = FS-polku: /{owner}/{repo}/{branch}/{sha8}/{suite}/.
Ei Host-header-kikkaa, ei slugia, ei rewritea.
Komponentit
| Komponentti | Rooli |
|---|---|
| nginx | Palvelee staattisia tiedostoja /app/data -rootista (:8080) |
| upload (Python HTTP server) | Vastaanottaa PUT /path + tar.gz body, purkaa PV:lle (:8081) |
| PVC | Raporttisisältö suoraan FS-muodossa |
| Service | ClusterIP :8080 (read), :8081 (write) |
| Traefik IngressRoute | PATCH/PUT → upload:8081 (BasicAuth), GET/HEAD → nginx:8080 |
| Traefik Middleware | gitea-reports-publish-auth (BasicAuth), HTTPS-redirect |
| cert-manager Certificate | TLS |
URL ja sisältö
https://ci-reports.helm-dev.keskikuja.site/niko/gitea-ci-library/main/f4baa286/cucumber/index.html
└── selvä URL ──┘ └─────────── Gitea-yhteensopiva polku ──────────────────────────┘
Levyllä:
/app/data/{owner}/{repo}/{branch}/{sha8}/
.meta
index.html
...
Järjestelmäkaavio
flowchart TB
subgraph ext["Ulkoiset"]
PUB["Julkaisija\n(CI)"]
BR["Selain"]
GITEA["Gitea API\n(branch-lista)"]
end
subgraph edge["Reuna"]
TRAEFIK["Traefik\nIngressRoute + Middleware"]
CM["cert-manager\nTLS"]
end
subgraph cluster["Pod"]
NGINX["nginx\n(kontti)"]
UPLOAD["upload sidecar\n(Python HTTP server)"]
PVC["PVC /app/data"]
end
PUB -->|"PUT + BasicAuth\ntar.gz"| TRAEFIK
BR -->|"GET/HEAD"| TRAEFIK
TRAEFIK -->|"PUT/PATCH"| UPLOAD
TRAEFIK -->|"GET/HEAD"| NGINX
CM --> TRAEFIK
UPLOAD -->|"extract to PV"| PVC
NGINX --> PVC
Julkaisu
- Julkaisija paketoi tiedostot tar.gz:ksi
PUT https://{host}/{owner}/{repo}/{branch}/{sha8}/{suite}/- Traefik tarkistaa BasicAuth → välittää upload-sidecarille
- CGI purkaa tar.gz:n suoraan PV:lle:
/app/data/{owner}/{repo}/{branch}/{sha8}/{suite}/
Luku
- Selain avaa URL:n (GET/HEAD)
- Traefik välittää nginxille
- Nginx palauttaa suoraan PV:ltä
Retention
CronJob lukee PV:tä suoraan (find, ls, stat), tarkistaa branchin olemassaolon Giteasta, poistaa vanhat commit-kansiot.