v1.1.0 GRPCRoute v1alpha2 mistakenly changes status
to not be a subresource
#3411
Labels
kind/bug
Categorizes issue or PR as related to a bug.
priority/critical-urgent
Highest priority. Must be actively worked on as someone's top priority right now.
triage/accepted
Indicates an issue or PR is ready to be actively worked on.
Milestone
What happened:
Commit 7aeddcf appears to intend to make GRPCRoute v1alpha2 a type alias for GRPCRoute v1. This makes sense; it's part of promoting GRPCRoute to GA. All well and good.
However, 7aeddcf also drops the kubebuilder comments that would (among other things) make GRPCRoute's
status
a subresource. This appears to be an error (look atapis/v1beta1/httproute_types.go
, which is the same kind of type alias, but preserves the kubebuilder comments).The end result is that GRPCRoute v1alpha2's
status
is no longer a subresource, which means that it's no longer possible to PATCH thestatus
, which prevents any implementation using GRPCRoutev1alpha2
from working.As it happens, Linkerd is a lovely reproducer for this:
linkerd install --crds --set enableHttpRoutes=false | kubectl apply -f -
linkerd install --set enableHttpRoutes=false | kubectl apply -f -
linkerd check
Install an application, then apply a GRPCRoute with a
parentRef
pointing to a Service. You'll find that your GRPCRoute never gets astatus
stanza at all, and you'll see errors logged from the Linkerd destination controller'spolicy
container because the API server returns a 404 when it tries to patch your GRPCRoute'sstatus
.This diff:
seems to do the right thing: if you apply that and run
make codegen
then the diffs inconfig/crd
look reasonable -- and, perhaps more importantly, if one applies the experimental channel CRDs for v1.1.0, then applies the generatedconfig/crd/gateway.networking.k8s.io_grpcroutes.yaml
, then installs Linkerd as above, everything works.I'll open a PR shortly.
The text was updated successfully, but these errors were encountered: