Skip to main content

Route

API Group: networks.blanketops.dev

Version: v1alpha1

Scope: Namespaced


Description

Route defines the governed traffic exposure contract for a deployed ServiceUnit.

It specifies host binding, path mapping, TLS requirement, runtime substrate, and activation state.

Route abstracts ingress configuration into a deterministic exposure resource.

  • Route does not deploy workloads.
  • Route does not modify artifacts.
  • Route does not manage certificates directly — when tlsEnabled is true, the controller materializes an owned Domain resource to govern the TLS and DNS mapping chain for the host.
  • Route governs external access.

Spec

spec


FieldTypeRequiredDescription
contractobjectYesTraffic exposure contract

spec.contract

FieldTypeRequiredDescription
hoststringYesFully qualified domain name
pathstringYesHTTP path mapping
enabledbooleanYesWhether route is active
tlsEnabledbooleanYesWhether TLS is required
runtimestringYesRuntime routing substrate identifier
serviceUnitRefobjectYesReference to the ServiceUnit this route exposes

spec.contract.serviceUnitRef

FieldTypeRequiredDescription
namestringYesName of the ServiceUnit CR in this namespace

The controller derives the materialized service/ksvc name by convention (ksvc name == serviceUnitRef.name) — no ServiceUnit status lookup is required.


Status

FieldTypeDescription
phasestringCurrent lifecycle phase
resolvedHoststringHost applied in runtime
tlsStatusstringTLS provisioning state
conditions[]ConditionStandard Kubernetes condition array

status.phase Values

ValueMeaning
PendingRoute accepted but not yet reconciled
ReadyRoute materialized and serving traffic
DegradedRoute materialized but not fully healthy (e.g. TLS not yet active)
FailedRouting reconciliation error

status.tlsStatus Values

ValueMeaning
DisabledTLS is not required for this route
ProvisioningCertificate issuance or DNS mapping is in progress
ActiveCertificate is valid and traffic is served over TLS
FailedCertificate issuance failed or expired

Example

apiVersion: networks.blanketops.dev/v1alpha1
kind: Route
metadata:
name: route-sample
namespace: dev
spec:
contract:
host: api.dev.example.com
path: /
enabled: true
tlsEnabled: true
runtime: kubernetes.io/container-runtime
serviceUnitRef:
name: for-kaniko-app-api

Invariants

  • host must be unique within the namespace (or cluster, depending on implementation).
  • path must be valid HTTP path syntax.
  • runtime must correspond to a supported routing implementation.
  • Disabled routes are removed from the runtime, but the Route CR is retained.
  • Route must reference an existing ServiceUnit in the same namespace.
  • When tlsEnabled is true, an owned Domain resource governs certificate issuance and DNS mapping for the host.