• 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
..
apiclient Loading commit data...
audit Loading commit data...
config Loading commit data...
dryrun Loading commit data...
etcd Loading commit data...
kubeconfig Loading commit data...
pubkeypin Loading commit data...
staticpod Loading commit data...
BUILD Loading commit data...
arguments.go Loading commit data...
arguments_test.go Loading commit data...
cgroupdriver.go Loading commit data...
cgroupdriver_test.go Loading commit data...
copy.go Loading commit data...
endpoint.go Loading commit data...
endpoint_test.go Loading commit data...
error.go Loading commit data...
error_test.go Loading commit data...
marshal.go Loading commit data...
marshal_test.go Loading commit data...
template.go Loading commit data...
template_test.go Loading commit data...
version.go Loading commit data...
version_test.go Loading commit data...