From 70b928532ca682775667896c55b14c0c4257b2c0 Mon Sep 17 00:00:00 2001 From: Tim Chan Date: Fri, 19 Jul 2024 16:47:05 -0700 Subject: [PATCH] Added custom image pull secrets integ test --- .changelog/3808.changed.txt | 1 + deploy/helm/sumologic/README.md | 3 + .../templates/events/otelcol/statefulset.yaml | 6 ++ .../otelcol-instrumentation/statefulset.yaml | 6 ++ .../traces-gateway/deployment.yaml | 6 ++ .../traces-sampler/deployment.yaml | 6 ++ .../logs/collector/otelcol/daemonset.yaml | 64 +++++++++------- .../templates/logs/otelcol/statefulset.yaml | 6 ++ .../metrics/otelcol/statefulset.yaml | 6 ++ .../helm/sumologic/templates/setup/job.yaml | 6 ++ deploy/helm/sumologic/values.yaml | 12 +++ tests/helm/common_test.go | 76 +++++++++++++++++++ tests/helm/const.go | 1 + .../custom-global-config-attributes.yaml | 39 +++++++++- 14 files changed, 208 insertions(+), 30 deletions(-) create mode 100644 .changelog/3808.changed.txt diff --git a/.changelog/3808.changed.txt b/.changelog/3808.changed.txt new file mode 100644 index 0000000000..0ca38c8a28 --- /dev/null +++ b/.changelog/3808.changed.txt @@ -0,0 +1 @@ +test: Added custom image pull secrets tests for global configuration attributes \ No newline at end of file diff --git a/deploy/helm/sumologic/README.md b/deploy/helm/sumologic/README.md index 7ccdbd9c2c..645162e6d7 100644 --- a/deploy/helm/sumologic/README.md +++ b/deploy/helm/sumologic/README.md @@ -227,6 +227,7 @@ The following table lists the configurable parameters of the Sumo Logic chart an | `kube-prometheus-stack.kube-state-metrics.resources` | Resource limits for kube state metrics. Uses sub-chart defaults. | `{"limits": {"cpu": "100m", "memory": "64Mi"}, "requests": {"cpu": "10m", "memory": "32Mi"}}` | | `kube-prometheus-stack.kube-state-metrics.customLabels` | Custom labels to apply to service, deployment and pods. Uses sub-chart defaults. | `{}` | | `kube-prometheus-stack.kube-state-metrics.podAnnotations` | Additional annotations for pods in the DaemonSet. Uses sub-chart defaults. | `{}` | +| `kube-prometheus-stack.kube-state-metrics.imagePullSecrets` | Pull secrets for falco images. For more information on using Kubernetes secrets with container registries please refer to [Creating a Secret with a Docker config at kubernetes.io](https://kubernetes.io/docs/concepts/containers/images/ | `[]` | | `kube-prometheus-stack.prometheus.enabled` | Enable Prometheus | `false` | | `kube-prometheus-stack.prometheus.additionalServiceMonitors` | List of ServiceMonitor objects to create. | See [values.yaml] | | `kube-prometheus-stack.prometheus.prometheusSpec.image.repository` | Container repository for Prometheus. | `public.ecr.aws/sumologic/prometheus` | @@ -240,6 +241,7 @@ The following table lists the configurable parameters of the Sumo Logic chart an | `kube-prometheus-stack.prometheus-node-exporter.image.repository` | Prometheus Node Exporter container image repository. | `public.ecr.aws/sumologic/node-exporter` | | `kube-prometheus-stack.prometheus-node-exporter.podLabels` | Additional labels for prometheus-node-exporter pods. | `{}` | | `kube-prometheus-stack.prometheus-node-exporter.podAnnotations` | Additional annotations for prometheus-node-exporter pods. | `{}` | +| `kube-prometheus-stack.prometheus-node-exporter.imagePullSecrets` | Pull secrets for falco images. For more information on using Kubernetes secrets with container registries please refer to [Creating a Secret with a Docker config at kubernetes.io](https://kubernetes.io/docs/concepts/containers/images/ | `[]` | | `kube-prometheus-stack.prometheus-node-exporter.resources` | Resource limits for node exporter. Uses sub-chart defaults. | `{"limits": {"cpu": "200m", "memory": "50Mi"}, "requests": {"cpu": "100m", "memory": "30Mi"}}` | | `kube-prometheus-stack.prometheus-node-exporter.nodeSelector` | Node selector for prometheus node exporter. [See help.sumologic.com/docs/send-data/kubernetes/best-practices for more information.](https://help.sumologic.com/docs/send-data/kubernetes/best-practices/) | `{"kubernetes.io/os": "linux"}` | | `kube-prometheus-stack.kube-state-metrics.nodeSelector` | Node selector for kube-state-metrics. [See help.sumologic.com/docs/send-data/kubernetes/best-practices for more information.](https://help.sumologic.com/docs/send-data/kubernetes/best-practices/) | `{"kubernetes.io/os": "linux"}` | @@ -378,6 +380,7 @@ The following table lists the configurable parameters of the Sumo Logic chart an | `tracesGateway.autoscaling.maxReplicas` | Default max replicas for autoscaling | `10` | | `tracesGateway.autoscaling.targetCPUUtilizationPercentage` | The desired target CPU utilization for autoscaling. | `100` | | `tracesGateway.autoscaling.targetMemoryUtilizationPercentage` | The desired target memory utilization for autoscaling. | `50` | +| `tracesGateway.deployment.imagePullSecrets` | Pull secrets for falco images. For more information on using Kubernetes secrets with container registries please refer to [Creating a Secret with a Docker config at kubernetes.io](https://kubernetes.io/docs/concepts/containers/images/ | `[]` | | `tracesGateway.deployment.replicas` | Set the number of OpenTelemetry Collector replicas. | `1` | | `tracesGateway.deployment.nodeSelector` | Node selector for otelcol deployment. [See help.sumologic.com/docs/send-data/kubernetes/best-practices for more information.](https://help.sumologic.com/docs/send-data/kubernetes/best-practices/) | `{}` | | `tracesGateway.deployment.priorityClassName` | Priority class name for OpenTelemetry Collector log pods. | `Nil` | diff --git a/deploy/helm/sumologic/templates/events/otelcol/statefulset.yaml b/deploy/helm/sumologic/templates/events/otelcol/statefulset.yaml index 2050170386..755fd85457 100644 --- a/deploy/helm/sumologic/templates/events/otelcol/statefulset.yaml +++ b/deploy/helm/sumologic/templates/events/otelcol/statefulset.yaml @@ -35,6 +35,12 @@ spec: {{ toYaml .Values.otelevents.statefulset.podLabels | indent 8 }} {{- end }} spec: + {{- if $.Values.sumologic.pullSecrets }} + imagePullSecrets: +{{- range $.Values.sumologic.pullSecrets }} + - name: {{ .name }} +{{- end }} + {{- end }} serviceAccountName: {{ template "sumologic.metadata.name.roles.serviceaccount" . }} {{- if not (empty (include "events.statefulset.nodeSelector" .)) }} nodeSelector: diff --git a/deploy/helm/sumologic/templates/instrumentation/otelcol-instrumentation/statefulset.yaml b/deploy/helm/sumologic/templates/instrumentation/otelcol-instrumentation/statefulset.yaml index c2f0a76d87..54ce9c8d5f 100644 --- a/deploy/helm/sumologic/templates/instrumentation/otelcol-instrumentation/statefulset.yaml +++ b/deploy/helm/sumologic/templates/instrumentation/otelcol-instrumentation/statefulset.yaml @@ -45,6 +45,12 @@ spec: {{ toYaml $otelcolInstrumentation.statefulset.podLabels | indent 8 }} {{- end }} spec: + {{- if $.Values.sumologic.pullSecrets }} + imagePullSecrets: +{{- range $.Values.sumologic.pullSecrets }} + - name: {{ .name }} +{{- end }} + {{- end }} serviceAccountName: {{ template "sumologic.metadata.name.roles.serviceaccount" . }} {{- if not (empty (include "otelcolInstrumentation.statefulset.nodeSelector" .)) }} nodeSelector: diff --git a/deploy/helm/sumologic/templates/instrumentation/traces-gateway/deployment.yaml b/deploy/helm/sumologic/templates/instrumentation/traces-gateway/deployment.yaml index 2d06d143e8..98e6509c28 100644 --- a/deploy/helm/sumologic/templates/instrumentation/traces-gateway/deployment.yaml +++ b/deploy/helm/sumologic/templates/instrumentation/traces-gateway/deployment.yaml @@ -46,6 +46,12 @@ spec: {{ toYaml $tracesGateway.deployment.podLabels | indent 8 }} {{- end }} spec: + {{- if $.Values.sumologic.pullSecrets }} + imagePullSecrets: +{{- range $.Values.sumologic.pullSecrets }} + - name: {{ .name }} +{{- end }} + {{- end }} serviceAccountName: {{ template "sumologic.metadata.name.roles.serviceaccount" . }} {{- if not (empty (include "tracesGateway.deployment.nodeSelector" .)) }} nodeSelector: diff --git a/deploy/helm/sumologic/templates/instrumentation/traces-sampler/deployment.yaml b/deploy/helm/sumologic/templates/instrumentation/traces-sampler/deployment.yaml index 85c7114213..cb751caaf9 100644 --- a/deploy/helm/sumologic/templates/instrumentation/traces-sampler/deployment.yaml +++ b/deploy/helm/sumologic/templates/instrumentation/traces-sampler/deployment.yaml @@ -42,6 +42,12 @@ spec: {{ toYaml $tracesSampler.deployment.podLabels | indent 8 }} {{- end }} spec: + {{- if $.Values.sumologic.pullSecrets }} + imagePullSecrets: +{{- range $.Values.sumologic.pullSecrets }} + - name: {{ .name }} +{{- end }} + {{- end }} serviceAccountName: {{ template "sumologic.metadata.name.roles.serviceaccount" . }} {{- if not (empty (include "tracesSampler.deployment.nodeSelector" .)) }} nodeSelector: diff --git a/deploy/helm/sumologic/templates/logs/collector/otelcol/daemonset.yaml b/deploy/helm/sumologic/templates/logs/collector/otelcol/daemonset.yaml index 9fc2e63e4c..bb3fbe4c8c 100644 --- a/deploy/helm/sumologic/templates/logs/collector/otelcol/daemonset.yaml +++ b/deploy/helm/sumologic/templates/logs/collector/otelcol/daemonset.yaml @@ -3,7 +3,7 @@ {{- $instance := "" -}} {{- $defaultTolerations := (include "sumologic.logs.collector.tolerations" .) }} {{- $defaultAffinity := (include "kubernetes.defaultAffinity" .) }} -{{- $daemonsets := dict "" $.Values.otellogs.daemonset -}} +{{- $daemonsets := dict "" $.Values.otellogs.daemonset -}} {{- $daemonsets = deepCopy $daemonsets | merge $.Values.otellogs.additionalDaemonSets -}} {{- range $name, $daemonset := $daemonsets }} {{- $defaultDaemonset := deepCopy $.Values.otellogs.daemonset }} @@ -29,17 +29,17 @@ apiVersion: apps/v1 kind: DaemonSet metadata: name: {{ printf "%s%s" (include "sumologic.metadata.name.logs.collector.daemonset" $ctx) $instance | trunc 63 | trimSuffix "-" }} - namespace: {{ template "sumologic.namespace" $ctx }} + namespace: {{ template "sumologic.namespace" $ctx }} {{- if $daemonset.annotations }} annotations: -{{ toYaml $daemonset.annotations| indent 4 }} -{{- end }} +{{ toYaml $daemonset.annotations | indent 4 }} + {{- end }} labels: app: {{ template "sumologic.labels.app.logs.collector.daemonset" $ctx }} {{- include "sumologic.labels.common" $ctx | nindent 4 }} -{{- if $daemonset.labels }} + {{- if $daemonset.labels }} {{ toYaml $daemonset.labels | indent 4 }} -{{- end }} + {{- end }} spec: selector: matchLabels: @@ -48,35 +48,41 @@ spec: metadata: annotations: checksum/config: {{ include (print $.Template.BasePath "/logs/collector/otelcol/configmap.yaml") $ctx | sha256sum }} -{{- if $.Values.sumologic.podAnnotations }} + {{- if $.Values.sumologic.podAnnotations }} {{ toYaml $.Values.sumologic.podAnnotations | indent 8 }} -{{- end }} -{{- if $daemonset.podAnnotations }} + {{- end }} + {{- if $daemonset.podAnnotations }} {{ toYaml $daemonset.podAnnotations | indent 8 }} -{{- end }} + {{- end }} labels: app.kubernetes.io/name: {{ printf "%s%s" (include "sumologic.labels.app.logs.collector.pod" $ctx) $instance | trunc 63 | trimSuffix "-" }} app.kubernetes.io/app-name: {{ (include "sumologic.labels.app.logs.collector.pod" $ctx) | trunc 63 | trimSuffix "-" }} {{- include "sumologic.labels.common" $ctx | nindent 8 }} -{{- if $.Values.sumologic.podLabels }} + {{- if $.Values.sumologic.podLabels }} {{ toYaml $.Values.sumologic.podLabels | indent 8 }} -{{- end }} -{{- if $daemonset.podLabels }} + {{- end }} + {{- if $daemonset.podLabels }} {{ toYaml $daemonset.podLabels | indent 8 }} -{{- end }} + {{- end }} spec: -{{- if $nodeSelector }} + {{- if $nodeSelector }} nodeSelector: {{ $nodeSelector | indent 8 }} -{{- end }} -{{- if $affinity }} + {{- end }} + {{- if $affinity }} affinity: {{ $affinity | indent 8 }} -{{- end }} -{{- if $tolerations }} + {{- end }} + {{- if $tolerations }} tolerations: {{ $tolerations | indent 8 }} + {{- end }} + {{- if $.Values.sumologic.pullSecrets }} + imagePullSecrets: +{{- range $.Values.sumologic.pullSecrets }} + - name: {{ .name }} {{- end }} + {{- end }} securityContext: {{- toYaml $daemonset.securityContext | nindent 8 }} {{- if $daemonset.priorityClassName }} @@ -114,9 +120,9 @@ spec: - mountPath: /var/log/journal name: varlogjournal readOnly: true -{{- if $daemonset.extraVolumeMounts }} + {{- if $daemonset.extraVolumeMounts }} {{ toYaml $daemonset.extraVolumeMounts | indent 8 }} -{{- end }} + {{- end }} env: - name: LOGS_METADATA_SVC valueFrom: @@ -127,9 +133,9 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace -{{- if $daemonset.extraEnvVars }} + {{- if $daemonset.extraEnvVars }} {{ toYaml $daemonset.extraEnvVars | nindent 8 }} -{{- end }} + {{- end }} securityContext: {{- toYaml $daemonset.containers.otelcol.securityContext | nindent 10 }} ports: @@ -180,13 +186,13 @@ spec: path: /var/log/journal/ type: "" name: varlogjournal -{{- if $daemonset.extraVolumes }} + {{- if $daemonset.extraVolumes }} {{ toYaml $daemonset.extraVolumes | indent 6 }} -{{- end }} + {{- end }} serviceAccountName: {{ template "sumologic.metadata.name.logs.collector.serviceaccount" $ctx }} -{{- if $daemonset.updateStrategy }} + {{- if $daemonset.updateStrategy }} updateStrategy: {{ toYaml $daemonset.updateStrategy | indent 4 }} -{{- end }} -{{- end }} -{{- end }} + {{- end }} + {{- end }} + {{- end }} diff --git a/deploy/helm/sumologic/templates/logs/otelcol/statefulset.yaml b/deploy/helm/sumologic/templates/logs/otelcol/statefulset.yaml index 5b60d50b81..0247f9b21e 100644 --- a/deploy/helm/sumologic/templates/logs/otelcol/statefulset.yaml +++ b/deploy/helm/sumologic/templates/logs/otelcol/statefulset.yaml @@ -42,6 +42,12 @@ spec: {{ toYaml .Values.metadata.logs.statefulset.podLabels | indent 8 }} {{- end }} spec: + {{- if $.Values.sumologic.pullSecrets }} + imagePullSecrets: +{{- range $.Values.sumologic.pullSecrets }} + - name: {{ .name }} +{{- end }} + {{- end }} serviceAccountName: {{ template "sumologic.metadata.name.roles.serviceaccount" . }} {{- if not (empty (include "metadata.logs.statefulset.nodeSelector" .)) }} nodeSelector: diff --git a/deploy/helm/sumologic/templates/metrics/otelcol/statefulset.yaml b/deploy/helm/sumologic/templates/metrics/otelcol/statefulset.yaml index 99b4e05495..6fa86c7103 100644 --- a/deploy/helm/sumologic/templates/metrics/otelcol/statefulset.yaml +++ b/deploy/helm/sumologic/templates/metrics/otelcol/statefulset.yaml @@ -42,6 +42,12 @@ spec: {{ toYaml .Values.metadata.metrics.statefulset.podLabels | indent 8 }} {{- end }} spec: + {{- if $.Values.sumologic.pullSecrets }} + imagePullSecrets: +{{- range $.Values.sumologic.pullSecrets }} + - name: {{ .name }} +{{- end }} + {{- end }} serviceAccountName: {{ template "sumologic.metadata.name.roles.serviceaccount" . }} {{- if not (empty (include "metadata.metrics.statefulset.nodeSelector" .)) }} nodeSelector: diff --git a/deploy/helm/sumologic/templates/setup/job.yaml b/deploy/helm/sumologic/templates/setup/job.yaml index 9a1093cdc9..bffb1cad9f 100644 --- a/deploy/helm/sumologic/templates/setup/job.yaml +++ b/deploy/helm/sumologic/templates/setup/job.yaml @@ -35,6 +35,12 @@ spec: {{- end }} spec: restartPolicy: OnFailure + {{- if $.Values.sumologic.pullSecrets }} + imagePullSecrets: +{{- range $.Values.sumologic.pullSecrets }} + - name: {{ .name }} +{{- end }} + {{- end }} serviceAccountName: {{ template "sumologic.metadata.name.setup.roles.serviceaccount" . }} {{- if not (empty (include "setup.job.nodeSelector" .)) }} nodeSelector: diff --git a/deploy/helm/sumologic/values.yaml b/deploy/helm/sumologic/values.yaml index 516a0d409d..253c92ff84 100644 --- a/deploy/helm/sumologic/values.yaml +++ b/deploy/helm/sumologic/values.yaml @@ -1081,6 +1081,8 @@ kube-prometheus-stack: customLabels: {} ## Additional annotations for pods in the DaemonSet podAnnotations: {} + imagePullSecrets: [] + resources: {} # limits: @@ -1164,6 +1166,9 @@ kube-prometheus-stack: image: repository: public.ecr.aws/sumologic/node-exporter + ## ref: https://github.com/prometheus-community/helm-charts/blob/main/charts/prometheus-node-exporter/values.yaml#L12C1-L12C17 + imagePullSecrets: [] + nodeSelector: kubernetes.io/os: linux @@ -1319,6 +1324,8 @@ kube-prometheus-stack: prometheus-windows-exporter: enabled: false + imagePullSecrets: [] + ## Enable ServiceMonitor and set Kubernetes label to use as a job label ## prometheus: @@ -1819,6 +1826,7 @@ tracesGateway: podLabels: {} ## Add custom annotations only to traces-gateway deployment. podAnnotations: {} + imagePullSecrets: [] image: # repository: "" # tag: "" @@ -2079,6 +2087,8 @@ otellogs: ## Add custom annotations to all otelcol daemonset pods podAnnotations: {} + imagePullSecrets: [] + resources: limits: memory: 1Gi @@ -2233,6 +2243,8 @@ otellogswindows: ## Add custom annotations to all otelcol daemonset pods podAnnotations: {} + imagePullSecrets: [] + resources: limits: memory: 1Gi diff --git a/tests/helm/common_test.go b/tests/helm/common_test.go index d8ed4f9a20..a5e5720cb3 100644 --- a/tests/helm/common_test.go +++ b/tests/helm/common_test.go @@ -475,6 +475,15 @@ func GetTolerations(object unstructured.Unstructured) ([]corev1.Toleration, erro return nil, nil } +func ContainsImagePullSecret(imagePullSecrets []corev1.LocalObjectReference, expectedSecret string) bool { + for _, secret := range imagePullSecrets { + if secret.Name == expectedSecret { + return true + } + } + return false +} + func TestNamespaceOverride(t *testing.T) { valuesFilePath := path.Join(testDataDirectory, "everything-enabled.yaml") namespaceOverride := "override" @@ -692,3 +701,70 @@ func TestCustomServiceAccountAnnotations(t *testing.T) { } } } + +func TestCustomImagePullSecrets(t *testing.T) { + t.Parallel() + valuesFilePath := path.Join(testDataDirectory, "custom-global-config-attributes.yaml") + renderedYamlString := RenderTemplate( + t, + &helm.Options{ + ValuesFiles: []string{valuesFilePath}, + SetStrValues: map[string]string{ + "sumologic.accessId": "accessId", + "sumologic.accessKey": "accessKey", + }, + Logger: logger.Discard, + }, + chartDirectory, + releaseName, + []string{}, + true, + "--namespace", + defaultNamespace, + ) + + renderedObjects := UnmarshalMultipleFromYaml[unstructured.Unstructured](t, renderedYamlString) + + for _, renderedObject := range renderedObjects { + kind := renderedObject.GetObjectKind().GroupVersionKind().Kind + + // Service Account is another type that uses image pull secrets + if kind == "ServiceAccount" { + serviceAccount := &corev1.ServiceAccount{} + err := runtime.DefaultUnstructuredConverter.FromUnstructured(renderedObject.Object, serviceAccount) + require.NoError(t, err) + if isSubchartObject(serviceAccount) { + continue + } + + assert.True( + t, + ContainsImagePullSecret(serviceAccount.ImagePullSecrets, customImagePullSecrets), + "Expected imagePullSecret %v not found in ServiceAccount %s", + customImagePullSecrets, + serviceAccount.GetName() + ) + } else { + podTemplateSpec, err := GetPodTemplateSpec(renderedObject) + if err != nil { + t.Logf("Error getting PodTemplateSpec for object %s: %v", renderedObject.GetName(), err) + continue + } + + if podTemplateSpec == nil { + t.Logf("PodTemplateSpec is nil for object %s", renderedObject.GetName()) + continue + } + + require.NotEmpty(t, podTemplateSpec.Spec.ImagePullSecrets, "%s %s should have imagePullSecrets", kind, renderedObject.GetName()) + assert.True( + t, + ContainsImagePullSecret(podTemplateSpec.Spec.ImagePullSecrets, customImagePullSecrets), + "Expected imagePullSecret %v not found in %s %s", + customImagePullSecrets, + kind, + renderedObject.GetName() + ) + } + } +} diff --git a/tests/helm/const.go b/tests/helm/const.go index c43b3e027d..4b782a248a 100644 --- a/tests/helm/const.go +++ b/tests/helm/const.go @@ -23,6 +23,7 @@ const ( customLabelValue = "customLabelValue" customAnnotationsKey = "customAnnotationsKey" customAnnotationsValue = "customAnnotationsValue" + customImagePullSecrets = "customImagePullSecrets" ) var subChartNames []string = []string{ diff --git a/tests/helm/testdata/custom-global-config-attributes.yaml b/tests/helm/testdata/custom-global-config-attributes.yaml index 864e18330f..b611ccd032 100644 --- a/tests/helm/testdata/custom-global-config-attributes.yaml +++ b/tests/helm/testdata/custom-global-config-attributes.yaml @@ -1,8 +1,9 @@ sumologic: + pullSecrets: + - name: customImagePullSecrets metrics: remoteWriteProxy: enabled: true - podLabels: customLabelKey: customLabelValue podAnnotations: @@ -10,13 +11,22 @@ sumologic: serviceAccount: annotations: customServiceAccountAnnotationKey: customServiceAccountAnnotationValue + setup: + job: + pullSecrets: + - name: customImagePullSecrets kube-prometheus-stack: + global: + imagePullSecrets: + - name: customImagePullSecrets kube-state-metrics: customLabels: customLabelKey: customLabelValue podAnnotations: customAnnotationsKey: customAnnotationsValue + imagePullSecrets: + - name: customImagePullSecrets prometheus: enabled: true prometheusSpec: @@ -26,10 +36,13 @@ kube-prometheus-stack: annotations: customAnnotationsKey: customAnnotationsValue prometheus-node-exporter: + enabled: true podLabels: customLabelKey: customLabelValue podAnnotations: customAnnotationsKey: customAnnotationsValue + imagePullSecrets: + - name: customImagePullSecrets opentelemetry-operator: manager: @@ -37,9 +50,13 @@ opentelemetry-operator: customLabelKey: customLabelValue podAnnotations: customAnnotationsKey: customAnnotationsValue + imagePullSecrets: + - name: customImagePullSecrets falco: enabled: true + imagePullSecrets: + - name: customImagePullSecrets podLabels: customLabelKey: customLabelValue podAnnotations: @@ -51,3 +68,23 @@ prometheus-windows-exporter: customLabelKey: customLabelValue podAnnotations: customAnnotationsKey: customAnnotationsValue + imagePullSecrets: + - name: customImagePullSecrets + +metrics-server: + image: + pullSecrets: + - name: customImagePullSecrets + +telegraf-operator: + imagePullSecrets: + - name: customImagePullSecrets + +otellogs: + daemonset: + imagePullSecrets: + - name: customImagePullSecrets + +tracesGateway: + imagePullSecrets: + - name: customImagePullSecrets