• Kubernetes Submit Queue's avatar
    Merge pull request #55689 from luksa/kubectl_explain_kind_version · 761fdeac
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue. 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>.
    
    Make kubectl explain print the Kind and APIVersion of the resource
    
    **What this PR does / why we need it**:
    Kubectl explain currently doesn't print out the Kind and APIversion of the resource being explained. When running `kubectl explain hpa.spec`, for example, there is no way of knowing whether you're looking at the `autoscaling/v1` or the `autoscaling/v2beta1` version. 
    Also, `kubectl explain` is often used as a reference when writing YAML/JSON object manifests. It allows you to look up everything except the API version. Currently, you either need to know the API Version of a resource by heart or look it up in the online API docs. 
    This PR fixes both problems by having `kubectl explain` print out the full Kind and APIVersion of the resource it is explaining.
    
    Here are a few examples of the new output:
    ```
    $ kubectl explain deploy
    KIND:     Deployment
    VERSION:  extensions/v1beta1
    
    DESCRIPTION:
    ...
    
    
    $ kubectl explain hpa.spec
    KIND:     HorizontalPodAutoscaler
    VERSION:  autoscaling/v1
    
    RESOURCE: spec <Object>
    
    DESCRIPTION:
    ...
    
    
    $ kubectl explain hpa.spec.maxReplicas
    KIND:     HorizontalPodAutoscaler
    VERSION:  autoscaling/v1
    
    FIELD:    maxReplicas <integer>
    
    DESCRIPTION:
    ...
    
    
    $ kubectl explain hpa.spec --recursive
    KIND:     HorizontalPodAutoscaler
    VERSION:  autoscaling/v1
    
    RESOURCE: spec <Object>
    
    DESCRIPTION:
         behaviour of autoscaler. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.
    
         specification of a horizontal pod autoscaler.
    
    FIELDS:
       maxReplicas	<integer>
       minReplicas	<integer>
       scaleTargetRef	<Object>
          apiVersion	<string>
          kind	<string>
          name	<string>
       targetCPUUtilizationPercentage	<integer>
    ```
    
    **Release note**:
    
    ```release-note
    Kubectl explain now prints out the Kind and API version of the resource being explained
    ```
    761fdeac
explain.go 2.06 KB