How To Call Kubernetes API from Go - Types and Common Machinery
The official Kubernetes Go client comes loaded with high-level abstractions - Clientset, Informers, Cache, Scheme, Discovery, oh my! When I tried to use it without learning the moving parts first, I ran into an overwhelming amount of new concepts. It was an unpleasant experience, but more importantly, it worsened my ability to make informed decisions in the code.
So, I decided to unravel client-go
for myself by taking a thorough look at its components.
But where to start? Before dissecting client-go
itself, it's probably a good idea to understand its two main dependencies - k8s.io/api
and k8s.io/apimachinery
modules. It'll simplify the main task, but that's not the only benefit. These two modules were factored out for a reason - they can be used not only by clients but also on the server-side or by any other piece of software dealing with Kubernetes objects.
