diff --git a/deploy/openshift/deploy-to-openshift.sh b/deploy/openshift/deploy-to-openshift.sh index ba53780d..5de629bb 100755 --- a/deploy/openshift/deploy-to-openshift.sh +++ b/deploy/openshift/deploy-to-openshift.sh @@ -264,6 +264,17 @@ spec: EOF success "Routes created" +# Deploy Jaeger for tracing +log "Deploying Jaeger for distributed tracing..." +if [[ -d "$SCRIPT_DIR/observability/jaeger" ]]; then + oc apply -f "$SCRIPT_DIR/observability/jaeger/deployment.yaml" -n "$NAMESPACE" + oc apply -f "$SCRIPT_DIR/observability/jaeger/service.yaml" -n "$NAMESPACE" + oc apply -f "$SCRIPT_DIR/observability/jaeger/route.yaml" -n "$NAMESPACE" + success "Jaeger deployed" +else + warn "Jaeger deployment files not found at $SCRIPT_DIR/observability/jaeger, skipping..." +fi + log "Waiting for deployments to be ready..." log "This may take several minutes as models are downloaded..." diff --git a/deploy/openshift/observability/jaeger/deployment.yaml b/deploy/openshift/observability/jaeger/deployment.yaml new file mode 100644 index 00000000..4d3feb56 --- /dev/null +++ b/deploy/openshift/observability/jaeger/deployment.yaml @@ -0,0 +1,85 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jaeger + namespace: vllm-semantic-router-system + labels: + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: observability + app.kubernetes.io/part-of: semantic-router-stack +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: observability + template: + metadata: + labels: + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: observability + app.kubernetes.io/part-of: semantic-router-stack + spec: + securityContext: + runAsNonRoot: true + seccompProfile: + type: RuntimeDefault + containers: + - name: jaeger + image: jaegertracing/all-in-one:latest + ports: + - name: ui + containerPort: 16686 + protocol: TCP + - name: otlp-grpc + containerPort: 4317 + protocol: TCP + - name: otlp-http + containerPort: 4318 + protocol: TCP + - name: jaeger-grpc + containerPort: 14250 + protocol: TCP + - name: jaeger-thrift + containerPort: 14268 + protocol: TCP + - name: zipkin + containerPort: 9411 + protocol: TCP + env: + - name: COLLECTOR_OTLP_ENABLED + value: "true" + - name: SPAN_STORAGE_TYPE + value: "memory" + - name: MEMORY_MAX_TRACES + value: "10000" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + seccompProfile: + type: RuntimeDefault + livenessProbe: + httpGet: + path: / + port: 16686 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: 16686 + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 5 + failureThreshold: 3 + resources: + requests: + memory: "512Mi" + cpu: "250m" + limits: + memory: "1Gi" + cpu: "500m" diff --git a/deploy/openshift/observability/jaeger/route.yaml b/deploy/openshift/observability/jaeger/route.yaml new file mode 100644 index 00000000..be884fbf --- /dev/null +++ b/deploy/openshift/observability/jaeger/route.yaml @@ -0,0 +1,20 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + name: jaeger + namespace: vllm-semantic-router-system + labels: + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: observability + app.kubernetes.io/part-of: semantic-router-stack +spec: + to: + kind: Service + name: jaeger + weight: 100 + port: + targetPort: ui + tls: + termination: edge + insecureEdgeTerminationPolicy: Redirect + wildcardPolicy: None diff --git a/deploy/openshift/observability/jaeger/service.yaml b/deploy/openshift/observability/jaeger/service.yaml new file mode 100644 index 00000000..0c8b4020 --- /dev/null +++ b/deploy/openshift/observability/jaeger/service.yaml @@ -0,0 +1,39 @@ +apiVersion: v1 +kind: Service +metadata: + name: jaeger + namespace: vllm-semantic-router-system + labels: + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: observability + app.kubernetes.io/part-of: semantic-router-stack +spec: + type: ClusterIP + ports: + - name: ui + port: 16686 + targetPort: 16686 + protocol: TCP + - name: otlp-grpc + port: 4317 + targetPort: 4317 + protocol: TCP + - name: otlp-http + port: 4318 + targetPort: 4318 + protocol: TCP + - name: jaeger-grpc + port: 14250 + targetPort: 14250 + protocol: TCP + - name: jaeger-thrift + port: 14268 + targetPort: 14268 + protocol: TCP + - name: zipkin + port: 9411 + targetPort: 9411 + protocol: TCP + selector: + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: observability