Search code examples
kuberneteskubernetes-apiserver

Which API Group in k8s


How do I determine which apiGroup any given resource belongs in?

kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  namespace: default
  name: thing
rules:
- apiGroups: ["<wtf goes here>"]
  resources: ["deployments"]
  verbs: ["get", "list"]
  resourceNames: []

Solution

  • To get API resources - supported by your Kubernetes cluster:

     kubectl api-resources -o wide
    
    example:
    NAME                              SHORTNAMES   APIGROUP                       NAMESPACED   KIND                             VERBS
    deployments                       deploy       apps                           true         Deployment                   [create delete deletecollection get list patch update watch]
    deployments                       deploy       extensions                     true         Deployment                   [create delete deletecollection get list patch update watch]
    

    To get API versions - supported by your Kubernetes cluster:

    kubectl api-versions
    

    You can verify f.e. deployment:

    kubectl explain deploy 
    
    KIND:     Deployment
    VERSION:  extensions/v1beta1
    
    DESCRIPTION:
         DEPRECATED - This group version of Deployment is deprecated by
         apps/v1beta2/Deployment.
    

    Furthermore you can investigate with api-version:

    kubectl explain deploy --api-version apps/v1
    

    Shortly you an specify in you apiGroups like:

    apiGroups: ["extensions", "apps"]
    

    You can also configure those settings for your cluster using (for example to test it will work with next 1.16 release) by passing options into --runtime-config in kube-apiserver.

    Additional resources: