mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-05-07 16:18:40 +00:00
* initial tls tapper commit * add tls flag to mizu cli * support ssl_read_ex/ssl_write_ex * use hostproc to find libssl * auto discover tls processes * support libssl1.0 * recompile ebpf with old clang/llvm * Update tap/passive_tapper.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * upgrade ebpf go lib * handling big tls messages * fixing max buffer size in ebpf * remove unused import * fix linter issues * minor pr fixes * compile with old clang * fix cgroup file format * pr fixes + cgroup extract enhance * fix linter * adding indirect ebpf dep to agent go.mod * adding ebpf docker builder * minor pr fixes * add req resp matcher to dissect * rename ssl hooks to ssl hooks structs * move to alpine, use local copy of mizu instead of git, add readme * use global req resp mather for tls Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
96 lines
2.4 KiB
Go
96 lines
2.4 KiB
Go
package kubernetes
|
|
|
|
import (
|
|
"regexp"
|
|
|
|
"github.com/up9inc/mizu/shared"
|
|
core "k8s.io/api/core/v1"
|
|
v1 "k8s.io/api/core/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
)
|
|
|
|
func GetNodeHostToTappedPodsMap(tappedPods []core.Pod) map[string][]core.Pod {
|
|
nodeToTappedPodMap := make(map[string][]core.Pod)
|
|
for _, pod := range tappedPods {
|
|
minimizedPod := getMinimizedPod(pod)
|
|
|
|
existingList := nodeToTappedPodMap[pod.Spec.NodeName]
|
|
if existingList == nil {
|
|
nodeToTappedPodMap[pod.Spec.NodeName] = []core.Pod{minimizedPod}
|
|
} else {
|
|
nodeToTappedPodMap[pod.Spec.NodeName] = append(nodeToTappedPodMap[pod.Spec.NodeName], minimizedPod)
|
|
}
|
|
}
|
|
return nodeToTappedPodMap
|
|
}
|
|
|
|
func getMinimizedPod(fullPod core.Pod) core.Pod {
|
|
return core.Pod{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: fullPod.Name,
|
|
},
|
|
Status: v1.PodStatus{
|
|
PodIP: fullPod.Status.PodIP,
|
|
ContainerStatuses: getMinimizedContainerStatuses(fullPod),
|
|
},
|
|
}
|
|
}
|
|
|
|
func getMinimizedContainerStatuses(fullPod core.Pod) []v1.ContainerStatus {
|
|
result := make([]v1.ContainerStatus, len(fullPod.Status.ContainerStatuses))
|
|
|
|
for i, container := range fullPod.Status.ContainerStatuses {
|
|
result[i] = v1.ContainerStatus{
|
|
ContainerID: container.ContainerID,
|
|
}
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func excludeMizuPods(pods []core.Pod) []core.Pod {
|
|
mizuPrefixRegex := regexp.MustCompile("^" + MizuResourcesPrefix)
|
|
|
|
nonMizuPods := make([]core.Pod, 0)
|
|
for _, pod := range pods {
|
|
if !mizuPrefixRegex.MatchString(pod.Name) {
|
|
nonMizuPods = append(nonMizuPods, pod)
|
|
}
|
|
}
|
|
|
|
return nonMizuPods
|
|
}
|
|
|
|
func getPodArrayDiff(oldPods []core.Pod, newPods []core.Pod) (added []core.Pod, removed []core.Pod) {
|
|
added = getMissingPods(newPods, oldPods)
|
|
removed = getMissingPods(oldPods, newPods)
|
|
|
|
return added, removed
|
|
}
|
|
|
|
//returns pods present in pods1 array and missing in pods2 array
|
|
func getMissingPods(pods1 []core.Pod, pods2 []core.Pod) []core.Pod {
|
|
missingPods := make([]core.Pod, 0)
|
|
for _, pod1 := range pods1 {
|
|
var found = false
|
|
for _, pod2 := range pods2 {
|
|
if pod1.UID == pod2.UID {
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
if !found {
|
|
missingPods = append(missingPods, pod1)
|
|
}
|
|
}
|
|
return missingPods
|
|
}
|
|
|
|
func GetPodInfosForPods(pods []core.Pod) []*shared.PodInfo {
|
|
podInfos := make([]*shared.PodInfo, 0)
|
|
for _, pod := range pods {
|
|
podInfos = append(podInfos, &shared.PodInfo{Name: pod.Name, Namespace: pod.Namespace, NodeName: pod.Spec.NodeName})
|
|
}
|
|
return podInfos
|
|
}
|