• Kubernetes Submit Queue's avatar
    Merge pull request #39280 from luxas/kubeadm_api_proto · 27850a79
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue (batch tested with PRs 39280, 37350, 39389, 39390, 39313)
    
    Refactor the certificate and kubeconfig code in the kubeadm binary into two phases
    
    **What this PR does / why we need it**:
    
    First stab at refactoring kubeadm code into logically independent phases.
    This defines two phases in the kubeadm init process:
     - certs: Takes some API values as input (the API will be refactored in a later PR), and generates certificates in the pki directory
     - kubeconfig: Takes the pki directory and the endpoint where the master is located and produces two kubeconfig files: admin.conf and kubelet.conf
    
    **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*:
    Required long-term for graduating our API
    
    **Special notes for your reviewer**:
    
    ### Old sample output
    The earlier kubeconfig code had a bug in it; see this example:
    _admin.conf:_
    ```yaml
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: <data>
        server: https://192.168.200.x:6443
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: admin
      name: admin@kubernetes
    - context:
        cluster: kubernetes
        user: kubelet
      name: kubelet@kubernetes
    current-context: admin@kubernetes
    kind: Config
    preferences: {}
    users:
    - name: admin
      user:
        client-certificate-data: <data>
        client-key-data: <data>
    - name: kubelet
      user:
        client-certificate-data: <data>
        client-key-data: <data>
    ```
    kubelet.conf:
    ```yaml
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: <data>
        server: https://192.168.200.x:6443
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: admin
      name: admin@kubernetes
    - context:
        cluster: kubernetes
        user: kubelet
      name: kubelet@kubernetes
    current-context: admin@kubernetes
    kind: Config
    preferences: {}
    users:
    - name: admin
      user:
        client-certificate-data: <data>
        client-key-data: <data>
    - name: kubelet
      user:
        client-certificate-data: <data>
        client-key-data: <data>
    ```
    ```console
    $ shasum /etc/kubernetes/*.conf
    2b22b25cc4c97e5619ece6c43badf42b87c4970a  /etc/kubernetes/admin.conf
    2b22b25cc4c97e5619ece6c43badf42b87c4970a  /etc/kubernetes/kubelet.conf
    ```
    
    #### New output
    admin.conf
    ```yaml
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: <data>
        server: https://192.168.200.x:6443
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: admin
      name: admin@kubernetes
    current-context: admin@kubernetes
    kind: Config
    preferences: {}
    users:
    - name: admin
      user:
        client-certificate-data: <data>
        client-key-data: <data>
    ```
    kubelet.conf
    ```yaml
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: <data>
        server: https://192.168.200.x:6443
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: kubelet
      name: kubelet@kubernetes
    current-context: kubelet@kubernetes
    kind: Config
    preferences: {}
    users:
    - name: kubelet
      user:
        client-certificate-data: <data>
        client-key-data: <data>
    ```
    
    **Release note**:
    
    ```release-note
    Refactor the certificate and kubeconfig code in the kubeadm binary into two phases
    ```
    
    PTAL @dgoodwin @jbeda @mikedanese @errordeveloper @pipejakob @lukemarsden
    27850a79
Name
Last commit
Last update
.github Loading commit data...
Godeps Loading commit data...
api Loading commit data...
build Loading commit data...
cluster Loading commit data...
cmd Loading commit data...
docs Loading commit data...
examples Loading commit data...
federation Loading commit data...
hack Loading commit data...
hooks Loading commit data...
logo Loading commit data...
pkg Loading commit data...
plugin Loading commit data...
staging Loading commit data...
test Loading commit data...
third_party Loading commit data...
translations Loading commit data...
vendor Loading commit data...
.gazelcfg.json Loading commit data...
.generated_docs Loading commit data...
.generated_files Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
BUILD.bazel Loading commit data...
CHANGELOG.md Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
Makefile.generated_files Loading commit data...
OWNERS Loading commit data...
OWNERS_ALIASES Loading commit data...
README.md Loading commit data...
Vagrantfile Loading commit data...
WORKSPACE Loading commit data...
code-of-conduct.md Loading commit data...
labels.yaml Loading commit data...