Node name and pod label based pod targeting

This commit is contained in:
M. Mert Yildiran 2025-03-19 19:12:48 +03:00
parent 529ca63a47
commit 9796fed52c
No known key found for this signature in database
GPG Key ID: B2F205E76EB7510B
7 changed files with 41 additions and 4 deletions

View File

@ -84,8 +84,8 @@ kubectl-view-kubeshark-resources: ## This command outputs all Kubernetes resourc
./kubectl.sh view-kubeshark-resources
generate-helm-values: ## Generate the Helm values from config.yaml
mv ~/.kubeshark/config.yaml ~/.kubeshark/config.yaml.old; bin/kubeshark__ config>helm-chart/values.yaml;mv ~/.kubeshark/config.yaml.old ~/.kubeshark/config.yaml
sed -i 's/^license:.*/license: ""/' helm-chart/values.yaml && sed -i '1i # find a detailed description here: https://github.com/kubeshark/kubeshark/blob/master/helm-chart/README.md' helm-chart/values.yaml
mv ~/.kubeshark/config.yaml ~/.kubeshark/config.yaml.old; bin/kubeshark__ config > helm-chart/values.yaml; mv ~/.kubeshark/config.yaml.old ~/.kubeshark/config.yaml
sed -i 's/^license:.*/license: ""/' helm-chart/values.yaml && sed -i '1i # find a detailed description here: https://github.com/kubeshark/kubeshark/blob/master/helm-chart/README.md' helm-chart/values.yaml
generate-manifests: ## Generate the manifests from the Helm chart using default configuration
helm template kubeshark -n default ./helm-chart > ./manifests/complete.yaml

View File

@ -424,7 +424,6 @@ func postFrontStarted(ctx context.Context, kubernetesProvider *kubernetes.Provid
time.Sleep(100 * time.Millisecond)
}
if (config.Config.Scripting.Source != "" || len(config.Config.Scripting.Sources) > 0) && config.Config.Scripting.WatchScripts {
watchScripts(ctx, kubernetesProvider, false)
}
@ -439,8 +438,26 @@ func updateConfig(kubernetesProvider *kubernetes.Provider) {
_, _ = kubernetes.SetConfig(kubernetesProvider, kubernetes.CONFIG_POD_REGEX, config.Config.Tap.PodRegexStr)
_, _ = kubernetes.SetConfig(kubernetesProvider, kubernetes.CONFIG_NAMESPACES, strings.Join(config.Config.Tap.Namespaces, ","))
_, _ = kubernetes.SetConfig(kubernetesProvider, kubernetes.CONFIG_EXCLUDED_NAMESPACES, strings.Join(config.Config.Tap.ExcludedNamespaces, ","))
_, _ = kubernetes.SetConfig(kubernetesProvider, kubernetes.CONFIG_NODES, strings.Join(config.Config.Tap.Nodes, ","))
_, _ = kubernetes.SetConfig(kubernetesProvider, kubernetes.CONFIG_EXCLUDED_NODES, strings.Join(config.Config.Tap.ExcludedNodes, ","))
data, err := json.Marshal(config.Config.Scripting.Env)
data, err := json.Marshal(config.Config.Tap.TargetLabels)
if err != nil {
log.Error().Str("config", kubernetes.CONFIG_TARGET_LABELS).Err(err).Send()
return
} else {
_, _ = kubernetes.SetConfig(kubernetesProvider, kubernetes.CONFIG_TARGET_LABELS, string(data))
}
data, err = json.Marshal(config.Config.Tap.ExcludedTargetLabels)
if err != nil {
log.Error().Str("config", kubernetes.CONFIG_EXCLUDED_TARGET_LABELS).Err(err).Send()
return
} else {
_, _ = kubernetes.SetConfig(kubernetesProvider, kubernetes.CONFIG_EXCLUDED_TARGET_LABELS, string(data))
}
data, err = json.Marshal(config.Config.Scripting.Env)
if err != nil {
log.Error().Str("config", kubernetes.CONFIG_SCRIPTING_ENV).Err(err).Send()
return

View File

@ -282,6 +282,10 @@ type TapConfig struct {
PodRegexStr string `yaml:"regex" json:"regex" default:".*"`
Namespaces []string `yaml:"namespaces" json:"namespaces" default:"[]"`
ExcludedNamespaces []string `yaml:"excludedNamespaces" json:"excludedNamespaces" default:"[]"`
Nodes []string `yaml:"nodes" json:"nodes" default:"[]"`
ExcludedNodes []string `yaml:"excludedNodes" json:"excludedNodes" default:"[]"`
TargetLabels map[string]string `yaml:"targetLabels" json:"targetLabels" default:"{}"`
ExcludedTargetLabels map[string]string `yaml:"excludedTargetLabels" json:"excludedTargetLabels" default:"{}"`
BpfOverride string `yaml:"bpfOverride" json:"bpfOverride" default:""`
Stopped bool `yaml:"stopped" json:"stopped" default:"false"`
Release ReleaseConfig `yaml:"release" json:"release"`

View File

@ -10,6 +10,10 @@ data:
POD_REGEX: '{{ .Values.tap.regex }}'
NAMESPACES: '{{ gt (len .Values.tap.namespaces) 0 | ternary (join "," .Values.tap.namespaces) "" }}'
EXCLUDED_NAMESPACES: '{{ gt (len .Values.tap.excludedNamespaces) 0 | ternary (join "," .Values.tap.excludedNamespaces) "" }}'
NODES: '{{ gt (len .Values.tap.nodes) 0 | ternary (join "," .Values.tap.nodes) "" }}'
EXCLUDED_NODES: '{{ gt (len .Values.tap.excludedNodes) 0 | ternary (join "," .Values.tap.excludedNodes) "" }}'
TARGET_LABELS: '{{ .Values.tap.targetLabels | toJson }}'
EXCLUDED_TARGET_LABELS: '{{ .Values.tap.excludedTargetLabels | toJson }}'
BPF_OVERRIDE: '{{ .Values.tap.bpfOverride }}'
STOPPED: '{{ .Values.tap.stopped | ternary "true" "false" }}'
SCRIPTING_SCRIPTS: '{}'

View File

@ -25,6 +25,10 @@ tap:
regex: .*
namespaces: []
excludedNamespaces: []
nodes: []
excludedNodes: []
targetLabels: {}
excludedTargetLabels: {}
bpfOverride: ""
stopped: false
release:

View File

@ -20,6 +20,10 @@ const (
CONFIG_POD_REGEX = "POD_REGEX"
CONFIG_NAMESPACES = "NAMESPACES"
CONFIG_EXCLUDED_NAMESPACES = "EXCLUDED_NAMESPACES"
CONFIG_NODES = "NODES"
CONFIG_EXCLUDED_NODES = "EXCLUDED_NODES"
CONFIG_TARGET_LABELS = "TARGET_LABELS"
CONFIG_EXCLUDED_TARGET_LABELS = "EXCLUDED_TARGET_LABELS"
CONFIG_SCRIPTING_ENV = "SCRIPTING_ENV"
CONFIG_INGRESS_ENABLED = "INGRESS_ENABLED"
CONFIG_INGRESS_HOST = "INGRESS_HOST"

View File

@ -228,6 +228,10 @@ data:
POD_REGEX: '.*'
NAMESPACES: ''
EXCLUDED_NAMESPACES: ''
NODES: ''
EXCLUDED_NODES: ''
TARGET_LABELS: '{}'
EXCLUDED_TARGET_LABELS: '{}'
BPF_OVERRIDE: ''
STOPPED: 'false'
SCRIPTING_SCRIPTS: '{}'