Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(agent): add kspm-analyzer specific settings to agent pod when enabled #1889

Merged
merged 3 commits into from
Aug 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion charts/agent/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
3 changes: 3 additions & 0 deletions charts/agent/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
Expand Down
14 changes: 13 additions & 1 deletion charts/agent/templates/daemonset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
80 changes: 80 additions & 0 deletions charts/agent/tests/kspm_analyzer_test.yaml
Original file line number Diff line number Diff line change
@@ -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
Loading