Skip to content

Commit 332d62a

Browse files
authored
Merge pull request kubernetes#76710 from rosti/introduce-v1beta2
kubeadm: Introduce v1beta2 config
2 parents 59a8682 + 9e1ac76 commit 332d62a

File tree

87 files changed

+3260
-220
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+3260
-220
lines changed

cmd/kubeadm/app/apis/kubeadm/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ filegroup(
4444
"//cmd/kubeadm/app/apis/kubeadm/fuzzer:all-srcs",
4545
"//cmd/kubeadm/app/apis/kubeadm/scheme:all-srcs",
4646
"//cmd/kubeadm/app/apis/kubeadm/v1beta1:all-srcs",
47+
"//cmd/kubeadm/app/apis/kubeadm/v1beta2:all-srcs",
4748
"//cmd/kubeadm/app/apis/kubeadm/validation:all-srcs",
4849
],
4950
tags = ["automanaged"],

cmd/kubeadm/app/apis/kubeadm/fuzzer/BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ go_library(
1212
importpath = "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/fuzzer",
1313
deps = [
1414
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
15-
"//cmd/kubeadm/app/apis/kubeadm/v1beta1:go_default_library",
15+
"//cmd/kubeadm/app/apis/kubeadm/v1beta2:go_default_library",
1616
"//cmd/kubeadm/app/constants:go_default_library",
1717
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
1818
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",

cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
2323
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
24-
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
24+
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
2525
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
2626
)
2727

@@ -56,18 +56,18 @@ func fuzzInitConfiguration(obj *kubeadm.InitConfiguration, c fuzz.Continue) {
5656
DNS: kubeadm.DNS{
5757
Type: kubeadm.CoreDNS,
5858
},
59-
CertificatesDir: v1beta1.DefaultCertificatesDir,
60-
ClusterName: v1beta1.DefaultClusterName,
59+
CertificatesDir: v1beta2.DefaultCertificatesDir,
60+
ClusterName: v1beta2.DefaultClusterName,
6161
Etcd: kubeadm.Etcd{
6262
Local: &kubeadm.LocalEtcd{
63-
DataDir: v1beta1.DefaultEtcdDataDir,
63+
DataDir: v1beta2.DefaultEtcdDataDir,
6464
},
6565
},
66-
ImageRepository: v1beta1.DefaultImageRepository,
67-
KubernetesVersion: v1beta1.DefaultKubernetesVersion,
66+
ImageRepository: v1beta2.DefaultImageRepository,
67+
KubernetesVersion: v1beta2.DefaultKubernetesVersion,
6868
Networking: kubeadm.Networking{
69-
ServiceSubnet: v1beta1.DefaultServicesSubnet,
70-
DNSDomain: v1beta1.DefaultServiceDNSDomain,
69+
ServiceSubnet: v1beta2.DefaultServicesSubnet,
70+
DNSDomain: v1beta2.DefaultServiceDNSDomain,
7171
},
7272
}
7373
// Adds the default bootstrap token to get the round working

cmd/kubeadm/app/apis/kubeadm/scheme/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ go_library(
88
deps = [
99
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
1010
"//cmd/kubeadm/app/apis/kubeadm/v1beta1:go_default_library",
11+
"//cmd/kubeadm/app/apis/kubeadm/v1beta2:go_default_library",
1112
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
1213
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
1314
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",

cmd/kubeadm/app/apis/kubeadm/scheme/scheme.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2525
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
2626
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
27+
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
2728
)
2829

2930
// Scheme is the runtime.Scheme to which all kubeadm api types are registered.
@@ -41,5 +42,6 @@ func init() {
4142
func AddToScheme(scheme *runtime.Scheme) {
4243
utilruntime.Must(kubeadm.AddToScheme(scheme))
4344
utilruntime.Must(v1beta1.AddToScheme(scheme))
44-
utilruntime.Must(scheme.SetVersionPriority(v1beta1.SchemeGroupVersion))
45+
utilruntime.Must(v1beta2.AddToScheme(scheme))
46+
utilruntime.Must(scheme.SetVersionPriority(v1beta2.SchemeGroupVersion))
4547
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
2+
3+
go_library(
4+
name = "go_default_library",
5+
srcs = [
6+
"bootstraptokenstring.go",
7+
"defaults.go",
8+
"defaults_unix.go",
9+
"defaults_windows.go",
10+
"doc.go",
11+
"register.go",
12+
"types.go",
13+
"zz_generated.conversion.go",
14+
"zz_generated.deepcopy.go",
15+
"zz_generated.defaults.go",
16+
],
17+
importpath = "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2",
18+
visibility = ["//visibility:public"],
19+
deps = [
20+
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
21+
"//cmd/kubeadm/app/constants:go_default_library",
22+
"//staging/src/k8s.io/api/core/v1:go_default_library",
23+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
24+
"//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library",
25+
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
26+
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
27+
"//staging/src/k8s.io/cluster-bootstrap/token/api:go_default_library",
28+
"//staging/src/k8s.io/cluster-bootstrap/token/util:go_default_library",
29+
"//vendor/github.com/pkg/errors:go_default_library",
30+
],
31+
)
32+
33+
go_test(
34+
name = "go_default_test",
35+
srcs = ["bootstraptokenstring_test.go"],
36+
embed = [":go_default_library"],
37+
deps = ["//vendor/github.com/pkg/errors:go_default_library"],
38+
)
39+
40+
filegroup(
41+
name = "package-srcs",
42+
srcs = glob(["**"]),
43+
tags = ["automanaged"],
44+
visibility = ["//visibility:private"],
45+
)
46+
47+
filegroup(
48+
name = "all-srcs",
49+
srcs = [":package-srcs"],
50+
tags = ["automanaged"],
51+
visibility = ["//visibility:public"],
52+
)
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/*
2+
Copyright 2019 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package v1beta2
18+
19+
import (
20+
"fmt"
21+
"strings"
22+
23+
"github.com/pkg/errors"
24+
25+
bootstrapapi "k8s.io/cluster-bootstrap/token/api"
26+
bootstraputil "k8s.io/cluster-bootstrap/token/util"
27+
)
28+
29+
// BootstrapTokenString is a token of the format abcdef.abcdef0123456789 that is used
30+
// for both validation of the practically of the API server from a joining node's point
31+
// of view and as an authentication method for the node in the bootstrap phase of
32+
// "kubeadm join". This token is and should be short-lived
33+
type BootstrapTokenString struct {
34+
ID string
35+
Secret string
36+
}
37+
38+
// MarshalJSON implements the json.Marshaler interface.
39+
func (bts BootstrapTokenString) MarshalJSON() ([]byte, error) {
40+
return []byte(fmt.Sprintf(`"%s"`, bts.String())), nil
41+
}
42+
43+
// UnmarshalJSON implements the json.Unmarshaller interface.
44+
func (bts *BootstrapTokenString) UnmarshalJSON(b []byte) error {
45+
// If the token is represented as "", just return quickly without an error
46+
if len(b) == 0 {
47+
return nil
48+
}
49+
50+
// Remove unnecessary " characters coming from the JSON parser
51+
token := strings.Replace(string(b), `"`, ``, -1)
52+
// Convert the string Token to a BootstrapTokenString object
53+
newbts, err := NewBootstrapTokenString(token)
54+
if err != nil {
55+
return err
56+
}
57+
bts.ID = newbts.ID
58+
bts.Secret = newbts.Secret
59+
return nil
60+
}
61+
62+
// String returns the string representation of the BootstrapTokenString
63+
func (bts BootstrapTokenString) String() string {
64+
if len(bts.ID) > 0 && len(bts.Secret) > 0 {
65+
return bootstraputil.TokenFromIDAndSecret(bts.ID, bts.Secret)
66+
}
67+
return ""
68+
}
69+
70+
// NewBootstrapTokenString converts the given Bootstrap Token as a string
71+
// to the BootstrapTokenString object used for serialization/deserialization
72+
// and internal usage. It also automatically validates that the given token
73+
// is of the right format
74+
func NewBootstrapTokenString(token string) (*BootstrapTokenString, error) {
75+
substrs := bootstraputil.BootstrapTokenRegexp.FindStringSubmatch(token)
76+
// TODO: Add a constant for the 3 value here, and explain better why it's needed (other than because how the regexp parsin works)
77+
if len(substrs) != 3 {
78+
return nil, errors.Errorf("the bootstrap token %q was not of the form %q", token, bootstrapapi.BootstrapTokenPattern)
79+
}
80+
81+
return &BootstrapTokenString{ID: substrs[1], Secret: substrs[2]}, nil
82+
}
83+
84+
// NewBootstrapTokenStringFromIDAndSecret is a wrapper around NewBootstrapTokenString
85+
// that allows the caller to specify the ID and Secret separately
86+
func NewBootstrapTokenStringFromIDAndSecret(id, secret string) (*BootstrapTokenString, error) {
87+
return NewBootstrapTokenString(bootstraputil.TokenFromIDAndSecret(id, secret))
88+
}

0 commit comments

Comments
 (0)