Merge pull request #9965 from stevekuznetsov/skuznets/allow-https
Allowing for HTTPS Probes
This commit is contained in:
@@ -505,6 +505,7 @@ func deepCopy_api_HTTPGetAction(in HTTPGetAction, out *HTTPGetAction, c *convers
|
||||
return err
|
||||
}
|
||||
out.Host = in.Host
|
||||
out.Scheme = in.Scheme
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@@ -252,8 +252,9 @@ func FuzzerFor(t *testing.T, version string, src rand.Source) *fuzz.Fuzzer {
|
||||
s.Phase = api.NamespaceActive
|
||||
},
|
||||
func(http *api.HTTPGetAction, c fuzz.Continue) {
|
||||
c.FuzzNoCustom(http) // fuzz self without calling this function again
|
||||
http.Path = "/" + http.Path // can't be blank
|
||||
c.FuzzNoCustom(http) // fuzz self without calling this function again
|
||||
http.Path = "/" + http.Path // can't be blank
|
||||
http.Scheme = "x" + http.Scheme // can't be blank
|
||||
},
|
||||
func(ss *api.ServiceSpec, c fuzz.Continue) {
|
||||
c.FuzzNoCustom(ss) // fuzz self without calling this function again
|
||||
|
@@ -616,8 +616,20 @@ type HTTPGetAction struct {
|
||||
Port util.IntOrString `json:"port,omitempty"`
|
||||
// Optional: Host name to connect to, defaults to the pod IP.
|
||||
Host string `json:"host,omitempty"`
|
||||
// Optional: Scheme to use for connecting to the host, defaults to HTTP.
|
||||
Scheme URIScheme `json:"scheme,omitempty"`
|
||||
}
|
||||
|
||||
// URIScheme identifies the scheme used for connection to a host for Get actions
|
||||
type URIScheme string
|
||||
|
||||
const (
|
||||
// URISchemeHTTP means that the scheme used will be http://
|
||||
URISchemeHTTP URIScheme = "HTTP"
|
||||
// URISchemeHTTPS means that the scheme used will be https://
|
||||
URISchemeHTTPS URIScheme = "HTTPS"
|
||||
)
|
||||
|
||||
// TCPSocketAction describes an action based on opening a socket
|
||||
type TCPSocketAction struct {
|
||||
// Required: Port to connect to.
|
||||
|
@@ -592,6 +592,7 @@ func convert_api_HTTPGetAction_To_v1_HTTPGetAction(in *api.HTTPGetAction, out *H
|
||||
return err
|
||||
}
|
||||
out.Host = in.Host
|
||||
out.Scheme = URIScheme(in.Scheme)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -2903,6 +2904,7 @@ func convert_v1_HTTPGetAction_To_api_HTTPGetAction(in *HTTPGetAction, out *api.H
|
||||
return err
|
||||
}
|
||||
out.Host = in.Host
|
||||
out.Scheme = api.URIScheme(in.Scheme)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@@ -518,6 +518,7 @@ func deepCopy_v1_HTTPGetAction(in HTTPGetAction, out *HTTPGetAction, c *conversi
|
||||
return err
|
||||
}
|
||||
out.Host = in.Host
|
||||
out.Scheme = in.Scheme
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@@ -137,6 +137,9 @@ func addDefaultingFuncs() {
|
||||
if obj.Path == "" {
|
||||
obj.Path = "/"
|
||||
}
|
||||
if obj.Scheme == "" {
|
||||
obj.Scheme = URISchemeHTTP
|
||||
}
|
||||
},
|
||||
func(obj *NamespaceStatus) {
|
||||
if obj.Phase == "" {
|
||||
|
@@ -592,8 +592,20 @@ type HTTPGetAction struct {
|
||||
Port util.IntOrString `json:"port" description:"number or name of the port to access on the container; number must be in the range 1 to 65535; name must be a IANA_SVC_NAME"`
|
||||
// Optional: Host name to connect to, defaults to the pod IP.
|
||||
Host string `json:"host,omitempty" description:"hostname to connect to; defaults to pod IP"`
|
||||
// Optional: Scheme to use for connecting to the host, defaults to HTTP.
|
||||
Scheme URIScheme `json:"scheme,omitempty" description:"scheme to connect with, must be HTTP or HTTPS, defaults to HTTP"`
|
||||
}
|
||||
|
||||
// URIScheme identifies the scheme used for connection to a host for Get actions
|
||||
type URIScheme string
|
||||
|
||||
const (
|
||||
// URISchemeHTTP means that the scheme used will be http://
|
||||
URISchemeHTTP URIScheme = "HTTP"
|
||||
// URISchemeHTTPS means that the scheme used will be https://
|
||||
URISchemeHTTPS URIScheme = "HTTPS"
|
||||
)
|
||||
|
||||
// TCPSocketAction describes an action based on opening a socket
|
||||
type TCPSocketAction struct {
|
||||
// Required: Port to connect to.
|
||||
|
@@ -450,6 +450,7 @@ func convert_api_HTTPGetAction_To_v1beta3_HTTPGetAction(in *api.HTTPGetAction, o
|
||||
return err
|
||||
}
|
||||
out.Host = in.Host
|
||||
out.Scheme = URIScheme(in.Scheme)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -2515,6 +2516,7 @@ func convert_v1beta3_HTTPGetAction_To_api_HTTPGetAction(in *HTTPGetAction, out *
|
||||
return err
|
||||
}
|
||||
out.Host = in.Host
|
||||
out.Scheme = api.URIScheme(in.Scheme)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@@ -522,6 +522,7 @@ func deepCopy_v1beta3_HTTPGetAction(in HTTPGetAction, out *HTTPGetAction, c *con
|
||||
return err
|
||||
}
|
||||
out.Host = in.Host
|
||||
out.Scheme = in.Scheme
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@@ -141,6 +141,9 @@ func addDefaultingFuncs() {
|
||||
if obj.Path == "" {
|
||||
obj.Path = "/"
|
||||
}
|
||||
if obj.Scheme == "" {
|
||||
obj.Scheme = URISchemeHTTP
|
||||
}
|
||||
},
|
||||
func(obj *NamespaceStatus) {
|
||||
if obj.Phase == "" {
|
||||
|
@@ -592,8 +592,20 @@ type HTTPGetAction struct {
|
||||
Port util.IntOrString `json:"port" description:"number or name of the port to access on the container; number must be in the range 1 to 65535; name must be a IANA_SVC_NAME"`
|
||||
// Optional: Host name to connect to, defaults to the pod IP.
|
||||
Host string `json:"host,omitempty" description:"hostname to connect to; defaults to pod IP"`
|
||||
// Optional: Scheme to use for connecting to the host, defaults to HTTP.
|
||||
Scheme URIScheme `json:"scheme,omitempty" description:"scheme to connect with, must be HTTP or HTTPS, defaults to HTTP"`
|
||||
}
|
||||
|
||||
// URIScheme identifies the scheme used for connection to a host for Get actions
|
||||
type URIScheme string
|
||||
|
||||
const (
|
||||
// URISchemeHTTP means that the scheme used will be http://
|
||||
URISchemeHTTP URIScheme = "HTTP"
|
||||
// URISchemeHTTPS means that the scheme used will be https://
|
||||
URISchemeHTTPS URIScheme = "HTTPS"
|
||||
)
|
||||
|
||||
// TCPSocketAction describes an action based on opening a socket
|
||||
type TCPSocketAction struct {
|
||||
// Required: Port to connect to.
|
||||
|
@@ -763,6 +763,10 @@ func validateHTTPGetAction(http *api.HTTPGetAction) errs.ValidationErrorList {
|
||||
} else if http.Port.Kind == util.IntstrString && !util.IsValidPortName(http.Port.StrVal) {
|
||||
allErrors = append(allErrors, errs.NewFieldInvalid("port", http.Port.StrVal, portNameErrorMsg))
|
||||
}
|
||||
supportedSchemes := util.NewStringSet(string(api.URISchemeHTTP), string(api.URISchemeHTTPS))
|
||||
if !supportedSchemes.Has(string(http.Scheme)) {
|
||||
allErrors = append(allErrors, errs.NewFieldInvalid("scheme", http.Scheme, fmt.Sprintf("must be one of %v", supportedSchemes.List())))
|
||||
}
|
||||
return allErrors
|
||||
}
|
||||
|
||||
|
@@ -713,9 +713,9 @@ func TestValidateProbe(t *testing.T) {
|
||||
func TestValidateHandler(t *testing.T) {
|
||||
successCases := []api.Handler{
|
||||
{Exec: &api.ExecAction{Command: []string{"echo"}}},
|
||||
{HTTPGet: &api.HTTPGetAction{Path: "/", Port: util.NewIntOrStringFromInt(1), Host: ""}},
|
||||
{HTTPGet: &api.HTTPGetAction{Path: "/foo", Port: util.NewIntOrStringFromInt(65535), Host: "host"}},
|
||||
{HTTPGet: &api.HTTPGetAction{Path: "/", Port: util.NewIntOrStringFromString("port"), Host: ""}},
|
||||
{HTTPGet: &api.HTTPGetAction{Path: "/", Port: util.NewIntOrStringFromInt(1), Host: "", Scheme: "HTTP"}},
|
||||
{HTTPGet: &api.HTTPGetAction{Path: "/foo", Port: util.NewIntOrStringFromInt(65535), Host: "host", Scheme: "HTTP"}},
|
||||
{HTTPGet: &api.HTTPGetAction{Path: "/", Port: util.NewIntOrStringFromString("port"), Host: "", Scheme: "HTTP"}},
|
||||
}
|
||||
for _, h := range successCases {
|
||||
if errs := validateHandler(&h); len(errs) != 0 {
|
||||
|
Reference in New Issue
Block a user