mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-09-03 19:48:45 +00:00
✨ Add customLabels
field to config.yaml
This commit is contained in:
@@ -37,6 +37,7 @@ type ConfigStruct struct {
|
|||||||
HeadlessMode bool `yaml:"headless" default:"false"`
|
HeadlessMode bool `yaml:"headless" default:"false"`
|
||||||
License string `yaml:"license" default:""`
|
License string `yaml:"license" default:""`
|
||||||
Scripting configStructs.ScriptingConfig `yaml:"scripting"`
|
Scripting configStructs.ScriptingConfig `yaml:"scripting"`
|
||||||
|
CustomLabels map[string]string `yaml:"customLabels" default:"{}"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (config *ConfigStruct) SetDefaults() {
|
func (config *ConfigStruct) SetDefaults() {
|
||||||
|
@@ -4,7 +4,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
|
||||||
"github.com/kubeshark/kubeshark/kubernetes"
|
|
||||||
"github.com/kubeshark/kubeshark/utils"
|
"github.com/kubeshark/kubeshark/utils"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
)
|
)
|
||||||
@@ -27,6 +26,13 @@ const (
|
|||||||
DebugLabel = "debug"
|
DebugLabel = "debug"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Resources struct {
|
||||||
|
CpuLimit string `yaml:"cpu-limit" default:"750m"`
|
||||||
|
MemoryLimit string `yaml:"memory-limit" default:"1Gi"`
|
||||||
|
CpuRequests string `yaml:"cpu-requests" default:"50m"`
|
||||||
|
MemoryRequests string `yaml:"memory-requests" default:"50Mi"`
|
||||||
|
}
|
||||||
|
|
||||||
type WorkerConfig struct {
|
type WorkerConfig struct {
|
||||||
SrcPort uint16 `yaml:"port" default:"8897"`
|
SrcPort uint16 `yaml:"port" default:"8897"`
|
||||||
DstPort uint16 `yaml:"srvport" default:"8897"`
|
DstPort uint16 `yaml:"srvport" default:"8897"`
|
||||||
@@ -57,8 +63,8 @@ type DockerConfig struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ResourcesConfig struct {
|
type ResourcesConfig struct {
|
||||||
Worker kubernetes.Resources `yaml:"worker"`
|
Worker Resources `yaml:"worker"`
|
||||||
Hub kubernetes.Resources `yaml:"hub"`
|
Hub Resources `yaml:"hub"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type TapConfig struct {
|
type TapConfig struct {
|
||||||
|
@@ -10,6 +10,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
|
||||||
|
"github.com/kubeshark/kubeshark/config/configStructs"
|
||||||
"github.com/kubeshark/kubeshark/docker"
|
"github.com/kubeshark/kubeshark/docker"
|
||||||
"github.com/kubeshark/kubeshark/misc"
|
"github.com/kubeshark/kubeshark/misc"
|
||||||
"github.com/kubeshark/kubeshark/semver"
|
"github.com/kubeshark/kubeshark/semver"
|
||||||
@@ -162,10 +163,7 @@ func (provider *Provider) CreateNamespace(ctx context.Context, name string) (*co
|
|||||||
namespaceSpec := &core.Namespace{
|
namespaceSpec := &core.Namespace{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: name,
|
Name: name,
|
||||||
Labels: map[string]string{
|
Labels: buildWithDefaultLabels(map[string]string{}, provider),
|
||||||
LabelManagedBy: provider.managedBy,
|
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return provider.clientSet.CoreV1().Namespaces().Create(ctx, namespaceSpec, metav1.CreateOptions{})
|
return provider.clientSet.CoreV1().Namespaces().Create(ctx, namespaceSpec, metav1.CreateOptions{})
|
||||||
@@ -176,7 +174,7 @@ type PodOptions struct {
|
|||||||
PodName string
|
PodName string
|
||||||
PodImage string
|
PodImage string
|
||||||
ServiceAccountName string
|
ServiceAccountName string
|
||||||
Resources Resources
|
Resources configStructs.Resources
|
||||||
ImagePullPolicy core.PullPolicy
|
ImagePullPolicy core.PullPolicy
|
||||||
ImagePullSecrets []core.LocalObjectReference
|
ImagePullSecrets []core.LocalObjectReference
|
||||||
Debug bool
|
Debug bool
|
||||||
@@ -230,11 +228,9 @@ func (provider *Provider) BuildHubPod(opts *PodOptions) (*core.Pod, error) {
|
|||||||
pod := &core.Pod{
|
pod := &core.Pod{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: opts.PodName,
|
Name: opts.PodName,
|
||||||
Labels: map[string]string{
|
Labels: buildWithDefaultLabels(map[string]string{
|
||||||
"app": opts.PodName,
|
"app": opts.PodName,
|
||||||
LabelManagedBy: provider.managedBy,
|
}, provider),
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
Spec: core.PodSpec{
|
Spec: core.PodSpec{
|
||||||
Containers: containers,
|
Containers: containers,
|
||||||
@@ -329,11 +325,9 @@ func (provider *Provider) BuildFrontPod(opts *PodOptions, hubHost string, hubPor
|
|||||||
pod := &core.Pod{
|
pod := &core.Pod{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: opts.PodName,
|
Name: opts.PodName,
|
||||||
Labels: map[string]string{
|
Labels: buildWithDefaultLabels(map[string]string{
|
||||||
"app": opts.PodName,
|
"app": opts.PodName,
|
||||||
LabelManagedBy: provider.managedBy,
|
}, provider),
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
Spec: core.PodSpec{
|
Spec: core.PodSpec{
|
||||||
Containers: containers,
|
Containers: containers,
|
||||||
@@ -369,10 +363,7 @@ func (provider *Provider) CreateService(ctx context.Context, namespace string, s
|
|||||||
service := core.Service{
|
service := core.Service{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: serviceName,
|
Name: serviceName,
|
||||||
Labels: map[string]string{
|
Labels: buildWithDefaultLabels(map[string]string{}, provider),
|
||||||
LabelManagedBy: provider.managedBy,
|
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
Spec: core.ServiceSpec{
|
Spec: core.ServiceSpec{
|
||||||
Ports: []core.ServicePort{
|
Ports: []core.ServicePort{
|
||||||
@@ -461,21 +452,17 @@ func (provider *Provider) CreateSelfRBAC(ctx context.Context, namespace string,
|
|||||||
serviceAccount := &core.ServiceAccount{
|
serviceAccount := &core.ServiceAccount{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: serviceAccountName,
|
Name: serviceAccountName,
|
||||||
Labels: map[string]string{
|
Labels: buildWithDefaultLabels(map[string]string{
|
||||||
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
||||||
LabelManagedBy: provider.managedBy,
|
}, provider),
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
clusterRole := &rbac.ClusterRole{
|
clusterRole := &rbac.ClusterRole{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: clusterRoleName,
|
Name: clusterRoleName,
|
||||||
Labels: map[string]string{
|
Labels: buildWithDefaultLabels(map[string]string{
|
||||||
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
||||||
LabelManagedBy: provider.managedBy,
|
}, provider),
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
Rules: []rbac.PolicyRule{
|
Rules: []rbac.PolicyRule{
|
||||||
{
|
{
|
||||||
@@ -488,11 +475,9 @@ func (provider *Provider) CreateSelfRBAC(ctx context.Context, namespace string,
|
|||||||
clusterRoleBinding := &rbac.ClusterRoleBinding{
|
clusterRoleBinding := &rbac.ClusterRoleBinding{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: clusterRoleBindingName,
|
Name: clusterRoleBindingName,
|
||||||
Labels: map[string]string{
|
Labels: buildWithDefaultLabels(map[string]string{
|
||||||
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
||||||
LabelManagedBy: provider.managedBy,
|
}, provider),
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
RoleRef: rbac.RoleRef{
|
RoleRef: rbac.RoleRef{
|
||||||
Name: clusterRoleName,
|
Name: clusterRoleName,
|
||||||
@@ -526,21 +511,17 @@ func (provider *Provider) CreateSelfRBACNamespaceRestricted(ctx context.Context,
|
|||||||
serviceAccount := &core.ServiceAccount{
|
serviceAccount := &core.ServiceAccount{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: serviceAccountName,
|
Name: serviceAccountName,
|
||||||
Labels: map[string]string{
|
Labels: buildWithDefaultLabels(map[string]string{
|
||||||
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
||||||
LabelManagedBy: provider.managedBy,
|
}, provider),
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
role := &rbac.Role{
|
role := &rbac.Role{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: roleName,
|
Name: roleName,
|
||||||
Labels: map[string]string{
|
Labels: buildWithDefaultLabels(map[string]string{
|
||||||
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
||||||
LabelManagedBy: provider.managedBy,
|
}, provider),
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
Rules: []rbac.PolicyRule{
|
Rules: []rbac.PolicyRule{
|
||||||
{
|
{
|
||||||
@@ -553,11 +534,9 @@ func (provider *Provider) CreateSelfRBACNamespaceRestricted(ctx context.Context,
|
|||||||
roleBinding := &rbac.RoleBinding{
|
roleBinding := &rbac.RoleBinding{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: roleBindingName,
|
Name: roleBindingName,
|
||||||
Labels: map[string]string{
|
Labels: buildWithDefaultLabels(map[string]string{
|
||||||
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
fmt.Sprintf("%s-cli-version", misc.Program): version,
|
||||||
LabelManagedBy: provider.managedBy,
|
}, provider),
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
RoleRef: rbac.RoleRef{
|
RoleRef: rbac.RoleRef{
|
||||||
Name: roleName,
|
Name: roleName,
|
||||||
@@ -654,7 +633,7 @@ func (provider *Provider) ApplyWorkerDaemonSet(
|
|||||||
podImage string,
|
podImage string,
|
||||||
workerPodName string,
|
workerPodName string,
|
||||||
serviceAccountName string,
|
serviceAccountName string,
|
||||||
resources Resources,
|
resources configStructs.Resources,
|
||||||
imagePullPolicy core.PullPolicy,
|
imagePullPolicy core.PullPolicy,
|
||||||
imagePullSecrets []core.LocalObjectReference,
|
imagePullSecrets []core.LocalObjectReference,
|
||||||
serviceMesh bool,
|
serviceMesh bool,
|
||||||
@@ -799,11 +778,9 @@ func (provider *Provider) ApplyWorkerDaemonSet(
|
|||||||
}
|
}
|
||||||
|
|
||||||
podTemplate := applyconfcore.PodTemplateSpec()
|
podTemplate := applyconfcore.PodTemplateSpec()
|
||||||
podTemplate.WithLabels(map[string]string{
|
podTemplate.WithLabels(buildWithDefaultLabels(map[string]string{
|
||||||
"app": workerPodName,
|
"app": workerPodName,
|
||||||
LabelManagedBy: provider.managedBy,
|
}, provider))
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
})
|
|
||||||
podTemplate.WithSpec(podSpec)
|
podTemplate.WithSpec(podSpec)
|
||||||
|
|
||||||
labelSelector := applyconfmeta.LabelSelector()
|
labelSelector := applyconfmeta.LabelSelector()
|
||||||
@@ -816,10 +793,7 @@ func (provider *Provider) ApplyWorkerDaemonSet(
|
|||||||
|
|
||||||
daemonSet := applyconfapp.DaemonSet(daemonSetName, namespace)
|
daemonSet := applyconfapp.DaemonSet(daemonSetName, namespace)
|
||||||
daemonSet.
|
daemonSet.
|
||||||
WithLabels(map[string]string{
|
WithLabels(buildWithDefaultLabels(map[string]string{}, provider)).
|
||||||
LabelManagedBy: provider.managedBy,
|
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
}).
|
|
||||||
WithSpec(applyconfapp.DaemonSetSpec().WithSelector(labelSelector).WithTemplate(podTemplate))
|
WithSpec(applyconfapp.DaemonSetSpec().WithSelector(labelSelector).WithTemplate(podTemplate))
|
||||||
|
|
||||||
_, err = provider.clientSet.AppsV1().DaemonSets(namespace).Apply(ctx, daemonSet, applyOptions)
|
_, err = provider.clientSet.AppsV1().DaemonSets(namespace).Apply(ctx, daemonSet, applyOptions)
|
||||||
@@ -848,11 +822,9 @@ func (provider *Provider) ResetWorkerDaemonSet(ctx context.Context, namespace st
|
|||||||
podSpec.WithAffinity(affinity)
|
podSpec.WithAffinity(affinity)
|
||||||
|
|
||||||
podTemplate := applyconfcore.PodTemplateSpec()
|
podTemplate := applyconfcore.PodTemplateSpec()
|
||||||
podTemplate.WithLabels(map[string]string{
|
podTemplate.WithLabels(buildWithDefaultLabels(map[string]string{
|
||||||
"app": workerPodName,
|
"app": workerPodName,
|
||||||
LabelManagedBy: provider.managedBy,
|
}, provider))
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
})
|
|
||||||
podTemplate.WithSpec(podSpec)
|
podTemplate.WithSpec(podSpec)
|
||||||
|
|
||||||
labelSelector := applyconfmeta.LabelSelector()
|
labelSelector := applyconfmeta.LabelSelector()
|
||||||
@@ -865,10 +837,7 @@ func (provider *Provider) ResetWorkerDaemonSet(ctx context.Context, namespace st
|
|||||||
|
|
||||||
daemonSet := applyconfapp.DaemonSet(daemonSetName, namespace)
|
daemonSet := applyconfapp.DaemonSet(daemonSetName, namespace)
|
||||||
daemonSet.
|
daemonSet.
|
||||||
WithLabels(map[string]string{
|
WithLabels(buildWithDefaultLabels(map[string]string{}, provider)).
|
||||||
LabelManagedBy: provider.managedBy,
|
|
||||||
LabelCreatedBy: provider.createdBy,
|
|
||||||
}).
|
|
||||||
WithSpec(applyconfapp.DaemonSetSpec().WithSelector(labelSelector).WithTemplate(podTemplate))
|
WithSpec(applyconfapp.DaemonSetSpec().WithSelector(labelSelector).WithTemplate(podTemplate))
|
||||||
|
|
||||||
_, err := provider.clientSet.AppsV1().DaemonSets(namespace).Apply(ctx, daemonSet, applyOptions)
|
_, err := provider.clientSet.AppsV1().DaemonSets(namespace).Apply(ctx, daemonSet, applyOptions)
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
package kubernetes
|
|
||||||
|
|
||||||
type Resources struct {
|
|
||||||
CpuLimit string `yaml:"cpu-limit" default:"750m"`
|
|
||||||
MemoryLimit string `yaml:"memory-limit" default:"1Gi"`
|
|
||||||
CpuRequests string `yaml:"cpu-requests" default:"50m"`
|
|
||||||
MemoryRequests string `yaml:"memory-requests" default:"50Mi"`
|
|
||||||
}
|
|
@@ -2,6 +2,7 @@ package kubernetes
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/kubeshark/base/pkg/models"
|
"github.com/kubeshark/base/pkg/models"
|
||||||
|
"github.com/kubeshark/kubeshark/config"
|
||||||
core "k8s.io/api/core/v1"
|
core "k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
)
|
)
|
||||||
@@ -53,3 +54,14 @@ func GetPodInfosForPods(pods []core.Pod) []*models.PodInfo {
|
|||||||
}
|
}
|
||||||
return podInfos
|
return podInfos
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func buildWithDefaultLabels(labels map[string]string, provider *Provider) map[string]string {
|
||||||
|
labels["LabelManagedBy"] = provider.managedBy
|
||||||
|
labels["LabelCreatedBy"] = provider.createdBy
|
||||||
|
|
||||||
|
for k, v := range config.Config.CustomLabels {
|
||||||
|
labels[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
|
return labels
|
||||||
|
}
|
||||||
|
@@ -3,6 +3,7 @@ package kubernetes
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
"github.com/kubeshark/kubeshark/config/configStructs"
|
||||||
"github.com/kubeshark/kubeshark/docker"
|
"github.com/kubeshark/kubeshark/docker"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
core "k8s.io/api/core/v1"
|
core "k8s.io/api/core/v1"
|
||||||
@@ -13,7 +14,7 @@ func CreateWorkers(
|
|||||||
selfServiceAccountExists bool,
|
selfServiceAccountExists bool,
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
namespace string,
|
namespace string,
|
||||||
resources Resources,
|
resources configStructs.Resources,
|
||||||
imagePullPolicy core.PullPolicy,
|
imagePullPolicy core.PullPolicy,
|
||||||
imagePullSecrets []core.LocalObjectReference,
|
imagePullSecrets []core.LocalObjectReference,
|
||||||
serviceMesh bool,
|
serviceMesh bool,
|
||||||
|
@@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/kubeshark/kubeshark/config"
|
"github.com/kubeshark/kubeshark/config"
|
||||||
|
"github.com/kubeshark/kubeshark/config/configStructs"
|
||||||
"github.com/kubeshark/kubeshark/docker"
|
"github.com/kubeshark/kubeshark/docker"
|
||||||
"github.com/kubeshark/kubeshark/errormessage"
|
"github.com/kubeshark/kubeshark/errormessage"
|
||||||
"github.com/kubeshark/kubeshark/kubernetes"
|
"github.com/kubeshark/kubeshark/kubernetes"
|
||||||
@@ -13,7 +14,7 @@ import (
|
|||||||
core "k8s.io/api/core/v1"
|
core "k8s.io/api/core/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func CreateHubResources(ctx context.Context, kubernetesProvider *kubernetes.Provider, isNsRestrictedMode bool, selfNamespace string, hubResources kubernetes.Resources, imagePullPolicy core.PullPolicy, imagePullSecrets []core.LocalObjectReference, debug bool) (bool, error) {
|
func CreateHubResources(ctx context.Context, kubernetesProvider *kubernetes.Provider, isNsRestrictedMode bool, selfNamespace string, hubResources configStructs.Resources, imagePullPolicy core.PullPolicy, imagePullSecrets []core.LocalObjectReference, debug bool) (bool, error) {
|
||||||
if !isNsRestrictedMode {
|
if !isNsRestrictedMode {
|
||||||
if err := createSelfNamespace(ctx, kubernetesProvider, selfNamespace); err != nil {
|
if err := createSelfNamespace(ctx, kubernetesProvider, selfNamespace); err != nil {
|
||||||
log.Debug().Err(err).Send()
|
log.Debug().Err(err).Send()
|
||||||
|
Reference in New Issue
Block a user