kubeadm: token generation must respect Kubernetes DNS labeling rules.

Refs kubernetes/kubeadm#104
This commit is contained in:
Paulo Pires 2017-01-16 19:11:37 +00:00
parent 394f93b921
commit 44b044ab0a
No known key found for this signature in database
GPG Key ID: F3F6ED5C522EAA71
3 changed files with 16 additions and 12 deletions

View File

@ -152,13 +152,13 @@ func RunCreateToken(out io.Writer, cmd *cobra.Command, tokenDuration time.Durati
}
func RunGenerateToken(out io.Writer) error {
d := &kubeadmapi.TokenDiscovery{}
err := kubeadmutil.GenerateToken(d)
td := &kubeadmapi.TokenDiscovery{}
err := kubeadmutil.GenerateToken(td)
if err != nil {
return err
}
fmt.Fprintln(out, kubeadmutil.BearerToken(d))
fmt.Fprintln(out, kubeadmutil.BearerToken(td))
return nil
}

View File

@ -51,6 +51,9 @@ func randBytes(length int) (string, error) {
return hex.EncodeToString(b), nil
}
// GenerateToken generates a new token with a token ID that is valid as a
// Kubernetes DNS label.
// For more info, see kubernetes/pkg/util/validation/validation.go.
func GenerateToken(d *kubeadmapi.TokenDiscovery) error {
tokenID, err := randBytes(TokenIDBytes)
if err != nil {
@ -62,8 +65,8 @@ func GenerateToken(d *kubeadmapi.TokenDiscovery) error {
return err
}
d.ID = tokenID
d.Secret = token
d.ID = strings.ToLower(tokenID)
d.Secret = strings.ToLower(token)
return nil
}

View File

@ -41,14 +41,15 @@ func TestTokenParse(t *testing.T) {
}
func TestGenerateToken(t *testing.T) {
var cfg kubeadmapi.TokenDiscovery
GenerateToken(&cfg)
if len(cfg.ID) != 6 {
t.Errorf("failed GenerateToken first part length:\n\texpected: 6\n\t actual: %d", len(cfg.ID))
td := &kubeadmapi.TokenDiscovery{}
if err := GenerateToken(td); err != nil {
t.Fatalf("GenerateToken returned an unexpected error: %+v", err)
}
if len(cfg.Secret) != 16 {
t.Errorf("failed GenerateToken first part length:\n\texpected: 16\n\t actual: %d", len(cfg.Secret))
if len(td.ID) != 6 {
t.Errorf("failed GenerateToken first part length:\n\texpected: 6\n\t actual: %d", len(td.ID))
}
if len(td.Secret) != 16 {
t.Errorf("failed GenerateToken second part length:\n\texpected: 16\n\t actual: %d", len(td.Secret))
}
}