Skip to content

Commit eec047f

Browse files
authored
Add deployment configuration (#16)
1 parent bce24eb commit eec047f

File tree

3 files changed

+159
-1
lines changed

3 files changed

+159
-1
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
FROM python:3.12-slim
2+
3+
WORKDIR /app
4+
5+
RUN apt-get update && apt-get install -y \
6+
git \
7+
&& rm -rf /var/lib/apt/lists/*
8+
9+
# Copy only required directories for package installation
10+
COPY util/ /app/util/
11+
COPY instrumentation-genai/ /app/instrumentation-genai/
12+
13+
RUN echo "=== Contents of /app ===" && \
14+
ls -la /app/ && \
15+
echo "=== Checking for util directory ===" && \
16+
ls -la /app/util/ || echo "ERROR: util dir not found at /app/util/" && \
17+
echo "=== Checking for opentelemetry-util-genai ===" && \
18+
ls -la /app/util/opentelemetry-util-genai/ || echo "ERROR: opentelemetry-util-genai not found" && \
19+
echo "=== Checking pyproject.toml ===" && \
20+
test -f /app/util/opentelemetry-util-genai/pyproject.toml && echo "pyproject.toml exists" || echo "ERROR: No pyproject.toml"
21+
22+
RUN python -m pip install --upgrade pip
23+
24+
RUN python -m pip install pre-commit rstcheck || true
25+
26+
# Set HOME to a writable directory BEFORE installing deepeval-related packages
27+
# This allows deepeval to create .deepeval directory during import
28+
ENV HOME=/tmp
29+
30+
RUN pip uninstall -y opentelemetry-util-genai || true && \
31+
pip install -e /app/util/opentelemetry-util-genai --no-deps
32+
33+
RUN pip uninstall -y opentelemetry-util-genai-emitters-splunk || true && \
34+
pip install -e /app/util/opentelemetry-util-genai-emitters-splunk --no-deps
35+
36+
RUN pip uninstall -y opentelemetry-util-genai-evals || true && \
37+
pip install -e /app/util/opentelemetry-util-genai-evals --no-deps
38+
39+
RUN pip uninstall -y opentelemetry-util-genai-evals-deepeval || true && \
40+
pip install -e /app/util/opentelemetry-util-genai-evals-deepeval
41+
42+
RUN pip uninstall -y opentelemetry-instrumentation-langchain || true && \
43+
pip install -e /app/instrumentation-genai/opentelemetry-instrumentation-langchain
44+
45+
RUN pip install -r /app/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/requirements.txt
46+
47+
WORKDIR /app/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner
48+
49+
# Pre-create .deepeval directory in the working directory to avoid permission errors
50+
# This must be done AFTER setting WORKDIR since deepeval creates .deepeval in CWD
51+
RUN mkdir -p .deepeval && \
52+
chmod 777 .deepeval && \
53+
python -c "import deepeval" || true
54+
55+
EXPOSE 8080
56+
CMD ["python", "main.py"]
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
---
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: langgraph-travel-agent-langchain-config
6+
namespace: travel-agent
7+
data:
8+
OPENAI_MODEL: "gpt-4o-mini"
9+
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "DELTA"
10+
OTEL_LOGS_EXPORTER: "otlp"
11+
OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED: "true"
12+
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT: "true"
13+
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT_MODE: "SPAN_AND_EVENT"
14+
OTEL_INSTRUMENTATION_GENAI_EMITTERS: "span_metric_event,splunk"
15+
OTEL_INSTRUMENTATION_GENAI_EVALS_RESULTS_AGGREGATION: "true"
16+
OTEL_INSTRUMENTATION_GENAI_EMITTERS_EVALUATION: "replace-category:SplunkEvaluationResults"
17+
OTEL_INSTRUMENTATION_GENAI_DEBUG: "true"
18+
# OTEL_INSTRUMENTATION_LANGCHAIN_DEBUG: "true"
19+
# OTEL_INSTRUMENTATION_GENAI_EVALS_EVALUATORS: "deepeval(LLMInvocation(bias,toxicity))"
20+
DEEPEVAL_FILE_SYSTEM: "READ_ONLY"
21+
22+
---
23+
apiVersion: batch/v1
24+
kind: CronJob
25+
metadata:
26+
name: langgraph-travel-agent-langchain-cronjob
27+
namespace: travel-agent
28+
labels:
29+
app: langgraph-travel-agent-langchain
30+
component: cronjob
31+
spec:
32+
schedule: "*/5 * * * *"
33+
successfulJobsHistoryLimit: 3
34+
failedJobsHistoryLimit: 3
35+
concurrencyPolicy: Forbid
36+
startingDeadlineSeconds: 600
37+
38+
jobTemplate:
39+
metadata:
40+
labels:
41+
app: langgraph-travel-agent-langchain
42+
component: job
43+
spec:
44+
activeDeadlineSeconds: 900
45+
backoffLimit: 2
46+
47+
template:
48+
metadata:
49+
labels:
50+
app: langgraph-travel-agent-langchain
51+
component: pod
52+
annotations:
53+
sidecar.istio.io/inject: "false"
54+
spec:
55+
restartPolicy: Never
56+
57+
containers:
58+
- name: langgraph-travel-agent-langchain
59+
image: ertserendavga918/langgraph-travel-agent-langchain:v1.0.9
60+
imagePullPolicy: Always
61+
62+
envFrom:
63+
- configMapRef:
64+
name: langgraph-travel-agent-langchain-config
65+
66+
env:
67+
- name: OPENAI_API_KEY
68+
valueFrom:
69+
secretKeyRef:
70+
name: langgraph-travel-agent-langchain-secrets
71+
key: openai-api-key
72+
- name: OTEL_SERVICE_NAME
73+
value: "langgraph-travel-agent-langchain"
74+
- name: OTEL_RESOURCE_ATTRIBUTES
75+
value: "deployment.environment=o11y-inframon-ai"
76+
- name: SPLUNK_OTEL_AGENT
77+
valueFrom:
78+
fieldRef:
79+
fieldPath: status.hostIP
80+
- name: OTEL_EXPORTER_OTLP_ENDPOINT
81+
value: "http://$(SPLUNK_OTEL_AGENT):4317"
82+
- name: OTEL_EXPORTER_OTLP_PROTOCOL
83+
value: "grpc"
84+
- name: HOME
85+
value: "/tmp"
86+
87+
resources:
88+
requests:
89+
memory: "512Mi"
90+
cpu: "250m"
91+
limits:
92+
memory: "2Gi"
93+
cpu: "1000m"
94+
95+
securityContext:
96+
allowPrivilegeEscalation: false
97+
runAsNonRoot: true
98+
runAsUser: 1000
99+
capabilities:
100+
drop:
101+
- ALL
102+
readOnlyRootFilesystem: false

instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -885,4 +885,4 @@ def main() -> None:
885885

886886

887887
if __name__ == "__main__":
888-
main()
888+
main()

0 commit comments

Comments
 (0)