diff --git a/charts/lm-logs/Chart.yaml b/charts/lm-logs/Chart.yaml index ffd234e..6f3b68c 100644 --- a/charts/lm-logs/Chart.yaml +++ b/charts/lm-logs/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v2 description: A Helm chart for sending k8s logs to Logic Monitor name: lm-logs -version: 1.0.1 +version: 1.1.0 maintainers: - email: dev@logicmonitor.com name: LogicMonitor diff --git a/charts/lm-logs/README.md b/charts/lm-logs/README.md index f3397c3..8dbcfea 100644 --- a/charts/lm-logs/README.md +++ b/charts/lm-logs/README.md @@ -13,6 +13,7 @@ helm install -n \ --set lm_company_name="" \ --set lm_access_id="" \ --set lm_access_key="" \ +--set kubernetes.cluster_name="" \ lm-logs logicmonitor/lm-logs ``` @@ -22,11 +23,13 @@ Install the lm-logs chart using a user defined secret for LM credentials. # For LMv1 helm install lm-logs logicmonitor/lm-logs -n \ --set global.userDefinedSecret=lm-logs-credentials \ + --set kubernetes.cluster_name="" \ --set authMode=lmv1 # For Bearer helm install lm-logs logicmonitor/lm-logs -n \ --set global.userDefinedSecret=lm-logs-credentials \ + --set kubernetes.cluster_name="" \ --set authMode=bearer ``` @@ -69,7 +72,7 @@ The following tables lists the configurable parameters of the lm-logs chart and | `affinity` | Affinity for pod assignment | `{}` (evaluated as a template) | | `env` | Map to add extra environment variables | `{}` | | `kubernetes.multiline_start_regexp` | Regexp to match beginning of multiline | `/^\[(\d{4}-)?\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}.*\]/` | -| `kubernetes.cluster_name` | ClusterName given while adding k8s cluster | `""` | +| `kubernetes.cluster_name` | (Required) Cluster name given while adding k8s cluster. Must be set for both standalone lm-logs and lm-container with lm-logs. | `""` | | `kubernetes.multiline_concat_key` | Key to look for fluentD to concatenate multiline logs | `"log"` | @@ -166,6 +169,7 @@ helm upgrade --install -n \ --set lm_company_name="" \ --set lm_access_id="" \ --set lm_access_key=" \ +--set kubernetes.cluster_name="" \ --set env.FLUENT_CONTAINER_TAIL_PARSER_TYPE="cri" \ --set kubernetes.multiline_concat_key="message" \ lm-logs logicmonitor/lm-logs diff --git a/charts/lm-logs/ci/base-sanity-values.yaml b/charts/lm-logs/ci/base-sanity-values.yaml index f6f3f1d..8cf4ca3 100644 --- a/charts/lm-logs/ci/base-sanity-values.yaml +++ b/charts/lm-logs/ci/base-sanity-values.yaml @@ -2,6 +2,8 @@ lm_company_name: "dummy_company" lm_access_id: "dummy_id" lm_access_key: "dummy_key" authMode: "lmv1" +kubernetes: + cluster_name: "dummy-cluster" global: account: "dummyaccount" accessID: "dummyid" diff --git a/charts/lm-logs/templates/_helpers.tpl b/charts/lm-logs/templates/_helpers.tpl index 38581b0..ccad25a 100644 --- a/charts/lm-logs/templates/_helpers.tpl +++ b/charts/lm-logs/templates/_helpers.tpl @@ -134,18 +134,18 @@ optional: true {{- else -}} {{- fail "authMode must be 'lmv1' or 'bearer'." -}} {{- end -}} + +{{- /* 3) Enforce kubernetes.cluster_name presence (required for resource mapping). No global fallback. */ -}} +{{- if not (and .Values.kubernetes .Values.kubernetes.cluster_name) -}} + {{- fail "kubernetes.cluster_name is required. Set lm-logs.kubernetes.cluster_name (or kubernetes.cluster_name when installing lm-logs standalone)." -}} +{{- end -}} {{- end -}} {{/* Adding validations for clustername for lm-logs to contain only lower alphanumeric or '-' and start and end with an alphanumeric character */}} {{- define "kubernetes.cluster_name" -}} -{{- $cluster := "" -}} -{{- if .Values.kubernetes.cluster_name -}} -{{- $cluster = .Values.kubernetes.cluster_name -}} -{{- else if .Values.global.clusterName -}} -{{- $cluster = .Values.global.clusterName -}} -{{- end -}} +{{- $cluster := .Values.kubernetes.cluster_name -}} {{- if ne $cluster "" -}} {{- if regexMatch "^[a-z0-9][a-z0-9-]*[a-z0-9]$" $cluster }} kubernetes.cluster_name {{ $cluster }} @@ -159,12 +159,7 @@ kubernetes.cluster_name {{ $cluster }} User-agent for log-ingest requests */}} {{- define "logsource.userAgent" -}} -{{- $cluster := "" -}} -{{- if .Values.kubernetes.cluster_name -}} -{{- $cluster = .Values.kubernetes.cluster_name -}} -{{- else if .Values.global.clusterName -}} -{{- $cluster = .Values.global.clusterName -}} -{{- end -}} +{{- $cluster := .Values.kubernetes.cluster_name -}} log_source lm-logs-fluentd (K8S; {{ $cluster }}) {{- end -}} @@ -367,3 +362,20 @@ systemd.conf: "" {{- end }} {{- end }} + +{{/* +Validate fluent.extraFilters: only blocks allowed, tags must be balanced. +*/}} +{{- define "lm-logs.validateExtraFilters" -}} +{{- $f := .Values.fluent.extraFilters -}} +{{- if $f -}} + {{- if or (contains " blocks. Found disallowed directive (, , or