Repository navigation
Conversation
The object describes a load-balanced ingress service on a VIP and port with selected backends, not a rule, so the kind now says that. Fields, JSON keys, validation and behaviour are unchanged; only names change. There is no alias, conversion or deprecated copy, since v1alpha1 makes no compatibility promise. The Go types follow the kind: NetworkServiceSpec, NetworkServiceStatus, NetworkServiceList, and NetworkServiceProtocol with its TCP and UDP constants, which ServiceRoute and ServiceVIPBinding also use. Doc comments that called the object a rule now call it a service; CEL validation rules keep the word. The sample, the backend-selector e2e test, the crd-ref-docs allow-list and the generated CRD and API docs are renamed with it, and the networkrules CRD file is removed. network-services-operator defines a NetworkService kind too, in networking.datumapis.com. Its CRD reaches only the Milo control plane, and this repo's CRDs reach only edge cells, so no cluster serves both plurals. BREAKING CHANGE: the NetworkRule kind (networkrules.network.datumapis.com, short name netrule) is replaced by NetworkService (networkservices.network.datumapis.com, short name netsvc). Existing NetworkRule objects are not migrated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
What a release of this does to running cells. Every edge cell applies the newest network tag through infra's Where the colliding NSO kind lives, read at infra main 0844442f8: The Open network#35 adds a CEL rule to the old |
Summary
The load-balanced ingress object on a VIP and port with selected backends was called a rule, which misdescribes it, so this renames the kind and its Go types to NetworkService. Fields, JSON keys, validation and behaviour are unchanged, and there is no alias or conversion since v1alpha1 makes no compatibility promise.
The network services operator already defines a NetworkService in another API group, but its CRD reaches only the Milo control plane while these CRDs reach only edge cells, so no cluster serves both kinds and a lookup by the shared name stays unambiguous wherever either is installed.
Breaking changes
Existing objects are not migrated by the rename. These follow-ups are not part of this PR:
Test plan
🤖 Generated with Claude Code