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.
Comments

No GitHub comments yet.