serving icon indicating copy to clipboard operation
serving copied to clipboard

[gRPC/http2 auto-detect] Support auto-detection in queue proxy

Open rafaeltello opened this issue 4 years ago • 2 comments

Describe the feature

This is part of #4283. As part of supporting http2 auto-detect, we need to make changes in health probes, queue proxy, and activator. Below are some notes created by @igorbelianski on the work that needs to be done in queue proxy & activator.

Data Path Notes

Public service ingress construction

Service that is exposed to user and backed by either Activator or Queue proxy depending on "direct operational mode) pkg/reconciler/serverlessservice/resources/services.go

    func MakePublicService 
      (based on h2c flag it uses different backend port 8012 or 8013 see func targetPort()

Private service ingress construction

Service exposed to activator to access Queue proxy pkg/reconciler/serverlessservice/resources/services.go

    func MakePrivateService(sks *v1alpha1.ServerlessService) *corev1.Service {
            (based on h2c flag it uses different backend port 8012 or 8013 see func targetPort()

Activator always listens on both 8012 an 8013 constructs 2 distinct servers:

  [cmd/activator/main.go](https://github.com/knative/serving/tree/master/cmd/activator/main.go)
     servers := map[string]*http.Server{
	"http1":   pkgnet.NewServer(":"+strconv.Itoa(networking.BackendHTTPPort), ah),
	"h2c":     pkgnet.NewServer(":"+strconv.Itoa(networking.BackendHTTP2Port), ah),
          "profile": profiling.NewServer(profilingHandler),
	}

Queue proxy container construction

While construction queue proxy container we make a static choice on the port 8012/8013 pkg/reconciler/revision/resources/queue.go

func makeQueueContainer(rev *v1.Revision, cfg *config.Config) (*corev1.Container, error) {

Queue proxy implementation picks port from env.UserPort https://github.com/knative/serving/blob/master/cmd/queue/main.go#L273

rafaeltello avatar Feb 26 '21 19:02 rafaeltello

/kind enhancement /area networking /triage accepted

evankanderson avatar Mar 15 '21 22:03 evankanderson

This issue is stale because it has been open for 90 days with no activity. It will automatically close after 30 more days of inactivity. Reopen the issue with /reopen. Mark the issue as fresh by adding the comment /remove-lifecycle stale.

github-actions[bot] avatar Jun 14 '21 01:06 github-actions[bot]