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 { func RunGenerateToken(out io.Writer) error {
d := &kubeadmapi.TokenDiscovery{} td := &kubeadmapi.TokenDiscovery{}
err := kubeadmutil.GenerateToken(d) err := kubeadmutil.GenerateToken(td)
if err != nil { if err != nil {
return err return err
} }
fmt.Fprintln(out, kubeadmutil.BearerToken(d)) fmt.Fprintln(out, kubeadmutil.BearerToken(td))
return nil return nil
} }

View File

@ -51,6 +51,9 @@ func randBytes(length int) (string, error) {
return hex.EncodeToString(b), nil 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 { func GenerateToken(d *kubeadmapi.TokenDiscovery) error {
tokenID, err := randBytes(TokenIDBytes) tokenID, err := randBytes(TokenIDBytes)
if err != nil { if err != nil {
@ -62,8 +65,8 @@ func GenerateToken(d *kubeadmapi.TokenDiscovery) error {
return err return err
} }
d.ID = tokenID d.ID = strings.ToLower(tokenID)
d.Secret = token d.Secret = strings.ToLower(token)
return nil return nil
} }

View File

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