From a33a3467fc5579a2bf0627d79ff241ded212f052 Mon Sep 17 00:00:00 2001 From: "M. Mert Yildiran" Date: Mon, 8 May 2023 00:50:56 +0300 Subject: [PATCH] :sparkles: Add `persistentstorage` option --- config/configStructs/tapConfig.go | 1 + .../templates/09-worker-daemon-set.yaml | 5 --- helm-chart/values.yaml | 1 + kubernetes/provider.go | 38 ++++++++++++------- kubernetes/workers.go | 23 ++++++----- manifests/09-worker-daemon-set.yaml | 5 --- 6 files changed, 39 insertions(+), 34 deletions(-) diff --git a/config/configStructs/tapConfig.go b/config/configStructs/tapConfig.go index 872f592af..accc1c6a9 100644 --- a/config/configStructs/tapConfig.go +++ b/config/configStructs/tapConfig.go @@ -82,6 +82,7 @@ type TapConfig struct { PodRegexStr string `yaml:"regex" default:".*"` Namespaces []string `yaml:"namespaces"` SelfNamespace string `yaml:"selfnamespace" default:"kubeshark"` + PersistentStorage bool `yaml:"persistentstorage" default:"false"` StorageLimit string `yaml:"storagelimit" default:"200Mi"` StorageClass string `yaml:"storageclass" default:"standard"` DryRun bool `yaml:"dryrun" default:"false"` diff --git a/helm-chart/templates/09-worker-daemon-set.yaml b/helm-chart/templates/09-worker-daemon-set.yaml index 84f9c45d3..52155082e 100644 --- a/helm-chart/templates/09-worker-daemon-set.yaml +++ b/helm-chart/templates/09-worker-daemon-set.yaml @@ -67,8 +67,6 @@ spec: - mountPath: /sys name: sys readOnly: true - - mountPath: /app/data - name: kubeshark-persistent-volume dnsPolicy: ClusterFirstWithHostNet hostNetwork: true serviceAccountName: kubeshark-service-account @@ -85,6 +83,3 @@ spec: - hostPath: path: /sys name: sys - - name: kubeshark-persistent-volume - persistentVolumeClaim: - claimName: kubeshark-persistent-volume-claim diff --git a/helm-chart/values.yaml b/helm-chart/values.yaml index 1c338828a..f348eab4c 100644 --- a/helm-chart/values.yaml +++ b/helm-chart/values.yaml @@ -18,6 +18,7 @@ tap: regex: .* namespaces: [] selfnamespace: kubeshark + persistentstorage: false storagelimit: 200Mi storageclass: standard dryrun: false diff --git a/kubernetes/provider.go b/kubernetes/provider.go index ade97550d..2b93d481d 100644 --- a/kubernetes/provider.go +++ b/kubernetes/provider.go @@ -855,18 +855,23 @@ func (provider *Provider) BuildWorkerDaemonSet( MountPath: PersistentVolumeHostPath, } + // VolumeMount(s) + volumeMounts := []core.VolumeMount{ + procfsVolumeMount, + sysfsVolumeMount, + } + if config.Config.Tap.PersistentStorage { + volumeMounts = append(volumeMounts, persistentVolumeMount) + } + // Containers containers := []core.Container{ { Name: podName, Image: podImage, ImagePullPolicy: imagePullPolicy, - VolumeMounts: []core.VolumeMount{ - procfsVolumeMount, - sysfsVolumeMount, - persistentVolumeMount, - }, - Command: command, + VolumeMounts: volumeMounts, + Command: command, Resources: core.ResourceRequirements{ Limits: core.ResourceList{ "cpu": cpuLimit, @@ -887,6 +892,15 @@ func (provider *Provider) BuildWorkerDaemonSet( }, } + // Volume(s) + volumes := []core.Volume{ + procfsVolume, + sysfsVolume, + } + if config.Config.Tap.PersistentStorage { + volumes = append(volumes, persistentVolume) + } + // Pod pod := DaemonSetPod{ ObjectMeta: metav1.ObjectMeta{ @@ -897,14 +911,10 @@ func (provider *Provider) BuildWorkerDaemonSet( }, provider), }, Spec: core.PodSpec{ - ServiceAccountName: ServiceAccountName, - HostNetwork: true, - Containers: containers, - Volumes: []core.Volume{ - procfsVolume, - sysfsVolume, - persistentVolume, - }, + ServiceAccountName: ServiceAccountName, + HostNetwork: true, + Containers: containers, + Volumes: volumes, DNSPolicy: core.DNSClusterFirstWithHostNet, TerminationGracePeriodSeconds: new(int64), Tolerations: provider.BuildTolerations(), diff --git a/kubernetes/workers.go b/kubernetes/workers.go index 2246363db..77200fc13 100644 --- a/kubernetes/workers.go +++ b/kubernetes/workers.go @@ -3,6 +3,7 @@ package kubernetes import ( "context" + "github.com/kubeshark/kubeshark/config" "github.com/kubeshark/kubeshark/config/configStructs" "github.com/kubeshark/kubeshark/docker" "github.com/rs/zerolog/log" @@ -21,17 +22,19 @@ func CreateWorkers( tls bool, debug bool, ) error { - persistentVolumeClaim, err := kubernetesProvider.BuildPersistentVolumeClaim() - if err != nil { - return err - } + if config.Config.Tap.PersistentStorage { + persistentVolumeClaim, err := kubernetesProvider.BuildPersistentVolumeClaim() + if err != nil { + return err + } - if _, err = kubernetesProvider.CreatePersistentVolumeClaim( - ctx, - namespace, - persistentVolumeClaim, - ); err != nil { - return err + if _, err = kubernetesProvider.CreatePersistentVolumeClaim( + ctx, + namespace, + persistentVolumeClaim, + ); err != nil { + return err + } } image := docker.GetWorkerImage() diff --git a/manifests/09-worker-daemon-set.yaml b/manifests/09-worker-daemon-set.yaml index 53c7ae0fd..82ed36d27 100644 --- a/manifests/09-worker-daemon-set.yaml +++ b/manifests/09-worker-daemon-set.yaml @@ -67,8 +67,6 @@ spec: - mountPath: /sys name: sys readOnly: true - - mountPath: /app/data - name: kubeshark-persistent-volume dnsPolicy: ClusterFirstWithHostNet hostNetwork: true serviceAccountName: kubeshark-service-account @@ -85,6 +83,3 @@ spec: - hostPath: path: /sys name: sys - - name: kubeshark-persistent-volume - persistentVolumeClaim: - claimName: kubeshark-persistent-volume-claim