From 153592155383297935cd8186754f2143369b9870 Mon Sep 17 00:00:00 2001 From: viaudt Date: Thu, 13 Nov 2025 11:04:18 +0000 Subject: [PATCH 1/3] feat(nr-k8s-otel-collector,images): Adding registry and imagePullSecrets configuration --- charts/nr-k8s-otel-collector/Chart.yaml | 4 +- charts/nr-k8s-otel-collector/README.md | 7 +- charts/nr-k8s-otel-collector/collector.md | 2 - .../examples/k8s/rendered/clusterrole.yaml | 4 +- .../k8s/rendered/clusterrolebinding.yaml | 4 +- .../k8s/rendered/daemonset-configmap.yaml | 6 +- .../examples/k8s/rendered/daemonset.yaml | 9 +- .../k8s/rendered/deployment-configmap.yaml | 8 +- .../examples/k8s/rendered/deployment.yaml | 6 +- .../examples/k8s/rendered/secret.yaml | 4 +- .../examples/k8s/rendered/service.yaml | 4 +- .../examples/k8s/rendered/serviceaccount.yaml | 4 +- .../templates/daemonset.yaml | 11 +- .../templates/deployment.yaml | 8 +- .../tests/images_test.yaml | 104 +++++++++++++++++- charts/nr-k8s-otel-collector/values.yaml | 24 ++-- 16 files changed, 161 insertions(+), 48 deletions(-) diff --git a/charts/nr-k8s-otel-collector/Chart.yaml b/charts/nr-k8s-otel-collector/Chart.yaml index 3c0e5df54..0664596e4 100644 --- a/charts/nr-k8s-otel-collector/Chart.yaml +++ b/charts/nr-k8s-otel-collector/Chart.yaml @@ -17,7 +17,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.9.4 +version: 0.9.5 dependencies: @@ -33,7 +33,7 @@ dependencies: # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.2.0" +appVersion: "1.5.0" maintainers: - name: dbudziwojskiNR diff --git a/charts/nr-k8s-otel-collector/README.md b/charts/nr-k8s-otel-collector/README.md index af4b64d29..f9ed46e2d 100644 --- a/charts/nr-k8s-otel-collector/README.md +++ b/charts/nr-k8s-otel-collector/README.md @@ -161,9 +161,10 @@ to export data to this connector which can then be connected to the New Relic ma | deployment.tolerations | list | `[]` | Sets deployment pod tolerations. Overrides `tolerations` and `global.tolerations` | | dnsConfig | object | `{}` | Sets pod's dnsConfig. Can be configured also with `global.dnsConfig` | | exporters | string | `nil` | Define custom exporters here. See: https://opentelemetry.io/docs/collector/configuration/#exporters | -| image.pullPolicy | string | `"IfNotPresent"` | The pull policy is defaulted to IfNotPresent, which skips pulling an image if it already exists. If pullPolicy is defined without a specific value, it is also set to Always. | -| image.repository | string | `"newrelic/nrdot-collector-k8s"` | OTel collector image to be deployed. You can use your own collector as long it accomplish the following requirements mentioned below. | -| image.tag | string | `"1.5.0"` | Overrides the image tag whose default is the chart appVersion. | +| images | object | `{"collector":{"pullPolicy":"IfNotPresent","registry":"","repository":"newrelic/nrdot-collector-k8s","tag":"1.5.0"},"kubectl":{"pullPolicy":"IfNotPresent","registry":"","repository":"bitnami/kubectl","tag":"latest"},"pullSecrets":[]}` | Images used by the chart. | +| images.collector | object | `{"pullPolicy":"IfNotPresent","registry":"","repository":"newrelic/nrdot-collector-k8s","tag":"1.5.0"}` | Image for the OpenTelemetry Collector. | +| images.kubectl | object | `{"pullPolicy":"IfNotPresent","registry":"","repository":"bitnami/kubectl","tag":"latest"}` | Image for the initContainer that retrieves node allocatable resources. | +| images.pullSecrets | list | `[]` | The secrets that are needed to pull images from a custom registry. | | kube-state-metrics.enableResourceQuotaSamples | bool | `false` | Enable resource quota data exporting | | kube-state-metrics.enabled | bool | `true` | Install the [`kube-state-metrics` chart](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-state-metrics) from the stable helm charts repository. This is mandatory if `infrastructure.enabled` is set to `true` and the user does not provide its own instance of KSM version >=1.8 and <=2.0. Note, kube-state-metrics v2+ disables labels/annotations metrics by default. You can enable the target labels/annotations metrics to be monitored by using the metricLabelsAllowlist/metricAnnotationsAllowList options described [here](https://github.com/prometheus-community/helm-charts/blob/159cd8e4fb89b8b107dcc100287504bb91bf30e0/charts/kube-state-metrics/values.yaml#L274) in your Kubernetes clusters. | | kube-state-metrics.metricAnnotationsAllowList | list | `["pods=[*]", "namespaces=[*]", "deployments=[*]"]` | List of Kubernetes annotation keys that will be used in the resources' annotations metric. By default, kube-state-metrics v2+ does not expose annotations as metric labels. This option allows you to specify which annotations should be exposed as metric dimensions. Each entry is formatted as "resource=[annotation1,annotation2,...]". Use "*" to include all annotations for a resource type. Example: ["pods=[description,owner]", "namespaces=[description]", "deployments=[change-id,jira-ticket]"] | diff --git a/charts/nr-k8s-otel-collector/collector.md b/charts/nr-k8s-otel-collector/collector.md index 3b8baffa9..223d85118 100644 --- a/charts/nr-k8s-otel-collector/collector.md +++ b/charts/nr-k8s-otel-collector/collector.md @@ -395,5 +395,3 @@ EU headers: api-key: < ``` - - diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrole.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrole.yaml index bc8f88eb2..cedc38095 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrole.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrole.yaml @@ -8,8 +8,8 @@ metadata: app.kubernetes.io/instance: nr-k8s-otel-collector app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector - app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.4 + app.kubernetes.io/version: 1.5.0 + helm.sh/chart: nr-k8s-otel-collector-0.9.5 rules: - apiGroups: - "" diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrolebinding.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrolebinding.yaml index d37fbd551..e41ea7166 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrolebinding.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrolebinding.yaml @@ -8,8 +8,8 @@ metadata: app.kubernetes.io/instance: nr-k8s-otel-collector app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector - app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.4 + app.kubernetes.io/version: 1.5.0 + helm.sh/chart: nr-k8s-otel-collector-0.9.5 subjects: - kind: ServiceAccount name: nr-k8s-otel-collector diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset-configmap.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset-configmap.yaml index 870567f30..4a3c378fb 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset-configmap.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset-configmap.yaml @@ -9,8 +9,8 @@ metadata: app.kubernetes.io/instance: nr-k8s-otel-collector app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector - app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.4 + app.kubernetes.io/version: 1.5.0 + helm.sh/chart: nr-k8s-otel-collector-0.9.5 data: daemonset-config.yaml: | receivers: @@ -605,7 +605,7 @@ data: value: - key: "newrelic.chart.version" action: upsert - value: 0.9.4 + value: 0.9.5 - key: newrelic.entity.type action: upsert value: "k8s" diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset.yaml index 0ebbd980b..c00d86c0b 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset.yaml @@ -9,8 +9,8 @@ metadata: app.kubernetes.io/instance: nr-k8s-otel-collector app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector - app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.4 + app.kubernetes.io/version: 1.5.0 + helm.sh/chart: nr-k8s-otel-collector-0.9.5 spec: selector: matchLabels: @@ -24,12 +24,13 @@ spec: app.kubernetes.io/name: nr-k8s-otel-collector component: daemonset annotations: - checksum/config: a927fe84bb5aa454ae7797be3c40e6e39c4ba38b7541393a66ea1d001a443e80 + checksum/config: 4389648c1b1163f1a569c091ec9de1b7e33110d085fe8eac5da8ddc0d552cefd spec: serviceAccountName: nr-k8s-otel-collector initContainers: - name: get-cpu-allocatable - image: bitnami/kubectl:latest + image: "bitnami/kubectl:latest" + imagePullPolicy: IfNotPresent command: - sh - -c diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment-configmap.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment-configmap.yaml index 29d956b4b..41b3375ad 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment-configmap.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment-configmap.yaml @@ -9,8 +9,8 @@ metadata: app.kubernetes.io/instance: nr-k8s-otel-collector app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector - app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.4 + app.kubernetes.io/version: 1.5.0 + helm.sh/chart: nr-k8s-otel-collector-0.9.5 data: deployment-config.yaml: | receivers: @@ -516,7 +516,7 @@ data: value: - key: "newrelic.chart.version" action: upsert - value: 0.9.4 + value: 0.9.5 - key: newrelic.entity.type action: upsert value: "k8s" @@ -534,7 +534,7 @@ data: value: - key: "newrelic.chart.version" action: upsert - value: 0.9.4 + value: 0.9.5 transform/events: log_statements: diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment.yaml index 992ff2537..3bbc5a86f 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment.yaml @@ -9,8 +9,8 @@ metadata: app.kubernetes.io/instance: nr-k8s-otel-collector app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector - app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.4 + app.kubernetes.io/version: 1.5.0 + helm.sh/chart: nr-k8s-otel-collector-0.9.5 spec: replicas: 1 minReadySeconds: 5 @@ -26,7 +26,7 @@ spec: app.kubernetes.io/name: nr-k8s-otel-collector component: deployment annotations: - checksum/config: 4b7405cec95883b628f90dc2a53342a95aa53a7555771c4e34387706933bf015 + checksum/config: b92abed51121113fa29edcc53354209d6222eae8534289be36fe675251d7475f spec: serviceAccountName: nr-k8s-otel-collector containers: diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/secret.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/secret.yaml index 26a0e6b02..5300f269c 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/secret.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/secret.yaml @@ -9,7 +9,7 @@ metadata: app.kubernetes.io/instance: nr-k8s-otel-collector app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector - app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.4 + app.kubernetes.io/version: 1.5.0 + helm.sh/chart: nr-k8s-otel-collector-0.9.5 data: licenseKey: PE5SX2xpY2Vuc2VLZXk+ diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/service.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/service.yaml index dfb36015a..5dd6f61c6 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/service.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/service.yaml @@ -9,8 +9,8 @@ metadata: app.kubernetes.io/instance: nr-k8s-otel-collector app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector - app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.4 + app.kubernetes.io/version: 1.5.0 + helm.sh/chart: nr-k8s-otel-collector-0.9.5 spec: type: ClusterIP ports: diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/serviceaccount.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/serviceaccount.yaml index 5c3434726..c02d921f4 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/serviceaccount.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/serviceaccount.yaml @@ -9,6 +9,6 @@ metadata: app.kubernetes.io/instance: nr-k8s-otel-collector app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector - app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.4 + app.kubernetes.io/version: 1.5.0 + helm.sh/chart: nr-k8s-otel-collector-0.9.5 annotations: diff --git a/charts/nr-k8s-otel-collector/templates/daemonset.yaml b/charts/nr-k8s-otel-collector/templates/daemonset.yaml index a9e210f7f..0e0c4a768 100644 --- a/charts/nr-k8s-otel-collector/templates/daemonset.yaml +++ b/charts/nr-k8s-otel-collector/templates/daemonset.yaml @@ -22,6 +22,10 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} spec: + {{- with include "newrelic.common.images.renderPullSecrets" ( dict "pullSecrets" (list .Values.images.pullSecrets) "context" .) }} + imagePullSecrets: + {{- . | nindent 8 }} + {{- end }} serviceAccountName: {{ include "newrelic.common.serviceAccount.name" . }} {{- with include "nrKubernetesOtel.daemonset.securityContext.pod" . }} securityContext: @@ -36,7 +40,8 @@ spec: {{- end }} initContainers: - name: get-cpu-allocatable - image: bitnami/kubectl:latest + image: {{ include "newrelic.common.images.image" ( dict "imageRoot" .Values.images.kubectl "context" .) }} + imagePullPolicy: {{ .Values.images.kubectl.pullPolicy }} command: - sh - -c @@ -87,8 +92,8 @@ spec: securityContext: {{- . | nindent 12 }} {{- end }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} + image: {{ include "newrelic.common.images.image" ( dict "imageRoot" .Values.images.collector "context" .) }} + imagePullPolicy: {{ .Values.images.collector.pullPolicy }} args: {{- include "nrKubernetesOtel.daemonset.args" . | nindent 12 }} resources: diff --git a/charts/nr-k8s-otel-collector/templates/deployment.yaml b/charts/nr-k8s-otel-collector/templates/deployment.yaml index e45e498e6..b4ae09f19 100644 --- a/charts/nr-k8s-otel-collector/templates/deployment.yaml +++ b/charts/nr-k8s-otel-collector/templates/deployment.yaml @@ -24,6 +24,10 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} spec: + {{- with include "newrelic.common.images.renderPullSecrets" ( dict "pullSecrets" (list .Values.images.pullSecrets) "context" .) }} + imagePullSecrets: + {{- . | nindent 8 }} + {{- end }} serviceAccountName: {{ include "newrelic.common.serviceAccount.name" . }} {{- with include "nrKubernetesOtel.deployment.securityContext.pod" . }} securityContext: @@ -42,8 +46,8 @@ spec: securityContext: {{- . | nindent 12 }} {{- end }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} + image: {{ include "newrelic.common.images.image" ( dict "imageRoot" .Values.images.collector "context" .) }} + imagePullPolicy: {{ .Values.images.collector.pullPolicy }} args: {{- include "nrKubernetesOtel.deployment.args" . | nindent 12 }} resources: diff --git a/charts/nr-k8s-otel-collector/tests/images_test.yaml b/charts/nr-k8s-otel-collector/tests/images_test.yaml index b59edde0f..14e0a55ed 100644 --- a/charts/nr-k8s-otel-collector/tests/images_test.yaml +++ b/charts/nr-k8s-otel-collector/tests/images_test.yaml @@ -21,14 +21,15 @@ tests: path: spec.template.spec.containers[0].image pattern: ".*nil.*" template: templates/daemonset.yaml - - it: loads image and version + - it: loads collector and version set: cluster: my-cluster licenseKey: us-whatever - image: - repository: nr/dot - pullPolicy: Always - tag: "1.1.1" + images: + collector: + repository: nr/dot + tag: "1.1.1" + pullPolicy: Always asserts: - equal: path: spec.template.spec.containers[0].image @@ -45,4 +46,97 @@ tests: - equal: path: spec.template.spec.containers[0].imagePullPolicy value: Always + template: templates/daemonset.yaml + - it: loads kubectl image with registry + set: + cluster: my-cluster + licenseKey: us-whatever + images: + kubectl: + registry: my.registry.io + repository: custom/kubectl + tag: "1.28" + pullPolicy: Always + asserts: + - equal: + path: spec.template.spec.initContainers[0].image + value: my.registry.io/custom/kubectl:1.28 + template: templates/daemonset.yaml + - equal: + path: spec.template.spec.initContainers[0].imagePullPolicy + value: Always + template: templates/daemonset.yaml + - it: uses registry for collector image + set: + cluster: my-cluster + licenseKey: us-whatever + images: + collector: + registry: ecr.aws.io + repository: newrelic/nrdot-collector-k8s + tag: "1.5.0" + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: ecr.aws.io/newrelic/nrdot-collector-k8s:1.5.0 + template: templates/deployment.yaml + - equal: + path: spec.template.spec.containers[0].image + value: ecr.aws.io/newrelic/nrdot-collector-k8s:1.5.0 + template: templates/daemonset.yaml + - it: supports imagePullSecrets + set: + cluster: my-cluster + licenseKey: us-whatever + images: + pullSecrets: + - name: my-ecr-secret + - name: another-secret + asserts: + - equal: + path: spec.template.spec.imagePullSecrets + value: + - name: my-ecr-secret + - name: another-secret + template: templates/deployment.yaml + - equal: + path: spec.template.spec.imagePullSecrets + value: + - name: my-ecr-secret + - name: another-secret + template: templates/daemonset.yaml + - it: supports global registry + set: + cluster: my-cluster + licenseKey: us-whatever + global: + images: + registry: global.registry.io + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: global.registry.io/newrelic/nrdot-collector-k8s:1.5.0 + template: templates/deployment.yaml + - equal: + path: spec.template.spec.containers[0].image + value: global.registry.io/newrelic/nrdot-collector-k8s:1.5.0 + template: templates/daemonset.yaml + - it: local registry overrides global registry + set: + cluster: my-cluster + licenseKey: us-whatever + global: + images: + registry: global.registry.io + images: + collector: + registry: local.registry.io + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: local.registry.io/newrelic/nrdot-collector-k8s:1.5.0 + template: templates/deployment.yaml + - equal: + path: spec.template.spec.containers[0].image + value: local.registry.io/newrelic/nrdot-collector-k8s:1.5.0 template: templates/daemonset.yaml \ No newline at end of file diff --git a/charts/nr-k8s-otel-collector/values.yaml b/charts/nr-k8s-otel-collector/values.yaml index 71f726619..5ee39d4c6 100644 --- a/charts/nr-k8s-otel-collector/values.yaml +++ b/charts/nr-k8s-otel-collector/values.yaml @@ -42,13 +42,23 @@ kube-state-metrics: # -- The provider that you are deploying your cluster into. Sets known config constraints for your specific provider. Currently supporting OpenShift and GKE autopilot. If set, provider must be one of "GKE_AUTOPILOT" or "OPEN_SHIFT" provider: "" -image: - # -- OTel collector image to be deployed. You can use your own collector as long it accomplish the following requirements mentioned below. - repository: newrelic/nrdot-collector-k8s - # -- The pull policy is defaulted to IfNotPresent, which skips pulling an image if it already exists. If pullPolicy is defined without a specific value, it is also set to Always. - pullPolicy: IfNotPresent - # -- Overrides the image tag whose default is the chart appVersion. - tag: "1.5.0" +# -- Images used by the chart. +images: + # -- The secrets that are needed to pull images from a custom registry. + pullSecrets: [] + # - name: regsecret + # -- Image for the OpenTelemetry Collector. + collector: + registry: "" + repository: newrelic/nrdot-collector-k8s + tag: "1.5.0" + pullPolicy: IfNotPresent + # -- Image for the initContainer that retrieves node allocatable resources. + kubectl: + registry: "" + repository: bitnami/kubectl + tag: latest + pullPolicy: IfNotPresent # -- In case you don't want to have the license key in you values, this allows you to point to a user created secret to get the key from there. Can be configured also with `global.customSecretName` customSecretName: "" From 4ccd1cbaf1bb6c254b3c72a9951a34afa4520d78 Mon Sep 17 00:00:00 2001 From: Daniel Budziwojski Date: Mon, 1 Dec 2025 18:13:51 -0800 Subject: [PATCH 2/3] Add backwards compatible configuration for images + deprecation notice --- .../nr-k8s-otel-collector/templates/NOTES.txt | 9 +++++ .../templates/_images.tpl | 21 ++++++++++ .../templates/daemonset.yaml | 4 +- .../templates/deployment.yaml | 4 +- .../tests/images_test.yaml | 25 ++++++++++++ .../tests/notes_test.yaml | 38 +++++++++++++++++++ 6 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 charts/nr-k8s-otel-collector/templates/NOTES.txt create mode 100644 charts/nr-k8s-otel-collector/templates/_images.tpl create mode 100644 charts/nr-k8s-otel-collector/tests/notes_test.yaml diff --git a/charts/nr-k8s-otel-collector/templates/NOTES.txt b/charts/nr-k8s-otel-collector/templates/NOTES.txt new file mode 100644 index 000000000..1301fd714 --- /dev/null +++ b/charts/nr-k8s-otel-collector/templates/NOTES.txt @@ -0,0 +1,9 @@ +{{- if (.Values.image).repository }} +WARNING: 'image.repository' is deprecated and will be removed in a future release. Please use 'images.collector.repository' instead. +{{- end }} +{{- if (.Values.image).tag }} +WARNING: 'image.tag' is deprecated and will be removed in a future release. Please use 'images.collector.tag' instead. +{{- end }} +{{- if (.Values.image).pullPolicy }} +WARNING: 'image.pullPolicy' is deprecated and will be removed in a future release. Please use 'images.collector.pullPolicy' instead. +{{- end }} \ No newline at end of file diff --git a/charts/nr-k8s-otel-collector/templates/_images.tpl b/charts/nr-k8s-otel-collector/templates/_images.tpl new file mode 100644 index 000000000..25f5e7a3a --- /dev/null +++ b/charts/nr-k8s-otel-collector/templates/_images.tpl @@ -0,0 +1,21 @@ +{{- /* +Temporary image helper to transition from old image config structure to new structure. +*/ -}} +{{- define "nrKubernetesOtel.images.collector.image" }} +{{- if or (.Values.image).repository (.Values.image).tag }} + {{- (.Values.image).repository | default .Values.images.collector.repository }}:{{- (.Values.image).tag | default .Chart.AppVersion }} +{{- else }} + {{- include "newrelic.common.images.image" ( dict "imageRoot" .Values.images.collector "context" .) }} +{{- end }} +{{- end }} + +{{- /* +Temporary imagePullPolicy helper to transition from old image config structure to new structure. +*/ -}} +{{- define "nrKubernetesOtel.images.collector.imagePullPolicy" }} +{{- if (.Values.image).pullPolicy }} + {{- .Values.image.pullPolicy }} +{{- else }} + {{- .Values.images.collector.pullPolicy }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/nr-k8s-otel-collector/templates/daemonset.yaml b/charts/nr-k8s-otel-collector/templates/daemonset.yaml index 0e0c4a768..11e14a952 100644 --- a/charts/nr-k8s-otel-collector/templates/daemonset.yaml +++ b/charts/nr-k8s-otel-collector/templates/daemonset.yaml @@ -92,8 +92,8 @@ spec: securityContext: {{- . | nindent 12 }} {{- end }} - image: {{ include "newrelic.common.images.image" ( dict "imageRoot" .Values.images.collector "context" .) }} - imagePullPolicy: {{ .Values.images.collector.pullPolicy }} + image: {{ include "nrKubernetesOtel.images.collector.image" . }} + imagePullPolicy: {{ include "nrKubernetesOtel.images.collector.imagePullPolicy" . }} args: {{- include "nrKubernetesOtel.daemonset.args" . | nindent 12 }} resources: diff --git a/charts/nr-k8s-otel-collector/templates/deployment.yaml b/charts/nr-k8s-otel-collector/templates/deployment.yaml index b4ae09f19..5caa5c43a 100644 --- a/charts/nr-k8s-otel-collector/templates/deployment.yaml +++ b/charts/nr-k8s-otel-collector/templates/deployment.yaml @@ -46,8 +46,8 @@ spec: securityContext: {{- . | nindent 12 }} {{- end }} - image: {{ include "newrelic.common.images.image" ( dict "imageRoot" .Values.images.collector "context" .) }} - imagePullPolicy: {{ .Values.images.collector.pullPolicy }} + image: {{ include "nrKubernetesOtel.images.collector.image" . }} + imagePullPolicy: {{ include "nrKubernetesOtel.images.collector.imagePullPolicy" . }} args: {{- include "nrKubernetesOtel.deployment.args" . | nindent 12 }} resources: diff --git a/charts/nr-k8s-otel-collector/tests/images_test.yaml b/charts/nr-k8s-otel-collector/tests/images_test.yaml index 14e0a55ed..a6ec4bbe5 100644 --- a/charts/nr-k8s-otel-collector/tests/images_test.yaml +++ b/charts/nr-k8s-otel-collector/tests/images_test.yaml @@ -8,6 +8,31 @@ release: name: my-release namespace: my-namespace tests: + - it: loads image and version from deprecated config + set: + cluster: my-cluster + licenseKey: us-whatever + image: + repository: nr/dot + pullPolicy: Always + tag: "1.1.1" + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: nr/dot:1.1.1 + template: templates/deployment.yaml + - equal: + path: spec.template.spec.containers[0].imagePullPolicy + value: Always + template: templates/deployment.yaml + - equal: + path: spec.template.spec.containers[0].image + value: nr/dot:1.1.1 + template: templates/daemonset.yaml + - equal: + path: spec.template.spec.containers[0].imagePullPolicy + value: Always + template: templates/daemonset.yaml - it: has a default image tag set: cluster: my-cluster diff --git a/charts/nr-k8s-otel-collector/tests/notes_test.yaml b/charts/nr-k8s-otel-collector/tests/notes_test.yaml new file mode 100644 index 000000000..f0570bc3b --- /dev/null +++ b/charts/nr-k8s-otel-collector/tests/notes_test.yaml @@ -0,0 +1,38 @@ +suite: images +templates: + - templates/NOTES.txt +release: + name: my-release + namespace: my-namespace +tests: + - it: is empty by default + set: + cluster: my-cluster + licenseKey: us-whatever + asserts: + - equalRaw: + value: "" + - it: is shows deprecation warning for 'image.repository' + set: + cluster: my-cluster + licenseKey: us-whatever + image.repository: "somerepo" + asserts: + - matchRegexRaw: + pattern: "WARNING: 'image.repository' is deprecated and will be removed in a future release. Please use 'images.collector.repository' instead." + - it: is shows deprecation warning for 'image.tag' + set: + cluster: my-cluster + licenseKey: us-whatever + image.tag: "1.2.3" + asserts: + - matchRegexRaw: + pattern: "WARNING: 'image.tag' is deprecated and will be removed in a future release. Please use 'images.collector.tag' instead." + - it: is shows deprecation warning for 'image.pullPolicy' + set: + cluster: my-cluster + licenseKey: us-whatever + image.pullPolicy: "Never" + asserts: + - matchRegexRaw: + pattern: "WARNING: 'image.pullPolicy' is deprecated and will be removed in a future release. Please use 'images.collector.pullPolicy' instead." From 92b42c99658b43eed2befdcbb764ba643b8a7edf Mon Sep 17 00:00:00 2001 From: Daniel Budziwojski Date: Mon, 1 Dec 2025 18:17:00 -0800 Subject: [PATCH 3/3] Regen examples + merge from main --- charts/nr-k8s-otel-collector/Chart.yaml | 2 +- .../examples/k8s/rendered/clusterrole.yaml | 2 +- .../examples/k8s/rendered/clusterrolebinding.yaml | 2 +- .../examples/k8s/rendered/daemonset-configmap.yaml | 4 ++-- .../examples/k8s/rendered/daemonset.yaml | 7 ++++--- .../examples/k8s/rendered/deployment-configmap.yaml | 6 +++--- .../examples/k8s/rendered/deployment.yaml | 4 ++-- .../examples/k8s/rendered/secret.yaml | 2 +- .../examples/k8s/rendered/service.yaml | 2 +- .../examples/k8s/rendered/serviceaccount.yaml | 2 +- 10 files changed, 17 insertions(+), 16 deletions(-) diff --git a/charts/nr-k8s-otel-collector/Chart.yaml b/charts/nr-k8s-otel-collector/Chart.yaml index e3b282e7f..a4ea88379 100644 --- a/charts/nr-k8s-otel-collector/Chart.yaml +++ b/charts/nr-k8s-otel-collector/Chart.yaml @@ -17,7 +17,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.9.6 +version: 0.9.7 dependencies: diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrole.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrole.yaml index 1e835b9d6..cefdac9d3 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrole.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrole.yaml @@ -9,7 +9,7 @@ metadata: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.6 + helm.sh/chart: nr-k8s-otel-collector-0.9.7 rules: - apiGroups: - "" diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrolebinding.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrolebinding.yaml index 2d8a7ac83..bef96d916 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrolebinding.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/clusterrolebinding.yaml @@ -9,7 +9,7 @@ metadata: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.6 + helm.sh/chart: nr-k8s-otel-collector-0.9.7 subjects: - kind: ServiceAccount name: nr-k8s-otel-collector diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset-configmap.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset-configmap.yaml index 52434a8a5..94a897c49 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset-configmap.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset-configmap.yaml @@ -10,7 +10,7 @@ metadata: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.6 + helm.sh/chart: nr-k8s-otel-collector-0.9.7 data: daemonset-config.yaml: | receivers: @@ -605,7 +605,7 @@ data: value: - key: "newrelic.chart.version" action: upsert - value: 0.9.6 + value: 0.9.7 - key: newrelic.entity.type action: upsert value: "k8s" diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset.yaml index b5892b59e..703693d34 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/daemonset.yaml @@ -10,7 +10,7 @@ metadata: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.6 + helm.sh/chart: nr-k8s-otel-collector-0.9.7 spec: selector: matchLabels: @@ -24,12 +24,13 @@ spec: app.kubernetes.io/name: nr-k8s-otel-collector component: daemonset annotations: - checksum/config: 6c393dbeeeb8b55c3da8659d412cfe48444e0047f0988787e14afd0292e00dc4 + checksum/config: dddebd4fdd4de1850611c50ea1e781a30c5fe67156ef3d602cc64f03501a01d1 spec: serviceAccountName: nr-k8s-otel-collector initContainers: - name: get-cpu-allocatable - image: bitnami/kubectl:latest + image: "bitnami/kubectl:latest" + imagePullPolicy: IfNotPresent command: - sh - -c diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment-configmap.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment-configmap.yaml index 5af31ba63..85569861d 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment-configmap.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment-configmap.yaml @@ -10,7 +10,7 @@ metadata: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.6 + helm.sh/chart: nr-k8s-otel-collector-0.9.7 data: deployment-config.yaml: | receivers: @@ -516,7 +516,7 @@ data: value: - key: "newrelic.chart.version" action: upsert - value: 0.9.6 + value: 0.9.7 - key: newrelic.entity.type action: upsert value: "k8s" @@ -534,7 +534,7 @@ data: value: - key: "newrelic.chart.version" action: upsert - value: 0.9.6 + value: 0.9.7 transform/events: log_statements: diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment.yaml index df0c9aeca..5e07e2ed2 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/deployment.yaml @@ -10,7 +10,7 @@ metadata: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.6 + helm.sh/chart: nr-k8s-otel-collector-0.9.7 spec: replicas: 1 minReadySeconds: 5 @@ -26,7 +26,7 @@ spec: app.kubernetes.io/name: nr-k8s-otel-collector component: deployment annotations: - checksum/config: ca6b21baf629a91df39d33fe47590c1664987620a0efb9c0f2c797c8a3fb5dd1 + checksum/config: 23c604532ee14493c0650bc5467c280096f3d3caec1c54961821e7728422ba9e spec: serviceAccountName: nr-k8s-otel-collector containers: diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/secret.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/secret.yaml index ff0e988d8..1f83390dc 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/secret.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/secret.yaml @@ -10,6 +10,6 @@ metadata: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.6 + helm.sh/chart: nr-k8s-otel-collector-0.9.7 data: licenseKey: PE5SX2xpY2Vuc2VLZXk+ diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/service.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/service.yaml index eab5ef0b1..383be5681 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/service.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/service.yaml @@ -10,7 +10,7 @@ metadata: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.6 + helm.sh/chart: nr-k8s-otel-collector-0.9.7 spec: type: ClusterIP ports: diff --git a/charts/nr-k8s-otel-collector/examples/k8s/rendered/serviceaccount.yaml b/charts/nr-k8s-otel-collector/examples/k8s/rendered/serviceaccount.yaml index 2f19e9a60..5784f41fe 100644 --- a/charts/nr-k8s-otel-collector/examples/k8s/rendered/serviceaccount.yaml +++ b/charts/nr-k8s-otel-collector/examples/k8s/rendered/serviceaccount.yaml @@ -10,5 +10,5 @@ metadata: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: nr-k8s-otel-collector app.kubernetes.io/version: 1.2.0 - helm.sh/chart: nr-k8s-otel-collector-0.9.6 + helm.sh/chart: nr-k8s-otel-collector-0.9.7 annotations: