Varnish Cache 7.7.3 compile from source et empaquete dans une image FROM scratch tier Platine. 8e image hardened du homelab.
Role
Varnish est le cache HTTP qui accelere les reponses WordPress. Il se place entre Traefik (ingress K3s) et le pod WordPress, et sert les pages statiques directement depuis la memoire.
Image
| Propriete | Valeur |
|---|---|
| Image | jbsky/varnish-hardened:7.7.3 |
| Taille | ~18 MB |
| Base | FROM scratch |
| UID | 6081:65534 |
| Ports | 8080 (HTTP), 8443 |
| Healthcheck | HTTP GET /__health |
| PID 1 | tini-static |
Architecture multi-stage
flowchart TB
subgraph s1["Stage builder"]
varnish["Compile Varnish 7.7.3"]
tcc["Compile TCC<br/>compilateur VCL runtime"]
end
subgraph s2["Stage gobuilder"]
init["Go init binary<br/>healthcheck HTTP"]
end
subgraph s3["Stage prep"]
libs["Runtime libs"]
user["UID 6081"]
end
subgraph s4["FROM scratch"]
final["varnishd + varnishncsa<br/>+ tini + init"]
end
s1 --> s3 --> s4
s2 --> s4
Particularite : TCC (Tiny C Compiler)
Varnish compile le VCL (Varnish Configuration Language) en C puis en shared object a chaud. Il a besoin d un compilateur C au runtime. Dans une image FROM scratch, gcc n est pas disponible.
Solution : embarquer TCC (Tiny C Compiler), un compilateur C minimaliste (~200 KB) compile from source depuis la branche mob. TCC suffit pour compiler les VCL generes par Varnish.
Go init binary
3 modes comme les autres images hardened :
| Mode | Comportement |
|---|---|
--healthcheck |
HTTP GET sur /__health (port 8080) |
--setup-dirs |
Cree /var/lib/varnish avec UID 6081 |
| default | Exec varnishd avec les args passes |
Le healthcheck HTTP verifie que Varnish repond sur le endpoint sante. Contrairement a un TCP connect, ca prouve que le VCL est charge et que Varnish traite les requetes.
StatefulSet K3s
Varnish tourne en StatefulSet (pas Deployment) pour garantir un nom de pod stable et un stockage persistant du workspace VCL.
Le pod contient 3 containers :
- varnish : le cache HTTP (image hardened)
- varnishncsa : logger access log (meme image, commande differente)
- vcl-reload : sidecar busybox qui surveille les changements VCL
Compiler hardening
Memes flags que les 7 autres images :
- Full RELRO, PIE, SSP, FORTIFY_SOURCE
- Stack clash protection
- Binaires strippes
- Non-executable stack
Liens
- Code source : varnish-hardened
- Image Docker : Docker Hub
Laisser un commentaire