Hive
kura-controller: remove the deprecated spec.grpcPublicHost field (gRPC co-hosts on publicHost)
GitHub issue · Open
Source
tuist/tuist #11390
Updated
Jun 19, 2026
Domains
Kura
Background
Since the single-host gRPC change (#11356), KuraInstance.spec.grpcPublicHost is vestigial:
- The operator co-hosts gRPC on
spec.publicHost; the value ofgrpcPublicHostis never read — only its emptiness gates whether the gRPC Ingress is created (reconcileGRPCIngress). - The server provisioner emits
grpcPublicHost == publicHost(the host templates are the same module attribute), so the field carries no information beyondpublicHost. status.grpcPublicURLlikewise derives frompublicHost, andTuist.Kura.Provisioner.grpc_public_url/2has no callers.- Under the single-host design there is no scenario where a distinct gRPC host is meaningful — gRPC always co-hosts on the public host.
#11356 marks the field Deprecated: (Go type + CRD comment) but keeps it to avoid a contract change in that PR.
Goal
Remove the deprecated surface and replace the gate, deciding the replacement signal.
Scope
- Remove
spec.grpcPublicHost(Go type + CRD) andstatus.grpcPublicURL. - Remove the server’s
grpc_public_host_template/grpc_public_host/grpc_public_urlaccessors (and theProvisioner.grpc_public_urlcallback) plus theregions.extemplate alias. - Replace the gRPC Ingress gate (
GRPCPublicHost == "" || PublicHost == "") and thegrpcPublicURLstatus with a signal that doesn’t depend on the removed field. - Update the
kubectl get kuragRPC printer column (currently.spec.grpcPublicHost, which now just duplicates Host) — drop it, or point it at a surviving status field. - Update operator + server tests.
Decision to make
Replacement signal for “gRPC is enabled”:
- Implicit — gate gRPC on
PublicHost != "" && !Private. Simplest; assumes every public region wants gRPC (true for managed Tuist today). - Explicit — add a
spec.grpc.enabled(or similar) bool, if a public HTTP-only cache (no gRPC) should ever be expressible.
Migration / impact
Removing a CRD field is backward-compatible at the apiserver (the field is pruned/ignored on existing CRs), but sequence it so existing instances reconcile cleanly. No client impact: the gRPC URL was never exposed to users and the CLI derives the endpoint by scheme-swapping the HTTP host.
References
- #11356 introduces the deprecation marker.
No GitHub comments yet.