diff --git a/cmd/kubeadm/app/cmd/phases/bootstraptoken.go b/cmd/kubeadm/app/cmd/phases/bootstraptoken.go index fb216125636..02e602cc03e 100644 --- a/cmd/kubeadm/app/cmd/phases/bootstraptoken.go +++ b/cmd/kubeadm/app/cmd/phases/bootstraptoken.go @@ -26,6 +26,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" clientset "k8s.io/client-go/kubernetes" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" + bootstraputil "k8s.io/client-go/tools/bootstrap/token/util" kubeadmapiext "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha1" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" @@ -38,7 +40,6 @@ import ( kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig" "k8s.io/kubernetes/cmd/kubeadm/app/util/pubkeypin" "k8s.io/kubernetes/pkg/api/legacyscheme" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" "k8s.io/kubernetes/pkg/util/normalizer" ) @@ -327,7 +328,7 @@ func createBootstrapToken(client clientset.Interface, cfgPath string, cfg *kubea // validate any extra group names for _, group := range extraGroups { - if err := bootstrapapi.ValidateBootstrapGroupName(group); err != nil { + if err := bootstraputil.ValidateBootstrapGroupName(group); err != nil { return err } } diff --git a/cmd/kubeadm/app/cmd/token.go b/cmd/kubeadm/app/cmd/token.go index 87b8d077750..e9a65caf3a5 100644 --- a/cmd/kubeadm/app/cmd/token.go +++ b/cmd/kubeadm/app/cmd/token.go @@ -36,6 +36,8 @@ import ( "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/util/sets" clientset "k8s.io/client-go/kubernetes" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" + bootstraputil "k8s.io/client-go/tools/bootstrap/token/util" "k8s.io/client-go/tools/clientcmd" clientcertutil "k8s.io/client-go/util/cert" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" @@ -48,7 +50,6 @@ import ( "k8s.io/kubernetes/cmd/kubeadm/app/util/pubkeypin" tokenutil "k8s.io/kubernetes/cmd/kubeadm/app/util/token" api "k8s.io/kubernetes/pkg/apis/core" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" "k8s.io/kubernetes/pkg/printers" ) @@ -226,13 +227,13 @@ func RunCreateToken(out io.Writer, client clientset.Interface, token string, tok // validate any extra group names for _, group := range extraGroups { - if err := bootstrapapi.ValidateBootstrapGroupName(group); err != nil { + if err := bootstraputil.ValidateBootstrapGroupName(group); err != nil { return err } } // validate usages - if err := bootstrapapi.ValidateUsages(usages); err != nil { + if err := bootstraputil.ValidateUsages(usages); err != nil { return err } diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go index 390b8c5f1d8..a5e5e7ff0ff 100644 --- a/cmd/kubeadm/app/constants/constants.go +++ b/cmd/kubeadm/app/constants/constants.go @@ -25,7 +25,7 @@ import ( "time" "k8s.io/api/core/v1" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" "k8s.io/kubernetes/pkg/registry/core/service/ipallocator" "k8s.io/kubernetes/pkg/util/version" ) diff --git a/cmd/kubeadm/app/discovery/file/file.go b/cmd/kubeadm/app/discovery/file/file.go index 60d3d48d08b..c1cb537d5cd 100644 --- a/cmd/kubeadm/app/discovery/file/file.go +++ b/cmd/kubeadm/app/discovery/file/file.go @@ -23,11 +23,11 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" "k8s.io/client-go/tools/clientcmd" clientcmdapi "k8s.io/client-go/tools/clientcmd/api" "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" ) // RetrieveValidatedClusterInfo connects to the API Server and makes sure it can talk diff --git a/cmd/kubeadm/app/discovery/token/token.go b/cmd/kubeadm/app/discovery/token/token.go index 69dc3a94f9c..2079520a655 100644 --- a/cmd/kubeadm/app/discovery/token/token.go +++ b/cmd/kubeadm/app/discovery/token/token.go @@ -26,13 +26,13 @@ import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" "k8s.io/client-go/tools/clientcmd" clientcmdapi "k8s.io/client-go/tools/clientcmd/api" "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig" "k8s.io/kubernetes/cmd/kubeadm/app/util/pubkeypin" tokenutil "k8s.io/kubernetes/cmd/kubeadm/app/util/token" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" "k8s.io/kubernetes/pkg/controller/bootstrap" ) diff --git a/cmd/kubeadm/app/phases/bootstraptoken/clusterinfo/clusterinfo.go b/cmd/kubeadm/app/phases/bootstraptoken/clusterinfo/clusterinfo.go index b1295c8552f..9cf9b01a79d 100644 --- a/cmd/kubeadm/app/phases/bootstraptoken/clusterinfo/clusterinfo.go +++ b/cmd/kubeadm/app/phases/bootstraptoken/clusterinfo/clusterinfo.go @@ -24,11 +24,11 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apiserver/pkg/authentication/user" clientset "k8s.io/client-go/kubernetes" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" "k8s.io/client-go/tools/clientcmd" clientcmdapi "k8s.io/client-go/tools/clientcmd/api" "k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient" rbachelper "k8s.io/kubernetes/pkg/apis/rbac/v1" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" ) const ( diff --git a/cmd/kubeadm/app/phases/bootstraptoken/node/token.go b/cmd/kubeadm/app/phases/bootstraptoken/node/token.go index b033702c468..02f63b7ce51 100644 --- a/cmd/kubeadm/app/phases/bootstraptoken/node/token.go +++ b/cmd/kubeadm/app/phases/bootstraptoken/node/token.go @@ -25,8 +25,9 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" clientset "k8s.io/client-go/kubernetes" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" + bootstraputil "k8s.io/client-go/tools/bootstrap/token/util" tokenutil "k8s.io/kubernetes/cmd/kubeadm/app/util/token" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" ) const tokenCreateRetries = 5 @@ -115,7 +116,7 @@ func encodeTokenSecretData(tokenID, tokenSecret string, duration time.Duration, } // validate usages - if err := bootstrapapi.ValidateUsages(usages); err != nil { + if err := bootstraputil.ValidateUsages(usages); err != nil { return nil, err } for _, usage := range usages { diff --git a/pkg/bootstrap/api/BUILD b/pkg/bootstrap/api/BUILD deleted file mode 100644 index f72517262a5..00000000000 --- a/pkg/bootstrap/api/BUILD +++ /dev/null @@ -1,41 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -load( - "@io_bazel_rules_go//go:def.bzl", - "go_library", - "go_test", -) - -go_library( - name = "go_default_library", - srcs = [ - "doc.go", - "helpers.go", - "types.go", - ], - importpath = "k8s.io/kubernetes/pkg/bootstrap/api", - deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - ], -) - -filegroup( - name = "package-srcs", - srcs = glob(["**"]), - tags = ["automanaged"], - visibility = ["//visibility:private"], -) - -filegroup( - name = "all-srcs", - srcs = [":package-srcs"], - tags = ["automanaged"], -) - -go_test( - name = "go_default_test", - srcs = ["helpers_test.go"], - embed = [":go_default_library"], - importpath = "k8s.io/kubernetes/pkg/bootstrap/api", -) diff --git a/pkg/bootstrap/api/OWNERS b/pkg/bootstrap/api/OWNERS deleted file mode 100644 index 8a2f5b5915b..00000000000 --- a/pkg/bootstrap/api/OWNERS +++ /dev/null @@ -1,5 +0,0 @@ -approvers: -- jbeda -- luxas -reviewers: -- mattmoyer diff --git a/pkg/controller/bootstrap/bootstrapsigner.go b/pkg/controller/bootstrap/bootstrapsigner.go index 5db870aa49d..7677a677859 100644 --- a/pkg/controller/bootstrap/bootstrapsigner.go +++ b/pkg/controller/bootstrap/bootstrapsigner.go @@ -31,10 +31,10 @@ import ( informers "k8s.io/client-go/informers/core/v1" clientset "k8s.io/client-go/kubernetes" corelisters "k8s.io/client-go/listers/core/v1" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" api "k8s.io/kubernetes/pkg/apis/core" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/util/metrics" ) diff --git a/pkg/controller/bootstrap/bootstrapsigner_test.go b/pkg/controller/bootstrap/bootstrapsigner_test.go index 15fab2e26b0..b7b88d5b9c5 100644 --- a/pkg/controller/bootstrap/bootstrapsigner_test.go +++ b/pkg/controller/bootstrap/bootstrapsigner_test.go @@ -28,8 +28,8 @@ import ( coreinformers "k8s.io/client-go/informers/core/v1" "k8s.io/client-go/kubernetes/fake" core "k8s.io/client-go/testing" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" api "k8s.io/kubernetes/pkg/apis/core" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" "k8s.io/kubernetes/pkg/controller" ) diff --git a/pkg/controller/bootstrap/common_test.go b/pkg/controller/bootstrap/common_test.go index a61ebc21882..04c4d0edee4 100644 --- a/pkg/controller/bootstrap/common_test.go +++ b/pkg/controller/bootstrap/common_test.go @@ -24,8 +24,8 @@ import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" core "k8s.io/client-go/testing" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" "k8s.io/kubernetes/pkg/apis/core/helper" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" ) func newTokenSecret(tokenID, tokenSecret string) *v1.Secret { diff --git a/pkg/controller/bootstrap/tokencleaner.go b/pkg/controller/bootstrap/tokencleaner.go index 34a91e492c8..d39582b2fb9 100644 --- a/pkg/controller/bootstrap/tokencleaner.go +++ b/pkg/controller/bootstrap/tokencleaner.go @@ -29,10 +29,10 @@ import ( coreinformers "k8s.io/client-go/informers/core/v1" clientset "k8s.io/client-go/kubernetes" corelisters "k8s.io/client-go/listers/core/v1" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" api "k8s.io/kubernetes/pkg/apis/core" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/util/metrics" ) diff --git a/pkg/controller/bootstrap/util.go b/pkg/controller/bootstrap/util.go index b0f1aecc7f8..d679fb17cc0 100644 --- a/pkg/controller/bootstrap/util.go +++ b/pkg/controller/bootstrap/util.go @@ -23,7 +23,7 @@ import ( "github.com/golang/glog" "k8s.io/api/core/v1" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" ) var namePattern = `^` + regexp.QuoteMeta(bootstrapapi.BootstrapTokenSecretPrefix) + `([a-z0-9]{6})$` diff --git a/pkg/controller/bootstrap/util_test.go b/pkg/controller/bootstrap/util_test.go index 2899c68737b..d02cab61e08 100644 --- a/pkg/controller/bootstrap/util_test.go +++ b/pkg/controller/bootstrap/util_test.go @@ -24,7 +24,7 @@ import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" ) const ( diff --git a/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap.go b/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap.go index 90a0137489d..a0a615886b7 100644 --- a/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap.go +++ b/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap.go @@ -31,8 +31,9 @@ import ( "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apiserver/pkg/authentication/user" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" + bootstraputil "k8s.io/client-go/tools/bootstrap/token/util" api "k8s.io/kubernetes/pkg/apis/core" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" "k8s.io/kubernetes/pkg/client/listers/core/internalversion" ) @@ -149,7 +150,7 @@ func (t *TokenAuthenticator) AuthenticateToken(token string) (user.Info, bool, e }, true, nil } -// Copied from k8s.io/kubernetes/pkg/bootstrap/api +// Copied from k8s.io/client-go/tools/bootstrap/token/api func getSecretString(secret *api.Secret, key string) string { if secret.Data == nil { return "" @@ -160,7 +161,7 @@ func getSecretString(secret *api.Secret, key string) string { return "" } -// Copied from k8s.io/kubernetes/pkg/bootstrap/api +// Copied from k8s.io/client-go/tools/bootstrap/token/api func isSecretExpired(secret *api.Secret) bool { expiration := getSecretString(secret, bootstrapapi.BootstrapTokenExpirationKey) if len(expiration) > 0 { @@ -209,7 +210,7 @@ func getGroups(secret *api.Secret) ([]string, error) { // validate the names of the extra groups for _, group := range strings.Split(extraGroupsString, ",") { - if err := bootstrapapi.ValidateBootstrapGroupName(group); err != nil { + if err := bootstraputil.ValidateBootstrapGroupName(group); err != nil { return nil, err } groups.Insert(group) diff --git a/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap_test.go b/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap_test.go index f319cc8667b..99bf7fc16c5 100644 --- a/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap_test.go +++ b/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap_test.go @@ -25,8 +25,8 @@ import ( "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apiserver/pkg/authentication/user" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" api "k8s.io/kubernetes/pkg/apis/core" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" ) type lister struct { diff --git a/pkg/bootstrap/api/doc.go b/staging/src/k8s.io/client-go/tools/bootstrap/token/api/doc.go similarity index 92% rename from pkg/bootstrap/api/doc.go rename to staging/src/k8s.io/client-go/tools/bootstrap/token/api/doc.go index 9fed79198db..72738711769 100644 --- a/pkg/bootstrap/api/doc.go +++ b/staging/src/k8s.io/client-go/tools/bootstrap/token/api/doc.go @@ -17,4 +17,4 @@ limitations under the License. // Package api (pkg/bootstrap/api) contains constants and types needed for // bootstrap tokens as maintained by the BootstrapSigner and TokenCleaner // controllers (in pkg/controller/bootstrap) -package api // import "k8s.io/kubernetes/pkg/bootstrap/api" +package api // import "k8s.io/client-go/tools/bootstrap/api" diff --git a/pkg/bootstrap/api/types.go b/staging/src/k8s.io/client-go/tools/bootstrap/token/api/types.go similarity index 100% rename from pkg/bootstrap/api/types.go rename to staging/src/k8s.io/client-go/tools/bootstrap/token/api/types.go diff --git a/pkg/bootstrap/api/helpers.go b/staging/src/k8s.io/client-go/tools/bootstrap/token/util/helpers.go similarity index 84% rename from pkg/bootstrap/api/helpers.go rename to staging/src/k8s.io/client-go/tools/bootstrap/token/util/helpers.go index c750cf75830..d28fd28f2ec 100644 --- a/pkg/bootstrap/api/helpers.go +++ b/staging/src/k8s.io/client-go/tools/bootstrap/token/util/helpers.go @@ -14,16 +14,17 @@ See the License for the specific language governing permissions and limitations under the License. */ -package api +package util import ( "fmt" "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/tools/bootstrap/token/api" "regexp" "strings" ) -var bootstrapGroupRegexp = regexp.MustCompile(`\A` + BootstrapGroupPattern + `\z`) +var bootstrapGroupRegexp = regexp.MustCompile(`\A` + api.BootstrapGroupPattern + `\z`) // ValidateBootstrapGroupName checks if the provided group name is a valid // bootstrap group name. Returns nil if valid or a validation error if invalid. @@ -32,12 +33,12 @@ func ValidateBootstrapGroupName(name string) error { if bootstrapGroupRegexp.Match([]byte(name)) { return nil } - return fmt.Errorf("bootstrap group %q is invalid (must match %s)", name, BootstrapGroupPattern) + return fmt.Errorf("bootstrap group %q is invalid (must match %s)", name, api.BootstrapGroupPattern) } // ValidateUsages validates that the passed in string are valid usage strings for bootstrap tokens. func ValidateUsages(usages []string) error { - validUsages := sets.NewString(KnownTokenUsages...) + validUsages := sets.NewString(api.KnownTokenUsages...) invalidUsages := sets.NewString() for _, usage := range usages { if !validUsages.Has(usage) { @@ -45,7 +46,7 @@ func ValidateUsages(usages []string) error { } } if len(invalidUsages) > 0 { - return fmt.Errorf("invalide bootstrap token usage string: %s, valid usage options: %s", strings.Join(invalidUsages.List(), ","), strings.Join(KnownTokenUsages, ",")) + return fmt.Errorf("invalide bootstrap token usage string: %s, valid usage options: %s", strings.Join(invalidUsages.List(), ","), strings.Join(api.KnownTokenUsages, ",")) } return nil } diff --git a/pkg/bootstrap/api/helpers_test.go b/staging/src/k8s.io/client-go/tools/bootstrap/token/util/helpers_test.go similarity index 99% rename from pkg/bootstrap/api/helpers_test.go rename to staging/src/k8s.io/client-go/tools/bootstrap/token/util/helpers_test.go index d1575f60840..915bf754026 100644 --- a/pkg/bootstrap/api/helpers_test.go +++ b/staging/src/k8s.io/client-go/tools/bootstrap/token/util/helpers_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package api +package util import ( "strings" diff --git a/test/e2e/lifecycle/bootstrap/bootstrap_signer.go b/test/e2e/lifecycle/bootstrap/bootstrap_signer.go index 8b2c7fd7411..a8cd3868a89 100644 --- a/test/e2e/lifecycle/bootstrap/bootstrap_signer.go +++ b/test/e2e/lifecycle/bootstrap/bootstrap_signer.go @@ -22,7 +22,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" clientset "k8s.io/client-go/kubernetes" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" "k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/lifecycle" ) diff --git a/test/e2e/lifecycle/bootstrap/bootstrap_token_cleaner.go b/test/e2e/lifecycle/bootstrap/bootstrap_token_cleaner.go index 0acab639b69..57adc11473c 100644 --- a/test/e2e/lifecycle/bootstrap/bootstrap_token_cleaner.go +++ b/test/e2e/lifecycle/bootstrap/bootstrap_token_cleaner.go @@ -24,7 +24,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" clientset "k8s.io/client-go/kubernetes" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" "k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/lifecycle" ) diff --git a/test/e2e/lifecycle/bootstrap/util.go b/test/e2e/lifecycle/bootstrap/util.go index 5b3e663af2b..8904c7a7272 100644 --- a/test/e2e/lifecycle/bootstrap/util.go +++ b/test/e2e/lifecycle/bootstrap/util.go @@ -27,7 +27,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" "k8s.io/kubernetes/test/e2e/framework" ) diff --git a/test/integration/auth/bootstraptoken_test.go b/test/integration/auth/bootstraptoken_test.go index 213e15ebda7..43b17c71128 100644 --- a/test/integration/auth/bootstraptoken_test.go +++ b/test/integration/auth/bootstraptoken_test.go @@ -27,8 +27,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apiserver/pkg/authentication/request/bearertoken" + bootstrapapi "k8s.io/client-go/tools/bootstrap/token/api" api "k8s.io/kubernetes/pkg/apis/core" - bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api" "k8s.io/kubernetes/plugin/pkg/admission/admit" "k8s.io/kubernetes/plugin/pkg/auth/authenticator/token/bootstrap" bootstraputil "k8s.io/kubernetes/test/e2e/lifecycle/bootstrap"