diff --git a/charts/agent/Chart.yaml b/charts/agent/Chart.yaml index bf7c54378..9252dbc72 100644 --- a/charts/agent/Chart.yaml +++ b/charts/agent/Chart.yaml @@ -30,4 +30,4 @@ sources: - https://app.sysdigcloud.com/#/settings/user - https://github.com/draios/sysdig type: application -version: 1.27.16 +version: 1.27.17 diff --git a/charts/agent/templates/configmap.yaml b/charts/agent/templates/configmap.yaml index d18117ad6..10d16ad84 100644 --- a/charts/agent/templates/configmap.yaml +++ b/charts/agent/templates/configmap.yaml @@ -45,6 +45,9 @@ data: {{- $caFilePath := printf "%s%s" "certificates/" (include "sysdig.custom_ca.keyName" (dict "global" .Values.global.ssl "component" .Values.ssl)) }} {{- $mergedSettings := mergeOverwrite $baseSettings (dict "http_proxy" (dict "ca_certificate" $caFilePath)) -}} {{ toYaml $mergedSettings | nindent 4 }} +{{- else if (dig "kspm_analyzer" "enabled" false $baseSettings) }} + {{- $mergedSettings := mergeOverwrite $baseSettings (dict "kspm_analyzer" (dict "agent_app_name" "agent" "pod_namespace" .Release.Namespace)) -}} + {{ toYaml $mergedSettings | nindent 4 }} {{- else if .Values.sysdig.settings }} {{ toYaml .Values.sysdig.settings | nindent 4 }} {{- end }} diff --git a/charts/agent/templates/daemonset.yaml b/charts/agent/templates/daemonset.yaml index e4d963bdb..5bb7a06fb 100644 --- a/charts/agent/templates/daemonset.yaml +++ b/charts/agent/templates/daemonset.yaml @@ -230,11 +230,23 @@ spec: - name: SSL_CERT_FILE value: /opt/draios/certificates/{{- include "sysdig.custom_ca.keyName" (dict "global" .Values.global.ssl "component" .Values.ssl) -}} {{- end }} - {{- if dig "prometheus_exporter" "enabled" false .Values.sysdig.settings }} + {{- if (dig "kspm_analyzer" "enabled" false .Values.sysdig.settings) }} + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + {{- end }} + {{- if or (dig "prometheus_exporter" "enabled" false .Values.sysdig.settings) (dig "kspm_analyzer" "enabled" false .Values.sysdig.settings) }} ports: + {{- if dig "prometheus_exporter" "enabled" false .Values.sysdig.settings }} - containerPort: {{ regexFind "[0-9]+$" (dig "prometheus_exporter" "listen_url" "0.0.0.0:9544" .Values.sysdig.settings) }} name: metrics {{- end }} + {{- if dig "kspm_analyzer" "enabled" false .Values.sysdig.settings }} + - containerPort: {{ dig "kspm_analyzer" "port" 12000 .Values.sysdig.settings }} + name: kspm-analyzer + {{- end }} + {{- end }} readinessProbe: {{- if eq (include "agent.enableHttpProbes" .) "true" }} httpGet: diff --git a/charts/agent/tests/kspm_analyzer_test.yaml b/charts/agent/tests/kspm_analyzer_test.yaml new file mode 100644 index 000000000..bc8a772f6 --- /dev/null +++ b/charts/agent/tests/kspm_analyzer_test.yaml @@ -0,0 +1,80 @@ +suite: Test port and label names when kspm analyzer is enabled in host shield +templates: + - templates/configmap.yaml + - templates/daemonset.yaml +kubernetesProvider: + scheme: + "v1/Node": + gvr: + version: "v1" + resource: "nodes" + namespaced: false + objects: + - apiVersion: v1 + kind: Node + metadata: + name: fakenode + status: + nodeInfo: + osImage: fake-os-image +tests: + - it: Ensure configmap and daemonset settings are set when needed + set: + sysdig: + settings: + kspm_analyzer: + enabled: true + asserts: + - matchRegex: + path: data['dragent.yaml'] + pattern: |- + kspm_analyzer: + agent_app_name: agent + enabled: true + pod_namespace: NAMESPACE + template: templates/configmap.yaml + - equal: + path: spec.template.spec.containers[?(@.name == "sysdig")].ports[?(@.name == "kspm-analyzer")] + value: + name: kspm-analyzer + containerPort: 12000 + template: templates/daemonset.yaml + + - it: Ensure configmap and daemonset settings are not set when not needed + asserts: + - notMatchRegex: + path: data['dragent.yaml'] + pattern: |- + kspm_analyzer: + agent_app_name: agent + enabled: true + pod_namespace: NAMESPACE + template: templates/configmap.yaml + - notExists: + path: spec.template.spec.containers[?(@.name == "sysdig")].ports[?(@.name == "kspm-analyzer")] + template: templates/daemonset.yaml + + - it: Ensure POD_NAMESPACE env var set if kspm-analyzer is enabled + set: + sysdig: + settings: + kspm_analyzer: + enabled: true + asserts: + - equal: + path: spec.template.spec.containers[?(@.name == "sysdig")].env[?(@.name == "POD_NAMESPACE")] + value: + name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + template: templates/daemonset.yaml + + - it: Ensure POD_NAMESPACE env var not set if kspm-analyzer is disabled + asserts: + - notContains: + path: spec.template.spec.containers[?(@.name == "sysdig")].env + value: + name: POD_NAMESPACE + value: NAMESPACE + template: templates/daemonset.yaml