Hive Hive
Sign in

kura-controller: remove the deprecated spec.grpcPublicHost field (gRPC co-hosts on publicHost)

GitHub issue · Open

Metadata
Source
tuist/tuist #11390
Updated
Jun 19, 2026
Domains
Kura
Details

Background

Since the single-host gRPC change (#11356), KuraInstance.spec.grpcPublicHost is vestigial:

  • The operator co-hosts gRPC on spec.publicHost; the value of grpcPublicHost is 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 beyond publicHost.
  • status.grpcPublicURL likewise derives from publicHost, and Tuist.Kura.Provisioner.grpc_public_url/2 has 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) and status.grpcPublicURL.
  • Remove the server’s grpc_public_host_template / grpc_public_host / grpc_public_url accessors (and the Provisioner.grpc_public_url callback) plus the regions.ex template alias.
  • Replace the gRPC Ingress gate (GRPCPublicHost == "" || PublicHost == "") and the grpcPublicURL status with a signal that doesn’t depend on the removed field.
  • Update the kubectl get kura gRPC 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.
Flights

Investigate, reproduce, or fix this item in an isolated repository. Each Flight preserves its outcome and agent session.

New Flights are paused Configure model inference, GitHub, and a sandbox provider to start another Flight. Existing results remain available below.
No Flights yet

Start a Flight and preserve its objective, outcome, and session here.

Comments

No GitHub comments yet.