51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package k8s
|
|
|
|
import (
|
|
"context"
|
|
|
|
"k8s.io/client-go/kubernetes"
|
|
"k8s.io/client-go/rest"
|
|
)
|
|
|
|
type Client struct {
|
|
clientset *kubernetes.Clientset
|
|
}
|
|
|
|
func NewClient() (*Client, error) {
|
|
config, err := rest.InClusterConfig()
|
|
if err != nil {
|
|
// Fall back to out-of-cluster config for local development
|
|
// config, err = clientcmd.BuildConfigFromFlags("", filepath.Join(home, ".kube", "config"))
|
|
// if err != nil {
|
|
// return nil, err
|
|
// }
|
|
}
|
|
|
|
clientset, err := kubernetes.NewForConfig(config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &Client{
|
|
clientset: clientset,
|
|
}, nil
|
|
}
|
|
|
|
func (c *Client) Clientset() *kubernetes.Clientset {
|
|
return c.clientset
|
|
}
|
|
|
|
func (c *Client) GetPods(ctx context.Context, namespace string) ([]v1.Pod, error) {
|
|
pods, err := c.clientset.CoreV1().Pods(namespace).List(ctx, metav1.ListOptions{})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return pods.Items, nil
|
|
}
|
|
|
|
func (c *Client) WatchPods(ctx context.Context, namespace string, resourceVersion string) (watch.Interface, error) {
|
|
return c.clientset.CoreV1().Pods(namespace).Watch(ctx, metav1.ListOptions{
|
|
ResourceVersion: resourceVersion,
|
|
})
|
|
}
|