Deployment
Decision: AutoFlow onboards to Theseus within today's platform constraints
The initial version of AutoFlow builds on Theseus, accepting Kubernetes-only delivery, a single database instance, and no remote modules for now. Theseus is not a blocker for AutoFlow reaching production.
Database migrations have a paved path: migrator
Theseus services now define schema migrations as a forward/backward SQL contract and run them from a migrator hook before each release starts, with validation, a rollback path, and one pass/fail signal. Agreed with Data Engineering; ready to adopt in every new service.
Decision: GATE does not need platform multi-port for the multi-tenant deployment of iam-auth today
The Auth team has agreed GATE's HTTP/gRPC split is served by two single-listener charts today: no outstanding Theseus work is necessary to facilitate GATE's iam-auth deployment to gitlab.com. The one-chart, two-listener shape remains the direction to converge on, without a deadline attached.
Fairway services can now expose more than one port
A service that speaks gRPC to the cluster and HTTP to the world could not be expressed in a Fairway manifest. spec.listeners replaces spec.containerPort, and existing manifests keep working untouched.
Decision: database migrations ship as a forward/backward contract, run by an init container
Milestone 1 of Theseus database migrations is agreed: modular features supply paired forward and backward migrations as an API contract, an init container applies them, and Fairway deploys it automatically when a Postgres service opts in.
The feature-flags service is ready for production use
Feature flags for services outside the monolith are now available to all of GitLab engineering — define a flag in git, evaluate it with the LabKit client, and de-risk your next rollout.
Fairway v3.0.0: charts validate their own values
Every generated chart now ships a values.schema.json, so Helm rejects typo'd keys and out-of-range values before they reach a cluster — a breaking change worth reading before you regenerate.
Platform bindings
One declarative interface, resolved per deployment target — and the rules for the Enterprise Platform Binding.
Pass application configuration via Fairway
Declare app config once in your Fairway manifest and let every environment deliver it — a ConfigMap in-cluster, a baked profile on Runway, per-cell values on Cells.
Run database migrations with migrator
Task recipes for migrator: author and validate migrations, build the derived image in CI, run them as a migration hook in your chart, adopt an existing database, roll back, and read the result.
Get distributed tracing on Runway
From scaffold to spans in Google Cloud Trace with LabKit v2, Fairway, and Runway — the effort is deploying.
Get structured logging on Runway
From scaffold to queryable logs in Grafana — JSON on stderr is the whole contract, and the scaffold already honours it.
Get Prometheus metrics on Runway
Expose metrics with LabKit v2, declare the port in Fairway, flip one deploy-time switch — then query Mimir in Grafana.
Ship service metrics with Metropolis
Declare your SLIs once in a GitLabServiceMetrics resource, review the generated rules and dashboards in CI, and ship them with your chart.
See what is running in production
Find the chart version and image running for your service on Runway, and where that answer lives for Cells.
Operate
Running a modular feature in production: what is deployed, pod health, rolling and rolling back, safe rollout, configuration, and knowing which cell is affected. Built for the middle of an incident.
Roll a deployment
How a release reaches production on Runway, how to hold or release the production step, and who rolls a Cell.
Roll back a deployment
The fastest ways to get production back to the last good version on Runway, in order of speed, and what rollback means on a Cell.
Roll out new code safely
What the Runway Kubernetes runtime does and does not offer for progressive delivery, and how feature flags are the de-risking tool Theseus gives you.
Fairway manifest schema
Field reference for the FairwayManifest declarative service interface.
Go service template (exemplar)
A live, complete example of a Theseus service — read it alongside the docs when onboarding.
The Observability Story
Instrument once with LabKit, collected by Runway with zero configuration, rendered on consistent dashboards — and, next, dashboards defined in the service repo and picked up automatically on deploy.
Co-located Grafana dashboards
Dashboards are part of the service: jsonnet in the service repo, compiled in CI, shipped in the Helm chart, and discovered by whatever Grafana lives in the cell.
Metropolis: Monitoring as Part of the Service
SLIs, alerts, and dashboards declared as resources in the service repo, shipped with the chart, and compiled in-cluster by the GitLab Metrics Operator.
Scaffold a service
Scaffold a production-ready modular service with common-template-copier — LabKit baked in from the first commit.
Add database migrations to your service
Take a scaffolded service from schema-at-startup to versioned, reversible migrations run by migrator: author, validate, apply, roll back, package, and run them before each release.