Skip to content

Commit

Permalink
add kubelet header to http probe, add status code to failed probe error
Browse files Browse the repository at this point in the history
Co-authored-by: Shash Reddy <shashwathireddy@gmail.com>
  • Loading branch information
joshrider and shashwathi committed Jul 9, 2019
1 parent 5969bf0 commit d01c335
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
6 changes: 5 additions & 1 deletion pkg/queue/health/probe.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ import (
"net/url"
"time"

"github.com/knative/serving/pkg/network"
"github.com/knative/serving/pkg/queue"
corev1 "k8s.io/api/core/v1"
)

Expand Down Expand Up @@ -73,6 +75,8 @@ func HTTPProbe(config HTTPProbeConfigOptions) error {
return fmt.Errorf("error constructing probe request %v", err)
}

req.Header.Add(network.KubeletProbeHeaderName, queue.Name)

for _, header := range config.HTTPHeaders {
req.Header.Add(header.Name, header.Value)
}
Expand All @@ -83,7 +87,7 @@ func HTTPProbe(config HTTPProbeConfigOptions) error {
}

if !IsHTTPProbeReady(res) {
return errors.New("HTTP probe did not respond Ready")
return errors.New(fmt.Sprintf("HTTP probe did not respond Ready, got status code: %d", res.StatusCode))
}

return nil
Expand Down
13 changes: 11 additions & 2 deletions pkg/queue/health/probe_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import (
"time"

"github.com/google/go-cmp/cmp"
"github.com/knative/serving/pkg/network"
"github.com/knative/serving/pkg/queue"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/intstr"
)
Expand All @@ -50,7 +52,7 @@ func TestTCPProbe(t *testing.T) {
}

func TestHTTPProbeSuccess(t *testing.T) {
var gotHeader corev1.HTTPHeader
var gotHeader, kubeletHeader corev1.HTTPHeader
expectedHeader := corev1.HTTPHeader{
Name: "Testkey",
Value: "Testval",
Expand All @@ -59,10 +61,14 @@ func TestHTTPProbeSuccess(t *testing.T) {
expectedPath := "/health"
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
for headerKey, headerValue := range r.Header {
// Flitering for expectedHeader.TestKey to avoid other HTTP probe headers
// Filtering for expectedHeader.TestKey to avoid other HTTP probe headers
if expectedHeader.Name == headerKey {
gotHeader = corev1.HTTPHeader{Name: headerKey, Value: headerValue[0]}
}

if headerKey == network.KubeletProbeHeaderName {
kubeletHeader = corev1.HTTPHeader{Name: headerKey, Value: headerValue[0]}
}
}

gotPath = r.URL.Path
Expand All @@ -84,6 +90,9 @@ func TestHTTPProbeSuccess(t *testing.T) {
if d := cmp.Diff(gotHeader, expectedHeader); d != "" {
t.Errorf("Expected probe headers to match but got %s", d)
}
if d := cmp.Diff(kubeletHeader, corev1.HTTPHeader{Name: network.KubeletProbeHeaderName, Value: queue.Name}); d != "" {
t.Errorf("Expected kubelet probe header to be added to request, go %s", d)
}
if !cmp.Equal(gotPath, expectedPath) {
t.Errorf("Expected %s path to match but got %s", expectedPath, gotPath)
}
Expand Down

0 comments on commit d01c335

Please sign in to comment.