mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-08-12 13:53:30 +00:00
TRA-3903 better health endpoint for daemon mode (#471)
* Update main.go, status_controller.go, and 2 more files... * Update status_controller.go and mizuTapperSyncer.go
This commit is contained in:
parent
763f72a640
commit
89836d8d75
@ -459,7 +459,7 @@ func startMizuTapperSyncer(ctx context.Context) (*kubernetes.MizuTapperSyncer, e
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
logger.Log.Fatalf("fatal tap syncer error: %v", syncerErr)
|
logger.Log.Fatalf("fatal tap syncer error: %v", syncerErr)
|
||||||
case _, ok := <-tapperSyncer.TapPodChangesOut:
|
case tapPodChangeEvent, ok := <-tapperSyncer.TapPodChangesOut:
|
||||||
if !ok {
|
if !ok {
|
||||||
logger.Log.Debug("mizuTapperSyncer pod changes channel closed, ending listener loop")
|
logger.Log.Debug("mizuTapperSyncer pod changes channel closed, ending listener loop")
|
||||||
return
|
return
|
||||||
@ -472,6 +472,7 @@ func startMizuTapperSyncer(ctx context.Context) (*kubernetes.MizuTapperSyncer, e
|
|||||||
}
|
}
|
||||||
api.BroadcastToBrowserClients(serializedTapStatus)
|
api.BroadcastToBrowserClients(serializedTapStatus)
|
||||||
providers.TapStatus.Pods = tapStatus.Pods
|
providers.TapStatus.Pods = tapStatus.Pods
|
||||||
|
providers.ExpectedTapperAmount = tapPodChangeEvent.ExpectedTapperAmount
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
logger.Log.Debug("mizuTapperSyncer event listener loop exiting due to context done")
|
logger.Log.Debug("mizuTapperSyncer event listener loop exiting due to context done")
|
||||||
return
|
return
|
||||||
|
@ -2,7 +2,9 @@ package controllers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"mizuserver/pkg/api"
|
"mizuserver/pkg/api"
|
||||||
|
"mizuserver/pkg/config"
|
||||||
"mizuserver/pkg/holder"
|
"mizuserver/pkg/holder"
|
||||||
"mizuserver/pkg/providers"
|
"mizuserver/pkg/providers"
|
||||||
"mizuserver/pkg/up9"
|
"mizuserver/pkg/up9"
|
||||||
@ -15,6 +17,13 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func HealthCheck(c *gin.Context) {
|
func HealthCheck(c *gin.Context) {
|
||||||
|
if config.Config.DaemonMode {
|
||||||
|
if providers.ExpectedTapperAmount != providers.TappersCount {
|
||||||
|
c.JSON(http.StatusInternalServerError, fmt.Sprintf("expecting more tappers than are actually connected (%d expected, %d connected)", providers.ExpectedTapperAmount, providers.TappersCount))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
response := shared.HealthResponse{
|
response := shared.HealthResponse{
|
||||||
TapStatus: providers.TapStatus,
|
TapStatus: providers.TapStatus,
|
||||||
TappersCount: providers.TappersCount,
|
TappersCount: providers.TappersCount,
|
||||||
|
@ -19,7 +19,7 @@ var (
|
|||||||
TapStatus shared.TapStatus
|
TapStatus shared.TapStatus
|
||||||
authStatus *models.AuthStatus
|
authStatus *models.AuthStatus
|
||||||
RecentTLSLinks = cache.New(tlsLinkRetainmentTime, tlsLinkRetainmentTime)
|
RecentTLSLinks = cache.New(tlsLinkRetainmentTime, tlsLinkRetainmentTime)
|
||||||
|
ExpectedTapperAmount = -1 //only relevant in daemon mode as cli manages tappers otherwise
|
||||||
tappersCountLock = sync.Mutex{}
|
tappersCountLock = sync.Mutex{}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ const updateTappersDelay = 5 * time.Second
|
|||||||
type TappedPodChangeEvent struct {
|
type TappedPodChangeEvent struct {
|
||||||
Added []core.Pod
|
Added []core.Pod
|
||||||
Removed []core.Pod
|
Removed []core.Pod
|
||||||
|
ExpectedTapperAmount int
|
||||||
}
|
}
|
||||||
|
|
||||||
// MizuTapperSyncer uses a k8s pod watch to update tapper daemonsets when targeted pods are removed or created
|
// MizuTapperSyncer uses a k8s pod watch to update tapper daemonsets when targeted pods are removed or created
|
||||||
@ -28,6 +29,7 @@ type MizuTapperSyncer struct {
|
|||||||
kubernetesProvider *Provider
|
kubernetesProvider *Provider
|
||||||
TapPodChangesOut chan TappedPodChangeEvent
|
TapPodChangesOut chan TappedPodChangeEvent
|
||||||
ErrorOut chan K8sTapManagerError
|
ErrorOut chan K8sTapManagerError
|
||||||
|
nodeToTappedPodIPMap map[string][]string
|
||||||
}
|
}
|
||||||
|
|
||||||
type TapperSyncerConfig struct {
|
type TapperSyncerConfig struct {
|
||||||
@ -160,9 +162,11 @@ func (tapperSyncer *MizuTapperSyncer) updateCurrentlyTappedPods() (err error, ch
|
|||||||
}
|
}
|
||||||
if len(addedPods) > 0 || len(removedPods) > 0 {
|
if len(addedPods) > 0 || len(removedPods) > 0 {
|
||||||
tapperSyncer.CurrentlyTappedPods = podsToTap
|
tapperSyncer.CurrentlyTappedPods = podsToTap
|
||||||
|
tapperSyncer.nodeToTappedPodIPMap = GetNodeHostToTappedPodIpsMap(tapperSyncer.CurrentlyTappedPods)
|
||||||
tapperSyncer.TapPodChangesOut <- TappedPodChangeEvent{
|
tapperSyncer.TapPodChangesOut <- TappedPodChangeEvent{
|
||||||
Added: addedPods,
|
Added: addedPods,
|
||||||
Removed: removedPods,
|
Removed: removedPods,
|
||||||
|
ExpectedTapperAmount: len(tapperSyncer.nodeToTappedPodIPMap),
|
||||||
}
|
}
|
||||||
return nil, true
|
return nil, true
|
||||||
}
|
}
|
||||||
@ -171,9 +175,7 @@ func (tapperSyncer *MizuTapperSyncer) updateCurrentlyTappedPods() (err error, ch
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (tapperSyncer *MizuTapperSyncer) updateMizuTappers() error {
|
func (tapperSyncer *MizuTapperSyncer) updateMizuTappers() error {
|
||||||
nodeToTappedPodIPMap := GetNodeHostToTappedPodIpsMap(tapperSyncer.CurrentlyTappedPods)
|
if len(tapperSyncer.nodeToTappedPodIPMap) > 0 {
|
||||||
|
|
||||||
if len(nodeToTappedPodIPMap) > 0 {
|
|
||||||
var serviceAccountName string
|
var serviceAccountName string
|
||||||
if tapperSyncer.config.MizuServiceAccountExists {
|
if tapperSyncer.config.MizuServiceAccountExists {
|
||||||
serviceAccountName = ServiceAccountName
|
serviceAccountName = ServiceAccountName
|
||||||
@ -188,7 +190,7 @@ func (tapperSyncer *MizuTapperSyncer) updateMizuTappers() error {
|
|||||||
tapperSyncer.config.AgentImage,
|
tapperSyncer.config.AgentImage,
|
||||||
TapperPodName,
|
TapperPodName,
|
||||||
fmt.Sprintf("%s.%s.svc.cluster.local", ApiServerPodName, tapperSyncer.config.MizuResourcesNamespace),
|
fmt.Sprintf("%s.%s.svc.cluster.local", ApiServerPodName, tapperSyncer.config.MizuResourcesNamespace),
|
||||||
nodeToTappedPodIPMap,
|
tapperSyncer.nodeToTappedPodIPMap,
|
||||||
serviceAccountName,
|
serviceAccountName,
|
||||||
tapperSyncer.config.TapperResources,
|
tapperSyncer.config.TapperResources,
|
||||||
tapperSyncer.config.ImagePullPolicy,
|
tapperSyncer.config.ImagePullPolicy,
|
||||||
@ -197,7 +199,7 @@ func (tapperSyncer *MizuTapperSyncer) updateMizuTappers() error {
|
|||||||
); err != nil {
|
); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logger.Log.Debugf("Successfully created %v tappers", len(nodeToTappedPodIPMap))
|
logger.Log.Debugf("Successfully created %v tappers", len(tapperSyncer.nodeToTappedPodIPMap))
|
||||||
} else {
|
} else {
|
||||||
if err := tapperSyncer.kubernetesProvider.RemoveDaemonSet(tapperSyncer.context, tapperSyncer.config.MizuResourcesNamespace, TapperDaemonSetName); err != nil {
|
if err := tapperSyncer.kubernetesProvider.RemoveDaemonSet(tapperSyncer.context, tapperSyncer.config.MizuResourcesNamespace, TapperDaemonSetName); err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
Reference in New Issue
Block a user