Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Understanding API Internals

Understanding API Internals

Nabarun Pal

June 26, 2021
Tweet

More Decks by Nabarun Pal

Other Decks in Technology

Transcript

  1. Understanding the Kubernetes API Internals
    By Nabarun Pal and Nikhita Raghunath

    View Slide

  2. 2
    Source: https://kubernetes.io/docs/concepts/overview/components/

    View Slide

  3. 3
    Group
    git.k8s.io/kubernetes/staging/src/k8s.io/api

    View Slide

  4. 4
    Version

    View Slide

  5. 5
    Kind

    View Slide

  6. 6
    Group-Version-Kind (GVK)
    apps.v1/Deployment
    Group Version Kind

    View Slide

  7. 7
    Group-Version-Resource (GVR)
    /apis/apps/v1/namespaces/{namespace}/deployments
    Group Version Resource
    /api/v1/namespaces/{namespace}/pods

    View Slide

  8. Relation between GVK and GVR
    8

    View Slide

  9. 9
    External Types v/s Internal Types

    View Slide

  10. 1
    0
    Codebase walkthrough
    To import the codebase walkthrough in VS Code, please see this
    gist.

    View Slide

  11. 11
    Conversion
    v1
    Storage Version

    View Slide

  12. 12
    Conversion
    v1
    v1beta1
    Storage Version
    Input Version

    View Slide

  13. 13
    Conversion
    v1
    v1beta2
    Storage Version
    Input Version

    View Slide

  14. 14
    Conversion
    v1
    v1beta3
    Storage Version
    Input Version

    View Slide

  15. 15
    Conversion
    v1
    v1beta1
    Storage Version
    Input Version

    View Slide

  16. 16
    Conversion
    v1
    internal
    v1beta1
    Storage Version
    “Hub” Version
    Input Version

    View Slide

  17. 17
    Conversion
    v1
    internal
    v1beta2
    Storage Version
    “Hub” Version
    Input Version

    View Slide

  18. 18
    Conversion
    v1
    internal
    v1beta3
    Storage Version
    “Hub” Version
    Input Version

    View Slide

  19. 19
    Conversion
    v1
    internal
    v1beta1
    Storage Version
    “Hub” Version
    Input Version

    View Slide

  20. 20
    Conversion and Defaulting
    v1
    internal
    v1beta1
    Storage Version
    “Hub” Version
    Input Version

    View Slide

  21. 21
    Decoding
    v1beta1
    Input Version
    internal
    “Hub” Version
    Serialization, Defaulting and Conversion

    View Slide

  22. 22
    Admission
    v1
    internal
    “Hub” Version
    Admission
    Mutating
    Validating

    View Slide

  23. 23
    Registry
    v1
    internal
    “Hub” Version
    Admission
    Mutating
    Validating
    Registry
    BeforeCreate
    Validation

    View Slide

  24. 24
    Encoding
    v1
    internal
    “Hub” Version
    Admission
    Mutating
    Validating
    Registry
    BeforeCreate
    Validation
    Encoding
    Conversion
    Defaulting
    Deserialization

    View Slide

  25. 2
    5
    Codebase walkthrough
    To import the codebase walkthrough in VS Code, please see this
    gist.

    View Slide

  26. 26
    CRDs and Aggregated Apiservers
    They follow the same pattern
    ● CRDs - staging/src/k8s.io/apiextensions-apiserver
    ● Aggregated Apiservers - staging/src/k8s.io/kube-aggregator
    (We won’t be covering them in detail in this talk)

    View Slide

  27. Thank you!
    2
    7
    Feedback Link

    View Slide