github.com/castai/kvisor@v1.7.1-0.20240516114728-b3572a2607b5/cmd/controller/kube/pod_logreader.go (about) 1 package kube 2 3 import ( 4 "context" 5 "fmt" 6 "io" 7 8 corev1 "k8s.io/api/core/v1" 9 "k8s.io/client-go/kubernetes" 10 ) 11 12 type PodLogProvider interface { 13 GetLogReader(ctx context.Context, podNs, podName string) (io.ReadCloser, error) 14 } 15 16 func NewPodLogReader(client kubernetes.Interface) PodLogProvider { 17 return &clientsetPodLogsReader{ 18 client: client, 19 } 20 } 21 22 type clientsetPodLogsReader struct { 23 client kubernetes.Interface 24 } 25 26 func (r clientsetPodLogsReader) GetLogReader(ctx context.Context, podNs, podName string) (io.ReadCloser, error) { 27 req := r.client.CoreV1().Pods(podNs).GetLogs(podName, &corev1.PodLogOptions{}) 28 podLogs, err := req.Stream(ctx) 29 if err != nil { 30 return nil, fmt.Errorf("error in opening stream: %w", err) 31 } 32 return podLogs, nil 33 }