clientset
Overview
Usage
deployments, err := clientset.AppsV1().Deployments("namespace").List(ctx, metav1.ListOptions{})
clientsethas set of clients as the name indicates.- Get a specific client with
AppsV1()for a group version. - Get
deploymentwithDeployments()which has operation methods (e.g.Get,Update,Patch,List)
Example
List Pods with client-go v0.37.1. Run commands from the repository root. The default kubeconfig is ~/.kube/config; override it with -kubeconfig /path/to/config. Permission to list Pods across namespaces is required:
-
Get config
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) if err != nil { log.Fatal(err) } -
Init clientset with config
// NewForConfig creates a new Clientset for the given config. clientset, err := kubernetes.NewForConfig(config) if err != nil { log.Fatal(err) }Internally, call
xxxx.NewForConfigAndClientto get a client for each group version. -
Use the clientset to list Pods
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() pods, err := clientset.CoreV1().Pods(metav1.NamespaceAll).List(ctx, metav1.ListOptions{}) if err != nil { log.Fatal(err) }
go run ./contents/kubernetes-operator/client-go/clientset
[Pod 0] kube-system/coredns-f9fd979d6-5n4pw
[Pod 1] kube-system/coredns-f9fd979d6-cp5pl
[Pod 2] kube-system/etcd-docker-desktop
[Pod 3] kube-system/kube-apiserver-docker-desktop
[Pod 4] kube-system/kube-controller-manager-docker-desktop
[Pod 5] kube-system/kube-proxy-8qp9g
[Pod 6] kube-system/kube-scheduler-docker-desktop
[Pod 7] kube-system/storage-provisioner
[Pod 8] kube-system/vpnkit-controller
The printed namespace/name depends on your cluster. Installing a CRD does not add it to this Clientset: use generated clients, the dynamic client, or controller-runtime's Client for custom resources.