Skip to content

feat: register Network Services in the service catalog (Phase 1)#165

Open
kevwilliams wants to merge 1 commit into
mainfrom
feat/service-catalog-registration-phase1
Open

feat: register Network Services in the service catalog (Phase 1)#165
kevwilliams wants to merge 1 commit into
mainfrom
feat/service-catalog-registration-phase1

Conversation

@kevwilliams
Copy link
Copy Markdown

@kevwilliams kevwilliams commented May 22, 2026

Implements Phase 1 of the service-catalog-registration design brief (PR #156, issue #155): pure YAML, no Go changes.

What this PR adds

A Kustomize bundle under config/services/ that registers Network Services in the platform service catalog and declares its monitored resource and meters:

  • Service (services.miloapis.com/v1alpha1)
    • serviceName: networking.datumapis.com
    • phase: Draft
    • owner.producerProjectRef.name: datum-cloud
  • ServiceConfiguration (services.miloapis.com/v1alpha1)
    • Monitored resource: HTTPRoute (gateway.networking.k8s.io)
    • Six optional dimensions: region, gateway, gateway_namespace, gateway_class, httproute_name, httproute_namespace
    • Four meters inline under networking.datumapis.com/gateway/*: requests, egress-bytes, ingress-bytes, connection-seconds

Bundle layout

config/services/
  kustomization.yaml
  networking.datumapis.com/
    kustomization.yaml      # kind: Component
    service.yaml
    serviceconfiguration.yaml

Matches the per-service-domain layout used by compute in datum-cloud/datum. The inner kustomization.yaml is a Kustomize Component, mirroring the compute reference.

What this PR does NOT add

  • No MonitoredResourceType or MeterDefinition resources directly — those are produced by the catalog's fan-out controller from ServiceConfiguration.spec, so no config/billing/ bundle is needed.
  • No Go code changes — Phase 1 is YAML-only.
  • No Flux wiring — that is a separate step in datum-cloud/infra handled by the platform/infra team after sign-off.

Phase 2 (usage emission from the edge proxy) remains blocked on OD-5 through OD-8 in the design brief.

Test plan

  • kubectl kustomize config/services/ renders both resources without error
  • Reviewer confirms Service and ServiceConfiguration shapes match the catalog CRDs in the deployment target
  • After merge: platform/infra wires config/services/ into Flux; confirm the fan-out controller produces the expected MonitoredResourceType and MeterDefinition resources in the billing namespace
  • Confirm Service appears in the catalog in Draft phase

Refs #155. Design brief: PR #156.

Add the Kustomize bundle that registers Network Services
(networking.datumapis.com) in the platform service catalog and
declares its monitored resource and meters.

- Service: networking.datumapis.com, phase Draft, owned by datum-cloud.
- ServiceConfiguration: declares HTTPRoute as the billable Kind with
  six optional dimensions (region, gateway, gateway_namespace,
  gateway_class, httproute_name, httproute_namespace) and four meters
  inline (requests, egress-bytes, ingress-bytes, connection-seconds).
- Bundle is a Kustomize Component under
  config/services/networking.datumapis.com/, matching the per-service
  layout used by compute.

MonitoredResourceType and MeterDefinition resources are produced by the
service catalog's fan-out controller from ServiceConfiguration.spec;
no config/billing/ bundle is needed.

Design: docs/enhancements/service-catalog-registration.md (PR #156).
Refs #155.
@kevwilliams kevwilliams requested a review from scotwells May 22, 2026 18:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant