mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-06-24 15:24:17 +00:00
Fixed standalone config, small refactor (#589)
This commit is contained in:
parent
833d08bb40
commit
b88bdb90f6
@ -50,7 +50,9 @@ func PostTapConfig(c *gin.Context) {
|
|||||||
c.JSON(http.StatusInternalServerError, err)
|
c.JSON(http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
|
||||||
if _, err := startMizuTapperSyncer(ctx, kubernetesProvider, tappedNamespaces, *podRegex, []string{}, tapApi.TrafficFilteringOptions{}, false); err != nil {
|
if _, err := startMizuTapperSyncer(ctx, kubernetesProvider, tappedNamespaces, *podRegex, []string{}, tapApi.TrafficFilteringOptions{}, false); err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, err)
|
c.JSON(http.StatusInternalServerError, err)
|
||||||
cancel()
|
cancel()
|
||||||
@ -69,25 +71,27 @@ func GetTapConfig(c *gin.Context) {
|
|||||||
c.JSON(http.StatusInternalServerError, err)
|
c.JSON(http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
namespaces, err := kubernetesProvider.ListAllNamespaces(ctx)
|
namespaces, err := kubernetesProvider.ListAllNamespaces(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, err)
|
c.JSON(http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tappedNamespaces := make(map[string]bool)
|
||||||
for _, namespace := range namespaces {
|
for _, namespace := range namespaces {
|
||||||
if namespace.Name == config.Config.MizuResourcesNamespace {
|
if namespace.Name == config.Config.MizuResourcesNamespace {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, ok := globalTapConfig.TappedNamespaces[namespace.Name]; !ok {
|
tappedNamespaces[namespace.Name] = globalTapConfig.TappedNamespaces[namespace.Name]
|
||||||
globalTapConfig.TappedNamespaces[namespace.Name] = false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, globalTapConfig)
|
tapConfig := models.TapConfig{TappedNamespaces: tappedNamespaces}
|
||||||
|
c.JSON(http.StatusOK, tapConfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
func startMizuTapperSyncer(ctx context.Context, provider *kubernetes.Provider, targetNamespaces []string, podFilterRegex regexp.Regexp, ignoredUserAgents []string, mizuApiFilteringOptions tapApi.TrafficFilteringOptions, istio bool) (*kubernetes.MizuTapperSyncer, error) {
|
func startMizuTapperSyncer(ctx context.Context, provider *kubernetes.Provider, targetNamespaces []string, podFilterRegex regexp.Regexp, ignoredUserAgents []string, mizuApiFilteringOptions tapApi.TrafficFilteringOptions, istio bool) (*kubernetes.MizuTapperSyncer, error) {
|
||||||
|
@ -3,10 +3,12 @@ package routes
|
|||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"mizuserver/pkg/controllers"
|
"mizuserver/pkg/controllers"
|
||||||
|
"mizuserver/pkg/middlewares"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ConfigRoutes(ginApp *gin.Engine) {
|
func ConfigRoutes(ginApp *gin.Engine) {
|
||||||
routeGroup := ginApp.Group("/config")
|
routeGroup := ginApp.Group("/config")
|
||||||
|
routeGroup.Use(middlewares.RequiresAuth())
|
||||||
|
|
||||||
routeGroup.POST("/tapConfig", controllers.PostTapConfig)
|
routeGroup.POST("/tapConfig", controllers.PostTapConfig)
|
||||||
routeGroup.GET("/tapConfig", controllers.GetTapConfig)
|
routeGroup.GET("/tapConfig", controllers.GetTapConfig)
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
"github.com/up9inc/mizu/cli/config"
|
||||||
"github.com/up9inc/mizu/cli/telemetry"
|
"github.com/up9inc/mizu/cli/telemetry"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -13,6 +15,13 @@ var installCmd = &cobra.Command{
|
|||||||
runMizuInstall()
|
runMizuInstall()
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
PreRunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
if config.Config.IsNsRestrictedMode() {
|
||||||
|
return fmt.Errorf("install is not supported in restricted namespace mode")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -22,10 +22,6 @@ func runMizuInstall() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Config.IsNsRestrictedMode() {
|
|
||||||
logger.Log.Error("install is not supported in restricted namespace mode")
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
defer cancel() // cancel will be called when this function exits
|
defer cancel() // cancel will be called when this function exits
|
||||||
|
|
||||||
|
@ -125,7 +125,6 @@ func RunMizuTap() {
|
|||||||
|
|
||||||
logger.Log.Infof("Waiting for Mizu Agent to start...")
|
logger.Log.Infof("Waiting for Mizu Agent to start...")
|
||||||
if state.mizuServiceAccountExists, err = resources.CreateTapMizuResources(ctx, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig, config.Config.IsNsRestrictedMode(), config.Config.MizuResourcesNamespace, config.Config.AgentImage, getSyncEntriesConfig(), config.Config.Tap.MaxEntriesDBSizeBytes(), config.Config.Tap.ApiServerResources, config.Config.ImagePullPolicy(), config.Config.LogLevel()); err != nil {
|
if state.mizuServiceAccountExists, err = resources.CreateTapMizuResources(ctx, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig, config.Config.IsNsRestrictedMode(), config.Config.MizuResourcesNamespace, config.Config.AgentImage, getSyncEntriesConfig(), config.Config.Tap.MaxEntriesDBSizeBytes(), config.Config.Tap.ApiServerResources, config.Config.ImagePullPolicy(), config.Config.LogLevel()); err != nil {
|
||||||
logger.Log.Errorf("error %v", err)
|
|
||||||
var statusError *k8serrors.StatusError
|
var statusError *k8serrors.StatusError
|
||||||
if errors.As(err, &statusError) {
|
if errors.As(err, &statusError) {
|
||||||
if statusError.ErrStatus.Reason == metav1.StatusReasonAlreadyExists {
|
if statusError.ErrStatus.Reason == metav1.StatusReasonAlreadyExists {
|
||||||
|
@ -66,25 +66,29 @@ func CreateTapMizuResources(ctx context.Context, kubernetesProvider *kubernetes.
|
|||||||
}
|
}
|
||||||
|
|
||||||
func CreateInstallMizuResources(ctx context.Context, kubernetesProvider *kubernetes.Provider, serializedValidationRules string, serializedContract string, serializedMizuConfig string, isNsRestrictedMode bool, mizuResourcesNamespace string, agentImage string, syncEntriesConfig *shared.SyncEntriesConfig, maxEntriesDBSizeBytes int64, apiServerResources shared.Resources, imagePullPolicy core.PullPolicy, logLevel logging.Level, noPersistentVolumeClaim bool) error {
|
func CreateInstallMizuResources(ctx context.Context, kubernetesProvider *kubernetes.Provider, serializedValidationRules string, serializedContract string, serializedMizuConfig string, isNsRestrictedMode bool, mizuResourcesNamespace string, agentImage string, syncEntriesConfig *shared.SyncEntriesConfig, maxEntriesDBSizeBytes int64, apiServerResources shared.Resources, imagePullPolicy core.PullPolicy, logLevel logging.Level, noPersistentVolumeClaim bool) error {
|
||||||
if !isNsRestrictedMode {
|
if err := createMizuNamespace(ctx, kubernetesProvider, mizuResourcesNamespace); err != nil {
|
||||||
if err := createMizuNamespace(ctx, kubernetesProvider, mizuResourcesNamespace); err != nil {
|
return err
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
logger.Log.Infof("namespace/%v created", mizuResourcesNamespace)
|
||||||
|
|
||||||
if err := createMizuConfigmap(ctx, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig, mizuResourcesNamespace); err != nil {
|
if err := createMizuConfigmap(ctx, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig, mizuResourcesNamespace); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logger.Log.Infof("Created config map")
|
logger.Log.Infof("configmap/%v created", kubernetes.ConfigMapName)
|
||||||
|
|
||||||
_, err := createRBACIfNecessary(ctx, kubernetesProvider, isNsRestrictedMode, mizuResourcesNamespace, []string{"pods", "services", "endpoints", "namespaces"})
|
_, err := createRBACIfNecessary(ctx, kubernetesProvider, isNsRestrictedMode, mizuResourcesNamespace, []string{"pods", "services", "endpoints", "namespaces"})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
logger.Log.Infof("serviceaccount/%v created", kubernetes.ServiceAccountName)
|
||||||
|
logger.Log.Infof("clusterrole.rbac.authorization.k8s.io/%v created", kubernetes.ClusterRoleName)
|
||||||
|
logger.Log.Infof("clusterrolebinding.rbac.authorization.k8s.io/%v created", kubernetes.ClusterRoleBindingName)
|
||||||
|
|
||||||
if err := kubernetesProvider.CreateDaemonsetRBAC(ctx, mizuResourcesNamespace, kubernetes.ServiceAccountName, kubernetes.DaemonRoleName, kubernetes.DaemonRoleBindingName, mizu.RBACVersion); err != nil {
|
if err := kubernetesProvider.CreateDaemonsetRBAC(ctx, mizuResourcesNamespace, kubernetes.ServiceAccountName, kubernetes.DaemonRoleName, kubernetes.DaemonRoleBindingName, mizu.RBACVersion); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logger.Log.Infof("Created RBAC")
|
logger.Log.Infof("role.rbac.authorization.k8s.io/%v created", kubernetes.DaemonRoleName)
|
||||||
|
logger.Log.Infof("rolebinding.rbac.authorization.k8s.io/%v created", kubernetes.DaemonRoleBindingName)
|
||||||
|
|
||||||
serviceAccountName := kubernetes.ServiceAccountName
|
serviceAccountName := kubernetes.ServiceAccountName
|
||||||
opts := &kubernetes.ApiServerOptions{
|
opts := &kubernetes.ApiServerOptions{
|
||||||
@ -103,13 +107,13 @@ func CreateInstallMizuResources(ctx context.Context, kubernetesProvider *kuberne
|
|||||||
if err := createMizuApiServerDeployment(ctx, kubernetesProvider, opts, noPersistentVolumeClaim); err != nil {
|
if err := createMizuApiServerDeployment(ctx, kubernetesProvider, opts, noPersistentVolumeClaim); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logger.Log.Infof("Created Api Server deployment")
|
logger.Log.Infof("deployment.apps/%v created", kubernetes.ApiServerPodName)
|
||||||
|
|
||||||
_, err = kubernetesProvider.CreateService(ctx, mizuResourcesNamespace, kubernetes.ApiServerPodName, kubernetes.ApiServerPodName)
|
_, err = kubernetesProvider.CreateService(ctx, mizuResourcesNamespace, kubernetes.ApiServerPodName, kubernetes.ApiServerPodName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logger.Log.Infof("Created Api Server service")
|
logger.Log.Infof("service/%v created", kubernetes.ApiServerPodName)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,9 @@ const (
|
|||||||
MizuResourcesPrefix = "mizu-"
|
MizuResourcesPrefix = "mizu-"
|
||||||
ApiServerPodName = MizuResourcesPrefix + "api-server"
|
ApiServerPodName = MizuResourcesPrefix + "api-server"
|
||||||
ClusterRoleBindingName = MizuResourcesPrefix + "cluster-role-binding"
|
ClusterRoleBindingName = MizuResourcesPrefix + "cluster-role-binding"
|
||||||
DaemonRoleBindingName = MizuResourcesPrefix + "cluster-role-binding-daemon"
|
DaemonRoleBindingName = MizuResourcesPrefix + "role-binding-daemon"
|
||||||
ClusterRoleName = MizuResourcesPrefix + "cluster-role"
|
ClusterRoleName = MizuResourcesPrefix + "cluster-role"
|
||||||
DaemonRoleName = MizuResourcesPrefix + "cluster-role-daemon"
|
DaemonRoleName = MizuResourcesPrefix + "role-daemon"
|
||||||
K8sAllNamespaces = ""
|
K8sAllNamespaces = ""
|
||||||
RoleBindingName = MizuResourcesPrefix + "role-binding"
|
RoleBindingName = MizuResourcesPrefix + "role-binding"
|
||||||
RoleName = MizuResourcesPrefix + "role"
|
RoleName = MizuResourcesPrefix + "role"
|
||||||
|
Loading…
Reference in New Issue
Block a user