Kind reference

Service

Field reference and a complete example manifest for the Service Kind.

Service

The one Kind whose apply is annotate-only, never create-or-update. A Service row is written exclusively by discovery, reading service.name off telemetry your app has already sent in. A manifest can only add ownership metadata to a service discovery has already produced; it can never conjure a service into existence, and applying one for a name discovery has never seen is refused rather than silently treated as a create.

metadata.name is the service name exactly as discovery recorded it.

Fields

Generated from up0 schema explain Service --version v1 --output json against a live deployment. Every field here is one of the six annotation columns; nothing else about a discovered service (first seen, last seen, live status) is ever written through this Kind.

FieldTypeRequiredDefaultMeaning
ownerstringno(none)Who owns this service, free text (a person, a team name).
tierstringno(none)Free text, your own criticality label.
environmentstringno(none)Free text (production, staging, whatever your org uses).
repoUrlstringno(none)Link to the service's source repository.
runbookUrlstringno(none)Link to an incident runbook.
dashboardUrlstringno(none)Link to an external dashboard for this service.

Example

# up0/services/payments-api.yaml
apiVersion: up0.io/v1
kind: Service
metadata:
  name: payments-api
spec:
  owner: platform-team
  tier: critical
  environment: production
  repoUrl: https://github.com/acme/payments-api
  runbookUrl: https://runbooks.acme.internal/payments-api

Deleting a Service manifest clears these six columns; it never removes the underlying service. A git revert should not make a running service disappear from the catalog it never created.

Not walkable on kind today

Discovery (service topology and fingerprinting) is disabled on this deployment's kind profile, so no service exists here to annotate, and this manifest could not be applied live for this walk. The field list above comes straight from the live schema; the behavior described (annotate-only, refused for an undiscovered name) is documented, not observed on this stack.

On this page