• Kubernetes Submit Queue's avatar
    Merge pull request #64408 from luxas/kubeadm_refactor_bt · c7b71ebc
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue (batch tested with PRs 64057, 63223, 64346, 64562, 64408). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.
    
    kubeadm: Refactor the Bootstrap Tokens usage in the API types
    
    **What this PR does / why we need it**:
    This PR:
     - Moves some common, generic Bootstrap Token helpers and constants from `k8s.io/kubernetes/cmd/kubeadm/app/util/token` to `k8s.io/client-go/tools/bootstrap/token/`
     - Breaks out the top-level Bootstrap Token fields to a dedicated `BootstrapToken` struct with helper functions.
     - Instead of representing the Bootstrap Token as a plain `string`, there is now a wrapper struct `BootstrapTokenString` that can marshal/unmarshal correctly and supports validation on create, and splitting up the full token in the ID/Secret parts automatically.
     - Makes kubeadm support multiple Bootstrap Tokens automatically by supporting a slice of `BootstrapToken` in the `MasterConfiguration` API object
     - Consolidates the place for kubeadm to create token-related flags in an `options` package
     - Supports automatic conversion from the `v1alpha1` to `v1alpha2` API
     - Adds support to set token expiration directly instead of setting a TTL (Expiration and TTL are mutually exclusive)
     - Removes the old `TokenDiscovery` struct we're not using anymore inside of kubeadm
    
    **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
    Related to https://github.com/kubernetes/community/pull/2131
    
    **Special notes for your reviewer**:
    This is work in progress. Please only review the first two commits for now.
    I will work on splitting up this PR in smaller chunks.
    I will also write unit tests tomorrow.
    
    **Release note**:
    
    ```release-note
    [action required] kubeadm: The Token-related fields in the `MasterConfiguration` object have now been refactored. Instead of the top-level `.Token`, `.TokenTTL`, `.TokenUsages`, `.TokenGroups` fields, there is now a `BootstrapTokens` slice of `BootstrapToken` objects that support the same features under the `.Token`, `.TTL`, `.Usages`, `.Groups` fields.
    ```
    @kubernetes/sig-cluster-lifecycle-pr-reviews @mattmoyer @liztio
    c7b71ebc
Name
Last commit
Last update
..
clicheck Loading commit data...
cloud-controller-manager Loading commit data...
controller-manager Loading commit data...
gendocs Loading commit data...
genkubedocs Loading commit data...
genman Loading commit data...
genswaggertypedocs Loading commit data...
genutils Loading commit data...
genyaml Loading commit data...
hyperkube Loading commit data...
importverifier Loading commit data...
kube-apiserver Loading commit data...
kube-controller-manager Loading commit data...
kube-proxy Loading commit data...
kube-scheduler Loading commit data...
kubeadm Loading commit data...
kubectl Loading commit data...
kubelet Loading commit data...
kubemark Loading commit data...
linkcheck Loading commit data...
BUILD Loading commit data...
OWNERS Loading commit data...