astonishing-engineer-93454
04/24/2026, 9:11 PMsilly-engine-11095
04/28/2026, 2:40 PMsilly-engine-11095
04/28/2026, 2:43 PMastonishing-engineer-93454
04/28/2026, 4:07 PMastonishing-engineer-93454
04/28/2026, 4:12 PMsilly-engine-11095
04/28/2026, 4:23 PMsilly-engine-11095
04/28/2026, 4:25 PMsilly-engine-11095
04/28/2026, 4:26 PMastonishing-engineer-93454
04/28/2026, 4:35 PMsilly-engine-11095
04/28/2026, 4:36 PMsilly-engine-11095
04/28/2026, 4:36 PMsilly-engine-11095
04/28/2026, 4:37 PMsilly-engine-11095
04/28/2026, 4:37 PMastonishing-engineer-93454
04/28/2026, 4:40 PMastonishing-engineer-93454
04/28/2026, 4:43 PMstreaming: truesilly-engine-11095
04/28/2026, 4:46 PMastonishing-engineer-93454
04/28/2026, 4:49 PMsilly-engine-11095
04/28/2026, 4:51 PMsilly-engine-11095
04/28/2026, 4:51 PMsilly-engine-11095
04/28/2026, 4:52 PMastonishing-engineer-93454
04/28/2026, 4:52 PMastonishing-engineer-93454
04/28/2026, 4:53 PMsilly-engine-11095
04/28/2026, 4:56 PMsilly-engine-11095
04/28/2026, 4:57 PMastonishing-engineer-93454
04/28/2026, 4:59 PMdevelopment .astonishing-engineer-93454
04/28/2026, 5:00 PMNODE_ENV=production is used to hide debug and informational log messagessilly-engine-11095
04/28/2026, 5:01 PMsilly-engine-11095
04/28/2026, 5:01 PMastonishing-engineer-93454
04/28/2026, 5:02 PMyaml (your Kubernetes patch)
env:
- name: NODE_ENV
value: development
(then restart, example)
kubectl rollout restart deployment growthbook-proxy -n growthbook
kubectl logs -n growthbook deploy/growthbook-proxy -fsilly-engine-11095
04/28/2026, 5:10 PMgreen-lighter-44664
04/28/2026, 5:13 PMapiVersion: apps/v1
kind: Deployment
metadata:
name: growthbook-proxy
namespace: growthbook
spec:
replicas: 2
selector:
matchLabels:
app: growthbook-proxy
template:
metadata:
labels:
app: growthbook-proxy
spec:
containers:
- name: proxy
image: growthbook/proxy:v1.3.3
ports:
- containerPort: 3300
protocol: TCP
env:
- name: GROWTHBOOK_API_HOST
value: <https://api.growthbook.io>
- name: NODE_ENV
value: development
- name: SECRET_API_KEY
valueFrom:
secretKeyRef:
name: growthbook-proxy-secret
key: secret_api_key
- name: PUBLISH_PAYLOAD_TO_CHANNEL
value: 'true'
- name: CACHE_ENGINE
value: redis
- name: CACHE_CONNECTION_URL
value: >-
<redis://growthbook-proxy-redis-master.growthbook.svc.cluster.local:6379>
- name: OTEL_SERVICE_NAME
value: growthbook-proxy
- name: OTEL_EXPORTER_OTLP_PROTOCOL
value: http/protobuf
- name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
value: >-
<http://opentelemetry-collector.otel-collector.svc:4318/v1/metrics>
- name: OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
value: <http://opentelemetry-collector.otel-collector.svc:4318/v1/logs>
- name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
value: <http://opentelemetry-collector.otel-collector.svc:4318/v1/traces>
- name: OTEL_METRICS_EXPORTER
value: otlp
- name: OTEL_LOGS_EXPORTER
value: otlp
- name: OTEL_TRACES_EXPORTER
value: otlp
- name: OTEL_PROPAGATORS
value: tracecontext,baggage
- name: OTEL_BLRP_MAX_QUEUE_SIZE
value: '1000000'
- name: OTEL_BLRP_MAX_EXPORT_BATCH_SIZE
value: '1024'
- name: OTEL_RESOURCE_ATTRIBUTES
value: k8s.namespace.name=growthbook,deployment.environment=prod
- name: OTEL_NODE_RESOURCE_DETECTORS
value: env,host,os,process,serviceinstance
- name: OTEL_BSP_MAX_QUEUE_SIZE
value: '4096'
- name: OTEL_EXPORTER_OTLP_TIMEOUT
value: '30000'
- name: VERBOSE_DEBUGGING
value: '1'
resources: {}
livenessProbe:
tcpSocket:
port: 3300
initialDelaySeconds: 15
timeoutSeconds: 1
periodSeconds: 20
successThreshold: 1
failureThreshold: 3
readinessProbe:
tcpSocket:
port: 3300
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: Always
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext: {}
schedulerName: default-scheduler
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
revisionHistoryLimit: 10
progressDeadlineSeconds: 600astonishing-engineer-93454
04/28/2026, 5:21 PMgreen-lighter-44664
04/28/2026, 5:28 PMapiVersion: v1
kind: Service
metadata:
name: growthbook-proxy
namespace: growthbook
uid: db2fc3a5-d3b1-4a58-8b27-3bf740318562
resourceVersion: '161601000'
creationTimestamp: '2026-03-17T14:43:02Z'
annotations:
<http://kubectl.kubernetes.io/last-applied-configuration|kubectl.kubernetes.io/last-applied-configuration>: >
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"growthbook-proxy","namespace":"growthbook"},"spec":{"ports":[{"port":3300,"protocol":"TCP","targetPort":3300}],"selector":{"app":"growthbook-proxy"},"type":"ClusterIP"}}
selfLink: /api/v1/namespaces/growthbook/services/growthbook-proxy
status:
loadBalancer: {}
spec:
ports:
- protocol: TCP
port: 3300
targetPort: 3300
selector:
app: growthbook-proxy
clusterIP: 10.100.152.63
clusterIPs:
- 10.100.152.63
type: ClusterIP
sessionAffinity: None
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
internalTrafficPolicy: Clusterastonishing-engineer-93454
04/28/2026, 5:36 PMsilly-engine-11095
04/28/2026, 6:02 PMastonishing-engineer-93454
04/28/2026, 6:05 PMkubectl get ingress -n growthbookastonishing-engineer-93454
04/28/2026, 6:07 PMastonishing-engineer-93454
04/28/2026, 6:12 PMastonishing-engineer-93454
04/28/2026, 6:49 PMpnpm start to pnpm start:with-tracing."astonishing-engineer-93454
04/28/2026, 9:11 PMapiVersion: apps/v1
kind: Deployment
metadata:
name: growthbook-proxy
namespace: growthbook
spec:
replicas: 2
selector:
matchLabels:
app: growthbook-proxy
template:
metadata:
labels:
app: growthbook-proxy
spec:
containers:
- name: proxy
image: growthbook/proxy:v1.3.3
imagePullPolicy: IfNotPresent
# Critical for GrowthBook Proxy OpenTelemetry support
command: ["pnpm"]
args: ["start:with-tracing"]
ports:
- name: http
containerPort: 3300
protocol: TCP
env:
- name: GROWTHBOOK_API_HOST
value: <https://api.growthbook.io>
- name: NODE_ENV
value: production
- name: SECRET_API_KEY
valueFrom:
secretKeyRef:
name: growthbook-proxy-secret
key: secret_api_key
# Multi-replica cache / pub-sub sync
- name: PUBLISH_PAYLOAD_TO_CHANNEL
value: "true"
- name: CACHE_ENGINE
value: redis
- name: CACHE_CONNECTION_URL
value: <redis://growthbook-proxy-redis-master.growthbook.svc.cluster.local:6379>
# Optional, but useful if you are using SSE / streaming
- name: ENABLE_EVENT_STREAM
value: "true"
# OpenTelemetry service identity
- name: OTEL_SERVICE_NAME
value: growthbook-proxy
- name: OTEL_RESOURCE_ATTRIBUTES
value: k8s.namespace.name=growthbook,service.namespace=growthbook,deployment.environment=prod
- name: OTEL_NODE_RESOURCE_DETECTORS
value: env,host,os,process,serviceinstance
# OTLP over HTTP/protobuf
- name: OTEL_EXPORTER_OTLP_PROTOCOL
value: http/protobuf
- name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
value: <http://opentelemetry-collector.otel-collector.svc:4318/v1/metrics>
- name: OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
value: <http://opentelemetry-collector.otel-collector.svc:4318/v1/logs>
- name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
value: <http://opentelemetry-collector.otel-collector.svc:4318/v1/traces>
# Enable exporters
- name: OTEL_METRICS_EXPORTER
value: otlp
- name: OTEL_LOGS_EXPORTER
value: otlp
- name: OTEL_TRACES_EXPORTER
value: otlp
- name: OTEL_PROPAGATORS
value: tracecontext,baggage
# Export tuning
- name: OTEL_BSP_MAX_QUEUE_SIZE
value: "4096"
- name: OTEL_BSP_MAX_EXPORT_BATCH_SIZE
value: "512"
- name: OTEL_BLRP_MAX_QUEUE_SIZE
value: "4096"
- name: OTEL_BLRP_MAX_EXPORT_BATCH_SIZE
value: "512"
- name: OTEL_EXPORTER_OTLP_TIMEOUT
value: "30000"
# Use temporarily during setup; remove or set to 0 after validation
- name: VERBOSE_DEBUGGING
value: "1"
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
readinessProbe:
httpGet:
path: /healthcheck
port: 3300
initialDelaySeconds: 5
timeoutSeconds: 2
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
livenessProbe:
httpGet:
path: /healthcheck
port: 3300
initialDelaySeconds: 15
timeoutSeconds: 2
periodSeconds: 20
successThreshold: 1
failureThreshold: 3
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext: {}
schedulerName: default-scheduler
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
revisionHistoryLimit: 10
progressDeadlineSeconds: 600green-lighter-44664
04/29/2026, 8:44 AMError: failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: exec: "pnpm": executable file not found in $PATH. (8s)astonishing-engineer-93454
04/29/2026, 8:55 AMnpm in place of pnpmgreen-lighter-44664
04/29/2026, 9:15 AMcommand: ["npm"]
args: ["run", "start:with-tracing"]astonishing-engineer-93454
04/29/2026, 9:19 AMgreen-lighter-44664
04/29/2026, 9:20 AMastonishing-engineer-93454
04/29/2026, 9:43 AMsilly-engine-11095
04/29/2026, 1:29 PMsilly-engine-11095
04/29/2026, 1:31 PMastonishing-engineer-93454
04/29/2026, 3:13 PMastonishing-engineer-93454
04/29/2026, 3:23 PMsilly-engine-11095
04/29/2026, 5:44 PMcommand: ["npm"]
args: ["run", "start:with-tracing"]
we only have " | " as a first symbolsilly-engine-11095
04/29/2026, 5:45 PMastonishing-engineer-93454
04/29/2026, 6:47 PMastonishing-engineer-93454
04/29/2026, 6:51 PMastonishing-engineer-93454
04/29/2026, 8:41 PMsilly-engine-11095
04/30/2026, 1:32 PMsilly-engine-11095
04/30/2026, 1:36 PMastonishing-engineer-93454
04/30/2026, 2:38 PMastonishing-engineer-93454
04/30/2026, 7:13 PM