Skip to main content

Platform operations

Your job is to make the developer experience boring—in the good way. Platform engineers run Pagifier, publish the golden paths, connect shared services, and hand teams small scoped credentials. Developers own their application source and project file; they should not need Kubernetes, registry, cloud, or Git-provider credentials.

The platform/developer handshake

Platform engineers provideDevelopers provide
A stable Pagifier URL and scoped API tokensApplication source and tests
Git connection IDs and protected-ref policyA project config and, for Git delivery, a small control manifest
Runtime images, templates, and environment profilesExplicit start command, port, health path, and app-specific settings
Storage, registry, DNS, secrets integration, and observabilityA reviewed artifact pin when production promotion is separate
Security defaults, approval policy, and audit retentionFixes for application build and readiness failures

Bring it up in this order

  1. Install Pagifier with PostgreSQL, object storage, and an OCI registry.
  2. Connect Git, back up the credential key, and issue narrow tokens.
  3. Publish templates and environment profiles so teams start from a safe default.
  4. Lock down the storage and IAM boundaries.
  5. Review security and RBAC, then add canary analysis when Prometheus is ready.

Everything behavioral about applications lives in the config bucket, owned by the platform team. Publishing a document changes future deployments without an operator rebuild. Configuration resolves into an immutable Release snapshot, so a template change never silently rewrites running applications.

caution

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

DocumentControlsDetails
platform/defaults.yamlBaseline port, resources, probes, caching, security profileSchema
runtime-images/*.yamlWhich base image apps run on and which toolchain builds themSchema
templates/*The golden path per frameworkTemplates
defaults/<env>.yamlReplicas, HA, rollout policy, autoscaling, canary strategy per environmentTemplates & profiles
security/*.yamlResponse-header bundles behind security: <profile>Security
middleware/authentication-*.yamlIngress annotations enforcing oidc/jwt/oauth2-proxyAlways override project annotations
analysis/*.yamlMetric gates behind analysis: [name]Canary analysis
cdn/*.yamlEdge annotations behind cdn = "<provider>"Domains, DNS & CDN

Seed content for the whole tree ships in examples/platform-config/; make sync-platform-config CONFIG_BUCKET=... uploads it.

What runs where

The API and operator are stateless deployments configured through Helm. PostgreSQL stores history, audit, principals, tokens, Git connections, pipeline state, and deduplication records. Object storage holds immutable source archives and the platform library. Build jobs turn archives into digest-addressed OCI images.

See Architecture for the full request path and Installation for the production values, including shared BuildKit caching, concurrency limits, release retention, Prometheus, notifications, and preview domains.