Skip to content

Instantly share code, notes, and snippets.

@pavlovmilen
Last active July 27, 2025 11:52
Show Gist options
  • Select an option

  • Save pavlovmilen/76f6164fca6249e41947f9191c171073 to your computer and use it in GitHub Desktop.

Select an option

Save pavlovmilen/76f6164fca6249e41947f9191c171073 to your computer and use it in GitHub Desktop.
Kubernetes yaml files
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jaeger-deployment
namespace: __namespace__
spec:
replicas: 1
selector:
matchLabels:
app: jaeger
component: all-in-one
template:
metadata:
labels:
app: jaeger
component: all-in-one
spec:
containers:
- name: jaeger
image: jaegertracing/all-in-one:latest
imagePullPolicy: Always
resources:
limits:
memory: '1Gi'
cpu: '500m'
requests:
memory: '256Mi'
cpu: '100m'
ports:
- containerPort: 16686
name: query
protocol: TCP
- containerPort: 4317
name: otlp-grpc
protocol: TCP
- containerPort: 4318
name: otlp-http
protocol: TCP
- containerPort: 14268
name: jaeger-thrift
protocol: TCP
- containerPort: 9411
name: zipkin
protocol: TCP
env:
- name: COLLECTOR_OTLP_ENABLED
value: "true"
- name: JAEGER_DISABLED
value: "false"
- name: LOG_LEVEL
value: "info"
# Memory storage configuration for development
- name: SPAN_STORAGE_TYPE
value: "memory"
- name: JAEGER_MEMORY_MAX_TRACES
value: "50000"
# Health checks for Jaeger
livenessProbe:
httpGet:
path: /
port: 16686
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /
port: 16686
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
automountServiceAccountToken: false
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: jaeger-ingress
namespace: __namespace__
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-production
cert-manager.io/acme-challenge-type: http01
# Simple configuration for Jaeger - no complex rewrites needed
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "60"
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
# Disable buffering for better UI responsiveness
nginx.ingress.kubernetes.io/proxy-buffering: "off"
nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
# CORS headers for Jaeger UI
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/cors-allow-methods: "GET, POST, OPTIONS, PUT, DELETE"
nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization"
# WebSocket support for real-time updates
nginx.ingress.kubernetes.io/proxy-set-headers: |
Host $host;
X-Real-IP $remote_addr;
X-Forwarded-For $proxy_add_x_forwarded_for;
X-Forwarded-Proto $scheme;
X-Forwarded-Host $host;
Upgrade $http_upgrade;
Connection $connection_upgrade;
spec:
rules:
- host: your_domain.com
http:
paths:
# All paths go directly to Jaeger service - no rewriting needed
- path: /
pathType: Prefix
backend:
service:
name: jaeger-service
port:
number: 16686
tls:
- hosts:
- your_domain.com
secretName: jaeger-tls
---
apiVersion: v1
kind: Service
metadata:
name: jaeger-service
namespace: __namespace__
labels:
app: jaeger
component: all-in-one
spec:
type: ClusterIP
ports:
- port: 16686
targetPort: 16686
protocol: TCP
name: jaeger-ui
- port: 4317
targetPort: 4317
protocol: TCP
name: otlp-grpc
- port: 4318
targetPort: 4318
protocol: TCP
name: otlp-http
- port: 14268
targetPort: 14268
protocol: TCP
name: jaeger-thrift
- port: 9411
targetPort: 9411
protocol: TCP
name: zipkin
selector:
app: jaeger
component: all-in-one
# Add session affinity for consistent Jaeger UI experience
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 3600 # 1 hour session stickiness
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment