Skip to content
Open
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/plane-enterprise/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Meet Plane. An Enterprise software development tool to manage issue

type: application

version: 2.7.0
version: 2.8.0
appVersion: "2.6.3"

home: https://plane.so/
Expand Down
58 changes: 58 additions & 0 deletions charts/plane-enterprise/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -242,3 +242,61 @@ Caller must nindent to the correct depth.
value: "/ca-bundle/custom-ca-bundle.crt"
{{- end }}
{{- end -}}

{{/*
OpenTelemetry inline env vars for a single workload.

The Django backend (api, worker, beat-worker, automation-consumer, outbox-poller,
migrator) already sources the shared OTEL_* config from the app-vars ConfigMap
(see config-secrets/app-env.yaml). This helper renders those same keys INLINE so
that services which do NOT consume app-vars — the Node services (silo, live), the
SSR frontend (space) and Plane Intelligence (pi-api, pi-worker, pi-beat) — get
full OTel coverage, and so every workload can report its own OTEL_SERVICE_NAME
(inline env wins over envFrom). Kept in sync with the OTEL block in app-env.yaml.

Call with a dict carrying the root context and the per-service name:
{{- include "plane.otelServiceEnv" (dict "context" $ "service" "silo") }}
Pass "full" false to emit ONLY the OTEL_SERVICE_NAME override — used by Django
workloads that already get the rest of the OTEL_* keys from app-vars.
Caller must indent to the correct depth (matches the s3CA*EnvVars pattern).
*/}}
{{- define "plane.otelServiceEnv" -}}
{{- $ctx := .context -}}
{{- $otel := $ctx.Values.observability.otel -}}
{{- if $otel.enabled -}}
- name: OTEL_SERVICE_NAME
value: {{ .service | quote }}
{{- if not (eq .full false) }}
- name: OTEL_ENABLED
value: "1"
{{- if $otel.endpoint }}
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: {{ $otel.endpoint | quote }}
{{- else if $otel.collector.enabled }}
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://{{ $ctx.Release.Name }}-otel-collector.{{ $ctx.Release.Namespace }}.svc.{{ $ctx.Values.env.default_cluster_domain | default "cluster.local" }}:{{ eq ($otel.protocol | default "grpc") "grpc" | ternary "4317" "4318" }}"
{{- else }}
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: ""
{{- end }}
- name: OTEL_EXPORTER_OTLP_PROTOCOL
value: {{ $otel.protocol | default "grpc" | quote }}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
- name: OTEL_TRACES_SAMPLER
value: {{ $otel.tracesSampler | default "parentbased_traceidratio" | quote }}
- name: OTEL_TRACES_SAMPLER_ARG
value: {{ $otel.tracesSamplerArg | default "0.1" | quote }}
{{- if $otel.resourceAttributes }}
- name: OTEL_RESOURCE_ATTRIBUTES
value: {{ $otel.resourceAttributes | quote }}
{{- end }}
{{- if $otel.debugConsole }}
- name: OTEL_DEBUG_CONSOLE
value: "1"
{{- end }}
{{- if $otel.headers }}
- name: OTEL_EXPORTER_OTLP_HEADERS
value: {{ $otel.headers | quote }}
{{- end }}
Comment on lines +296 to +299

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

OTLP auth headers embedded in plaintext in Deployment manifests for non-Django workloads.

For callers using full (the default, e.g. live, space, and presumably silo/pi-*), OTEL_EXPORTER_OTLP_HEADERS is rendered as an inline literal value: on the container spec rather than via valueFrom.secretKeyRef. This puts auth tokens/API keys directly into the Deployment object (visible via kubectl get deployment -o yaml to anyone with Deployment read access, and persisted in plaintext in etcd absent encryption-at-rest), which contradicts the design intent stated for the Django backend path — where headers are deliberately routed into the -app-secrets Secret rather than the -app-vars ConfigMap specifically to avoid this exposure.

Consider sourcing this value from a Secret (create/reuse an otel-headers Secret and reference it via secretKeyRef) for the full path as well, to match the security posture already established for the Django backend workloads.

💡 Sketch of an alternative using a Secret reference
 {{- if $otel.headers }}
 - name: OTEL_EXPORTER_OTLP_HEADERS
-  value: {{ $otel.headers | quote }}
+  valueFrom:
+    secretKeyRef:
+      name: {{ $ctx.Release.Name }}-otel-secrets
+      key: OTEL_EXPORTER_OTLP_HEADERS
 {{- end }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{{- if $otel.headers }}
- name: OTEL_EXPORTER_OTLP_HEADERS
value: {{ $otel.headers | quote }}
{{- end }}
{{- if $otel.headers }}
- name: OTEL_EXPORTER_OTLP_HEADERS
valueFrom:
secretKeyRef:
name: {{ $ctx.Release.Name }}-otel-secrets
key: OTEL_EXPORTER_OTLP_HEADERS
{{- end }}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/plane-enterprise/templates/_helpers.tpl` around lines 296 - 299, The
OTEL exporter headers in the full workload path are being rendered inline as a
plain container env value, which exposes sensitive auth data in the Deployment
manifest. Update the helpers in _helpers.tpl around the
OTEL_EXPORTER_OTLP_HEADERS rendering so the full path sources headers from a
Secret via valueFrom.secretKeyRef instead of value, reusing or creating an
otel-headers Secret as needed. Keep the existing Django backend secret-based
pattern consistent across full, live, space, and silo/pi-* callers by routing
through the same secret-backed helper/branch.

{{- end }}
{{- end }}
{{- end -}}
40 changes: 40 additions & 0 deletions charts/plane-enterprise/templates/config-secrets/app-env.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ stringData:
{{- if include "plane.s3CAEnabled" . }}
AWS_CA_BUNDLE: "/etc/ssl/certs/ca-certificates.crt"
{{- end }}

{{- if and .Values.observability.otel.enabled .Values.observability.otel.headers }}
OTEL_EXPORTER_OTLP_HEADERS: {{ .Values.observability.otel.headers | quote }}
{{- end }}
{{- end }}
---

Expand Down Expand Up @@ -108,3 +112,39 @@ data:
{{- else}}
CORS_ALLOWED_ORIGINS: "http://{{ .Values.license.licenseDomain }},https://{{ .Values.license.licenseDomain }}"
{{- end }}

{{- /* OpenTelemetry APM for the Django backend (api, worker, beat-worker,
automation-consumer, outbox-poller, migrator). No-op in the app unless
OTEL_ENABLED=1 and an endpoint is set. Auth headers, if any, live in the
app-secrets Secret above. See docs/otel-api-observability in plane-ee. */}}
{{- if .Values.observability.otel.enabled }}
OTEL_ENABLED: "1"
OTEL_SERVICE_NAME: {{ .Values.observability.otel.serviceName | default "plane-api" | quote }}
{{- if .Values.observability.otel.endpoint }}
OTEL_EXPORTER_OTLP_ENDPOINT: {{ .Values.observability.otel.endpoint | quote }}
{{- else if .Values.observability.otel.collector.enabled }}
{{- $collectorPort := eq (.Values.observability.otel.protocol | default "grpc") "grpc" | ternary "4317" "4318" }}
OTEL_EXPORTER_OTLP_ENDPOINT: "http://{{ .Release.Name }}-otel-collector.{{ .Release.Namespace }}.svc.{{ .Values.env.default_cluster_domain | default "cluster.local" }}:{{ $collectorPort }}"
{{- else }}
OTEL_EXPORTER_OTLP_ENDPOINT: ""
{{- end }}
OTEL_EXPORTER_OTLP_PROTOCOL: {{ .Values.observability.otel.protocol | default "grpc" | quote }}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
OTEL_TRACES_SAMPLER: {{ .Values.observability.otel.tracesSampler | default "parentbased_traceidratio" | quote }}
OTEL_TRACES_SAMPLER_ARG: {{ .Values.observability.otel.tracesSamplerArg | default "0.1" | quote }}
{{- if .Values.observability.otel.resourceAttributes }}
OTEL_RESOURCE_ATTRIBUTES: {{ .Values.observability.otel.resourceAttributes | quote }}
{{- end }}
{{- if .Values.observability.otel.debugConsole }}
OTEL_DEBUG_CONSOLE: "1"
{{- end }}
{{- /* Browser/client tracing. Read ONLY by the API, which serves it to the
web/admin/space browsers via its public instance config — a no-op env on
every other workload, so it lives here on the API's app-vars alone. */}}
{{- if .Values.observability.otel.frontend.enabled }}
FRONTEND_OTEL_ENABLED: "1"
FRONTEND_OTLP_ENDPOINT: {{ .Values.observability.otel.frontend.endpoint | default .Values.observability.otel.endpoint | quote }}
{{- if .Values.observability.otel.frontend.headers }}
FRONTEND_OTLP_HEADERS: {{ .Values.observability.otel.frontend.headers | quote }}
{{- end }}
{{- end }}
{{- end }}
120 changes: 120 additions & 0 deletions charts/plane-enterprise/templates/observability/otel-collector.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
{{- /*
Bundled OpenTelemetry Collector. Rendered only when OTEL is enabled AND the
bundled collector is requested. Self-hosters pointing at an external collector
(Datadog Agent, Grafana Cloud, an existing cluster collector) leave
observability.otel.collector.enabled=false and these resources are omitted.

When enabled with an empty observability.otel.endpoint, the backend auto-targets
this collector's in-cluster Service (see config-secrets/app-env.yaml).
*/}}
{{- if and .Values.observability.otel.enabled .Values.observability.otel.collector.enabled }}
apiVersion: v1
kind: ConfigMap
metadata:
namespace: {{ .Release.Namespace }}
name: {{ .Release.Name }}-otel-collector-config
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-otel-collector
data:
config.yaml: |
{{- if .Values.observability.otel.collector.config }}
{{ .Values.observability.otel.collector.config | indent 4 }}
{{- else }}
# Default pipeline: receive OTLP, log via `debug`. Override the whole config
# with observability.otel.collector.config to export to a real backend.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
batch:
timeout: 10s
send_batch_size: 1024
exporters:
debug:
verbosity: detailed
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [debug]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [debug]
{{- end }}

---

apiVersion: v1
kind: Service
metadata:
namespace: {{ .Release.Namespace }}
name: {{ .Release.Name }}-otel-collector
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-otel-collector
spec:
type: ClusterIP
ports:
- name: otlp-grpc
port: 4317
protocol: TCP
targetPort: 4317
- name: otlp-http
port: 4318
protocol: TCP
targetPort: 4318
selector:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-otel-collector

---

apiVersion: apps/v1
kind: Deployment
metadata:
namespace: {{ .Release.Namespace }}
name: {{ .Release.Name }}-otel-collector
{{- include "plane.labelsAndAnnotations" (dict "context" $ "values" .Values.observability.otel.collector) }}
spec:
replicas: {{ .Values.observability.otel.collector.replicas | default 1 }}
selector:
matchLabels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-otel-collector
template:
metadata:
namespace: {{ .Release.Namespace }}
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-otel-collector
annotations:
timestamp: {{ now | quote }}
spec:
{{- include "plane.podScheduling" .Values.observability.otel.collector }}
Comment on lines +87 to +95

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- target file (relevant ranges) ---'
nl -ba charts/plane-enterprise/templates/observability/otel-collector.yaml | sed -n '1,220p'

echo
echo '--- checksum patterns in repo ---'
rg -n 'checksum/|now \| quote|sha256sum' charts/plane-enterprise -S

Repository: makeplane/helm-charts

Length of output: 237


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- target file (relevant ranges) ---'
sed -n '1,220p' charts/plane-enterprise/templates/observability/otel-collector.yaml | cat -n

echo
echo '--- checksum patterns in repo ---'
rg -n 'checksum/|now \| quote|sha256sum' charts/plane-enterprise -S

Repository: makeplane/helm-charts

Length of output: 7360


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- checksum / configmap annotation patterns in repo ---'
rg -n 'checksum/.*config|configmap.*sha256sum|sha256sum.*config|include .*sha256sum|checksum/config' charts -S

echo
echo '--- config-related pod annotations in repo ---'
rg -n 'annotations:|timestamp: \{\{ now \| quote \}\}' charts/plane-enterprise/templates -S

Repository: makeplane/helm-charts

Length of output: 216


Avoid the unconditional now annotation.

timestamp: {{ now | quote }} changes on every render, so this Deployment rolls on every upgrade even when the collector config is unchanged. Use a checksum of the ConfigMap data instead so pods restart only when the config changes.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/plane-enterprise/templates/observability/otel-collector.yaml` around
lines 87 - 95, The `template.metadata.annotations` block in the `otel-collector`
Deployment uses an unconditional `now` timestamp, which forces a rollout on
every render. Replace `timestamp: {{ now | quote }}` with a stable checksum
annotation derived from the OTel collector ConfigMap data, and wire it to the
collector template so the pod restarts only when the config changes. Use the
existing `template.metadata.annotations` section in `otel-collector.yaml` to add
the checksum key and remove the time-based value.

containers:
- name: {{ .Release.Name }}-otel-collector
imagePullPolicy: {{ .Values.observability.otel.collector.pullPolicy | default "IfNotPresent" }}
image: {{ .Values.observability.otel.collector.image | default "otel/opentelemetry-collector-contrib:0.115.1" }}
args: ["--config=/etc/otel/config.yaml"]
ports:
- name: otlp-grpc
containerPort: 4317
- name: otlp-http
containerPort: 4318
resources:
requests:
memory: {{ .Values.observability.otel.collector.memoryRequest | default "128Mi" | quote }}
cpu: {{ .Values.observability.otel.collector.cpuRequest | default "100m" | quote }}
limits:
memory: {{ .Values.observability.otel.collector.memoryLimit | default "512Mi" | quote }}
cpu: {{ .Values.observability.otel.collector.cpuLimit | default "500m" | quote }}
volumeMounts:
- name: config
mountPath: /etc/otel
volumes:
- name: config
configMap:
name: {{ .Release.Name }}-otel-collector-config
{{- end }}
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,14 @@ spec:
- secretRef:
name: {{ if not (empty .Values.external_secrets.opensearch_existingSecret) }}{{ .Values.external_secrets.opensearch_existingSecret }}{{ else }}{{ .Release.Name }}-opensearch-secrets{{ end }}
optional: false
{{- if .Values.extraEnv }}
{{- if or .Values.extraEnv .Values.observability.otel.enabled }}
env:
{{- with (include "plane.otelServiceEnv" (dict "context" $ "service" "automation-consumer" "full" false)) }}
{{ . | indent 10 }}
{{- end }}
{{- if .Values.extraEnv }}
{{- toYaml .Values.extraEnv | nindent 10 }}
{{- end }}
{{- end }}

serviceAccount: {{ .Release.Name }}-srv-account
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,14 @@ spec:
name: {{ if not (empty .Values.external_secrets.silo_env_existingSecret) }}{{ .Values.external_secrets.silo_env_existingSecret }}{{ else }}{{ .Release.Name }}-silo-secrets{{ end }}
optional: false
{{- end }}
{{- if .Values.extraEnv }}
{{- if or .Values.extraEnv .Values.observability.otel.enabled }}
env:
{{- with (include "plane.otelServiceEnv" (dict "context" $ "service" "beat-worker" "full" false)) }}
{{ . | indent 10 }}
{{- end }}
{{- if .Values.extraEnv }}
{{- toYaml .Values.extraEnv | nindent 10 }}
{{- end }}
{{- end }}

serviceAccount: {{ .Release.Name }}-srv-account
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,12 @@ spec:
- secretRef:
name: {{ if not (empty .Values.external_secrets.live_env_existingSecret) }}{{ .Values.external_secrets.live_env_existingSecret }}{{ else }}{{ .Release.Name }}-live-secrets{{ end }}
optional: false
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) }}
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) .Values.observability.otel.enabled }}
env:
{{- with (include "plane.s3CANodeEnvVars" .) }}
{{ . | indent 10 }}
{{- end }}
{{- with (include "plane.otelServiceEnv" (dict "context" $ "service" "live")) }}
{{ . | indent 10 }}
{{- end }}
{{- if .Values.extraEnv }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,14 @@ spec:
- secretRef:
name: {{ if not (empty .Values.external_secrets.app_env_existingSecret) }}{{ .Values.external_secrets.app_env_existingSecret }}{{ else }}{{ .Release.Name }}-app-secrets{{ end }}
optional: false
{{- if .Values.extraEnv }}
{{- if or .Values.extraEnv .Values.observability.otel.enabled }}
env:
{{- with (include "plane.otelServiceEnv" (dict "context" $ "service" "outbox-poller" "full" false)) }}
{{ . | indent 10 }}
{{- end }}
{{- if .Values.extraEnv }}
{{- toYaml .Values.extraEnv | nindent 10 }}
{{- end }}
{{- end }}

serviceAccount: {{ .Release.Name }}-srv-account
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,12 @@ spec:
- secretRef:
name: {{ if not (empty .Values.external_secrets.opensearch_existingSecret) }}{{ .Values.external_secrets.opensearch_existingSecret }}{{ else }}{{ .Release.Name }}-opensearch-secrets{{ end }}
optional: false
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) }}
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) .Values.observability.otel.enabled }}
env:
{{- with (include "plane.s3CAEnvVars" .) }}
{{ . | indent 10 }}
{{- end }}
{{- with (include "plane.otelServiceEnv" (dict "context" $ "service" "pi-api")) }}
{{ . | indent 10 }}
{{- end }}
Comment on lines +91 to 98

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

OTLP auth headers rendered as plaintext env value, unlike the Secret-backed path used for backend workloads.

plane.otelServiceEnv (per _helpers.tpl) emits OTEL_EXPORTER_OTLP_HEADERS as a literal quoted value:

- name: OTEL_EXPORTER_OTLP_HEADERS
  value: {{ $otel.headers | quote }}

This is called here without "full" false, so pi-api (and pi-beat, pi-worker, silo) get this literal value baked directly into the Deployment spec. Per the PR objectives, auth headers are otherwise treated as sensitive and routed into -app-secrets for the Django backend path — this inline path breaks that contract, exposing potential OTLP auth tokens (e.g. Bearer/API-key headers) in the Deployment manifest, which is visible to a broader RBAC surface (and GitOps/CI diff logs) than a Secret would be.

Consider sourcing OTEL_EXPORTER_OTLP_HEADERS via valueFrom.secretKeyRef against a dedicated Secret (mirroring the -app-secrets treatment), instead of inlining the raw value in _helpers.tpl.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/plane-enterprise/templates/workloads/pi-api.deployment.yaml` around
lines 91 - 98, The OTLP headers for pi-api are being inlined as a plain env
value through plane.otelServiceEnv, which exposes sensitive auth headers in the
Deployment manifest. Update the pi-api workload to source
OTEL_EXPORTER_OTLP_HEADERS from a Secret via valueFrom.secretKeyRef, matching
the backend secret-backed pattern instead of relying on the default literal
output from plane.otelServiceEnv. Use the existing plane.otelServiceEnv helper
and the pi-api deployment env block to locate the change.

{{- if .Values.extraEnv }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,12 @@ spec:
- secretRef:
name: {{ if not (empty .Values.external_secrets.opensearch_existingSecret) }}{{ .Values.external_secrets.opensearch_existingSecret }}{{ else }}{{ .Release.Name }}-opensearch-secrets{{ end }}
optional: false
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) }}
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) .Values.observability.otel.enabled }}
env:
{{- with (include "plane.s3CAEnvVars" .) }}
{{ . | indent 10 }}
{{- end }}
{{- with (include "plane.otelServiceEnv" (dict "context" $ "service" "pi-beat")) }}
{{ . | indent 10 }}
{{- end }}
{{- if .Values.extraEnv }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,12 @@ spec:
- secretRef:
name: {{ if not (empty .Values.external_secrets.opensearch_existingSecret) }}{{ .Values.external_secrets.opensearch_existingSecret }}{{ else }}{{ .Release.Name }}-opensearch-secrets{{ end }}
optional: false
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) }}
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) .Values.observability.otel.enabled }}
env:
{{- with (include "plane.s3CAEnvVars" .) }}
{{ . | indent 10 }}
{{- end }}
{{- with (include "plane.otelServiceEnv" (dict "context" $ "service" "pi-worker")) }}
{{ . | indent 10 }}
{{- end }}
{{- if .Values.extraEnv }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,12 @@ spec:
- secretRef:
name: {{ if not (empty .Values.external_secrets.doc_store_existingSecret) }}{{ .Values.external_secrets.doc_store_existingSecret }}{{ else }}{{ .Release.Name }}-doc-store-secrets{{ end }}
optional: false
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) }}
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) .Values.observability.otel.enabled }}
env:
{{- with (include "plane.s3CANodeEnvVars" .) }}
{{ . | indent 10 }}
{{- end }}
{{- with (include "plane.otelServiceEnv" (dict "context" $ "service" "silo")) }}
{{ . | indent 10 }}
{{- end }}
{{- if .Values.extraEnv }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,14 @@ spec:
limits:
memory: {{ .Values.services.space.memoryLimit | default "1000Mi" | quote }}
cpu: {{ .Values.services.space.cpuLimit | default "500m" | quote}}
{{- if .Values.extraEnv }}
{{- if or .Values.extraEnv .Values.observability.otel.enabled }}
env:
{{- with (include "plane.otelServiceEnv" (dict "context" $ "service" "space")) }}
{{ . | indent 10 }}
{{- end }}
{{- if .Values.extraEnv }}
{{- toYaml .Values.extraEnv | nindent 10 }}
{{- end }}
{{- end }}
serviceAccount: {{ .Release.Name }}-srv-account
serviceAccountName: {{ .Release.Name }}-srv-account
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,12 @@ spec:
optional: false
{{- end }}

{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) }}
{{- if or .Values.extraEnv (include "plane.s3CAEnabled" .) .Values.observability.otel.enabled }}
env:
{{- with (include "plane.s3CAEnvVars" .) }}
{{ . | indent 10 }}
{{- end }}
{{- with (include "plane.otelServiceEnv" (dict "context" $ "service" "worker" "full" false)) }}
{{ . | indent 10 }}
{{- end }}
{{- if .Values.extraEnv }}
Expand Down
Loading