diff --git a/internal/service/kubernetes_service.go b/internal/service/kubernetes_service.go index 9f898084..34989c91 100644 --- a/internal/service/kubernetes_service.go +++ b/internal/service/kubernetes_service.go @@ -58,6 +58,11 @@ var watchedGVRs = []schema.GroupVersionResource{ Version: "v1", Resource: "httproutes", }, + { + Group: "gateway.networking.k8s.io", + Version: "v1", + Resource: "grpcroutes", + }, } func NewKubernetesService( diff --git a/internal/service/kubernetes_service_test.go b/internal/service/kubernetes_service_test.go index c58d28be..8bcb5836 100644 --- a/internal/service/kubernetes_service_test.go +++ b/internal/service/kubernetes_service_test.go @@ -194,6 +194,25 @@ func TestKubernetesService(t *testing.T) { assert.Nil(t, got) }, }, + { + description: "UpdateFromItem parses annotations and populates cache from grpcroute", + run: func(t *testing.T, svc *KubernetesService) { + item := unstructured.Unstructured{} + item.SetNamespace("default") + item.SetName("test-grpcroute") + item.SetAnnotations(map[string]string{ + "tinyauth.apps.grpcapp.config.domain": "grpcapp.example.com", + "tinyauth.apps.grpcapp.users.allow": "carol", + }) + + svc.updateFromItem(&item) + + got := svc.getByDomain("grpcapp.example.com") + require.NotNil(t, got) + assert.Equal(t, "grpcapp.example.com", got.Config.Domain) + assert.Equal(t, "carol", got.Users.Allow) + }, + }, { description: "Ingress and HTTPRoute apps coexist in cache", run: func(t *testing.T, svc *KubernetesService) {