Platform operations
Everything behavioral about Pagifier lives in the config bucket — an S3/MinIO bucket owned by the platform team, and the platform's prime dependency. Publishing a document changes platform behavior; no operator rebuild, no redeploy. Because configuration resolves into immutable Release snapshots at upload time, publishing never mutates running applications — changes apply from the next upload.
Start with S3 configuration — the full reference for both buckets: layout, the exact schema of every document type, per-component IAM boundaries, caching, and failure behavior. Then Templates & profiles for authoring the golden path.
The config bucket is the platform's control plane. Version it, access-log it, and restrict writes to the platform team. A bad template cannot touch running apps, but it fails every subsequent upload of projects that use it.
What each document type controls
| Document | Controls | Details |
|---|---|---|
platform/defaults.yaml | Baseline port, resources, probes, caching, security profile | Schema |
runtime-images/*.yaml | Which base image apps run on and which toolchain builds them | Schema |
templates/* | The golden path per framework | Templates |
defaults/<env>.yaml | Replicas, HA, rollout policy, autoscaling, canary strategy per environment | Templates & profiles |
security/*.yaml | Response-header bundles behind security: <profile> | Security |
middleware/authentication-*.yaml | Ingress annotations enforcing oidc/jwt/oauth2-proxy | Always override project annotations |
analysis/*.yaml | Metric gates behind analysis: [name] | Canary analysis |
Seed content for the whole tree ships in examples/platform-config/;
make sync-platform-config CONFIG_BUCKET=... uploads it.
Operational surface
The operator and API are stateless deployments configured through the Helm chart — see Installation for the full values table, including the shared BuildKit pool, build concurrency limits, release retention, Prometheus wiring, notifications, and preview domains.