diff --git a/Makefile b/Makefile index 0823a2e96..cc7e3b8e2 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/cmd/tapRunner.go b/cmd/tapRunner.go index f4f46aae9..2e2eb047b 100644 --- a/cmd/tapRunner.go +++ b/cmd/tapRunner.go @@ -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 diff --git a/config/configStructs/tapConfig.go b/config/configStructs/tapConfig.go index 456f165a5..287c5b2f2 100644 --- a/config/configStructs/tapConfig.go +++ b/config/configStructs/tapConfig.go @@ -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"` diff --git a/helm-chart/templates/12-config-map.yaml b/helm-chart/templates/12-config-map.yaml index 175a1b03b..60dc59214 100644 --- a/helm-chart/templates/12-config-map.yaml +++ b/helm-chart/templates/12-config-map.yaml @@ -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: '{}' diff --git a/helm-chart/values.yaml b/helm-chart/values.yaml index 834b13c8d..eba079afb 100644 --- a/helm-chart/values.yaml +++ b/helm-chart/values.yaml @@ -25,6 +25,10 @@ tap: regex: .* namespaces: [] excludedNamespaces: [] + nodes: [] + excludedNodes: [] + targetLabels: {} + excludedTargetLabels: {} bpfOverride: "" stopped: false release: diff --git a/kubernetes/config.go b/kubernetes/config.go index 14d8f0c6c..db55b35b8 100644 --- a/kubernetes/config.go +++ b/kubernetes/config.go @@ -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" diff --git a/manifests/complete.yaml b/manifests/complete.yaml index 6ea91458f..376d1d972 100644 --- a/manifests/complete.yaml +++ b/manifests/complete.yaml @@ -228,6 +228,10 @@ data: POD_REGEX: '.*' NAMESPACES: '' EXCLUDED_NAMESPACES: '' + NODES: '' + EXCLUDED_NODES: '' + TARGET_LABELS: '{}' + EXCLUDED_TARGET_LABELS: '{}' BPF_OVERRIDE: '' STOPPED: 'false' SCRIPTING_SCRIPTS: '{}'