Commit 739f4ffe authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #41230 from xilabao/fix-token-validation-in-kubeadm

Automatic merge from submit-queue (batch tested with PRs 41342, 41257, 41295, 41367, 41230) fix token validation in kubeadm fix https://github.com/kubernetes/kubeadm/issues/157
parents 416c1a49 0e77e2b8
......@@ -71,6 +71,12 @@ func ValidateHTTPSDiscovery(c *kubeadm.HTTPSDiscovery, fldPath *field.Path) fiel
func ValidateTokenDiscovery(c *kubeadm.TokenDiscovery, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(c.ID) == 0 || len(c.Secret) == 0 {
allErrs = append(allErrs, field.Invalid(fldPath, nil, "token must be specific as <ID>:<Secret>"))
}
if len(c.Addresses) == 0 {
allErrs = append(allErrs, field.Invalid(fldPath, nil, "at least one address is required"))
}
return allErrs
}
......
......@@ -23,6 +23,29 @@ import (
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
)
func TestValidateTokenDiscovery(t *testing.T) {
var tests = []struct {
c *kubeadm.TokenDiscovery
f *field.Path
expected bool
}{
{&kubeadm.TokenDiscovery{ID: "772ef5", Secret: "6b6baab1d4a0a171", Addresses: []string{"192.168.122.100:9898"}}, nil, true},
{&kubeadm.TokenDiscovery{ID: "", Secret: "6b6baab1d4a0a171", Addresses: []string{"192.168.122.100:9898"}}, nil, false},
{&kubeadm.TokenDiscovery{ID: "772ef5", Secret: "", Addresses: []string{"192.168.122.100:9898"}}, nil, false},
{&kubeadm.TokenDiscovery{ID: "772ef5", Secret: "6b6baab1d4a0a171", Addresses: []string{}}, nil, false},
}
for _, rt := range tests {
err := ValidateTokenDiscovery(rt.c, rt.f).ToAggregate()
if (err == nil) != rt.expected {
t.Errorf(
"failed ValidateTokenDiscovery:\n\texpected: %t\n\t actual: %t",
rt.expected,
(err == nil),
)
}
}
}
func TestValidateServiceSubnet(t *testing.T) {
var tests = []struct {
s string
......
......@@ -33,6 +33,9 @@ import (
const discoveryRetryTimeout = 5 * time.Second
func RetrieveTrustedClusterInfo(d *kubeadmapi.TokenDiscovery) (*kubeadmapi.ClusterInfo, error) {
if len(d.Addresses) == 0 {
return nil, fmt.Errorf("the address is required to generate the requestURL")
}
requestURL := fmt.Sprintf("http://%s/cluster-info/v1/?token-id=%s", d.Addresses[0], d.ID)
req, err := http.NewRequest("GET", requestURL, nil)
if err != nil {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment