Skip to content

Commit 9805662

Browse files
committed
updated deployment
1 parent 5d30d1e commit 9805662

19 files changed

+536
-0
lines changed

deployment/Chart.lock

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
dependencies:
2+
- name: postgresql
3+
repository: https://charts.bitnami.com/bitnami
4+
version: 16.2.1
5+
- name: redis
6+
repository: oci://registry-1.docker.io/bitnamicharts
7+
version: 20.3.0
8+
- name: opentelemetry-collector
9+
repository: https://open-telemetry.github.io/opentelemetry-helm-charts
10+
version: 0.126.0
11+
digest: sha256:77e631ed6bfb214435909a86e617155ea8691b5c8d6f1a78bc78d87193e8a9ca
12+
generated: "2025-06-09T16:15:59.780245-07:00"

deployment/Chart.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v2
2+
name: petclinic
3+
version: 1.0.1
4+
5+
dependencies:
6+
- name: postgresql
7+
version: 16.2.1
8+
repository: "https://charts.bitnami.com/bitnami"
9+
condition: postgresql.enabled
10+
- name: redis
11+
repository: oci://registry-1.docker.io/bitnamicharts
12+
version: 20.3.0
13+
condition: redis.enabled
14+
- name: opentelemetry-collector
15+
repository: https://open-telemetry.github.io/opentelemetry-helm-charts
16+
mode: deployment
17+
image.repository: "otel/opentelemetry-collector-k8s"
18+
version: 0.126.0

deployment/README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<!-- Deployment instructions added below -->
2+
## Deployment
3+
Install/Upgrade:
4+
```
5+
helm upgrade --install petclinic charts/petclinic -n petclinic
6+
```
7+
8+
## Agentic (dev)
9+
Is being used the **dev team** to develope and test the agentic feature.<br/>
10+
```sh
11+
helm upgrade petclinic . -n pet-agentic-dev -f values-agentic-dev.yaml --install --create-namespace
12+
```
13+
14+
## Agentic (Demo)
15+
Is being used by **Roni** for demos.<br/>
16+
Install:
17+
```sh
18+
helm upgrade petclinic . -n pet-agentic-demo -f values-agentic-demo.yaml --install --create-namespace
19+
```
28.7 KB
Binary file not shown.
78 KB
Binary file not shown.

deployment/charts/redis-20.3.0.tgz

101 KB
Binary file not shown.

deployment/files/flask-app.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
from flask import Flask
2+
import uuid
3+
import os
4+
from flask import request
5+
import json
6+
app = Flask(__name__)
7+
data_dir = os.environ.get("DATA_DIR", "./data")
8+
print(f"data dir: {data_dir}")
9+
10+
@app.route("/")
11+
def hello():
12+
return "Hello from FlaskDb in Kubernetes!"
13+
14+
@app.route("/feedbacks", methods=["POST"])
15+
def insert():
16+
try:
17+
text = request.get_data(as_text=True)
18+
filename = f"{data_dir}/{uuid.uuid4()}.txt"
19+
with open(filename, "w") as f:
20+
# Write the original text
21+
f.write(text)
22+
f.write("A" * 10 * 1024 * 1024) # 10MB
23+
return f"File created at {filename}", 201
24+
except Exception as e:
25+
return str(e), 500
26+
27+
@app.route("/feedbacks", methods=["GET"])
28+
def get():
29+
files = [f for f in os.listdir(data_dir) if os.path.isfile(os.path.join(data_dir, f))]
30+
files = sorted(files, reverse=True)[:10]
31+
feedbacks = []
32+
for fname in files:
33+
path = os.path.join(data_dir, fname)
34+
with open(path, "r") as f:
35+
content = f.read()
36+
content = content.split('A'*100, 1)[0]
37+
try:
38+
feedback = json.loads(content)
39+
except Exception:
40+
feedback = {}
41+
feedbacks.append(feedback)
42+
return feedbacks, 200
43+
44+
@app.route("/feedbacks", methods=["DELETE"])
45+
def clear():
46+
try:
47+
files = [f for f in os.listdir(data_dir) if os.path.isfile(os.path.join(data_dir, f))]
48+
for fname in files:
49+
os.remove(os.path.join(data_dir, fname))
50+
return {"deleted": len(files)}, 200
51+
except Exception as e:
52+
return str(e), 500
53+
54+
@app.route("/feedbacks/count", methods=["GET"])
55+
def count():
56+
files = [f for f in os.listdir(data_dir) if os.path.isfile(os.path.join(data_dir, f))]
57+
return {"count": len(files)}, 200
58+
59+
if __name__ == "__main__":
60+
app.run(host="0.0.0.0", port=27017)
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: petclinic
5+
labels:
6+
app.kubernetes.io/component: petclinic
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app.kubernetes.io/component: petclinic
12+
template:
13+
metadata:
14+
labels:
15+
app.kubernetes.io/component: petclinic
16+
spec:
17+
initContainers:
18+
- name: download-image
19+
image: alpine:latest # # Lightweight image for downloading files
20+
securityContext:
21+
privileged: true
22+
command:
23+
- /bin/sh
24+
- -c
25+
- |
26+
apk add --no-cache curl
27+
curl -L -o /app/opentelemetry-javaagent.jar https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.32.0/opentelemetry-javaagent.jar
28+
curl -L -o /app/digma-otel-agent-extension.jar https://github.com/digma-ai/otel-java-instrumentation/releases/latest/download/digma-otel-agent-extension.jar
29+
curl -L -o /app/petclinic.jar {{ .Values.petclinic.jarUrl }}
30+
echo "JAR file downloaded successfully."
31+
volumeMounts:
32+
- name: app-volume
33+
mountPath: /app
34+
containers:
35+
- name: petclinic
36+
image: eclipse-temurin:21
37+
command:
38+
- java
39+
- -Dotel.instrumentation.common.experimental.controller.telemetry.enabled=true
40+
- -Dotel.instrumentation.common.experimental.view.telemetry.enabled=true
41+
- -Dotel.instrumentation.experimental.span-suppression-strategy=none
42+
- -jar
43+
- -javaagent:/app/opentelemetry-javaagent.jar
44+
- -Dotel.javaagent.extensions=/app/digma-otel-agent-extension.jar
45+
- /app/petclinic.jar
46+
ports:
47+
- containerPort: 9753
48+
env:
49+
- name: OTEL_EXPORTER_OTLP_HEADERS
50+
value: api-key=24fde629b3411b44f8805c2eb7362daaFFFFNRAL
51+
- name: OTEL_SERVICE_NAME
52+
value: {{.Values.service_name}}
53+
- name: OTEL_RESOURCE_ATTRIBUTES
54+
value: {{ printf "digma.environment=%s,digma.environment.type=%s" .Values.environment .Values.environment_type }}
55+
- name: OTEL_EXPORTER_OTLP_ENDPOINT
56+
value: "http://{{ .Release.Name }}-opentelemetry-collector:4317/"
57+
- name: SPRING_PROFILES_ACTIVE
58+
value: "postgres"
59+
- name: SPRING_DATASOURCE_URL
60+
value: "jdbc:postgresql://{{ .Release.Name }}-postgresql:5432/{{ .Values.postgresql.auth.database }}"
61+
- name: SPRING_DATASOURCE_USERNAME
62+
value: "{{ .Values.postgresql.auth.username }}"
63+
- name: SPRING_DATASOURCE_PASSWORD
64+
value: "{{ .Values.postgresql.auth.password }}"
65+
- name: SPRING_DATA_FLASKDB_URI
66+
value: http://{{ .Release.Name }}-flaskdb:27017/feedbacks
67+
volumeMounts:
68+
- name: app-volume
69+
mountPath: /app
70+
volumes:
71+
- name: app-volume
72+
emptyDir: {}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{{- if .Values.flaskdb.enabled }}
2+
3+
apiVersion: v1
4+
kind: ConfigMap
5+
metadata:
6+
name: flask-app-config
7+
data:
8+
app.py: |
9+
{{ .Files.Get "files/flask-app.py" | nindent 4 }}
10+
11+
{{- end }}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{{- if .Values.flaskdb.enabled }}
2+
3+
apiVersion: v1
4+
kind: Service
5+
metadata:
6+
name: {{ .Release.Name }}-flaskdb
7+
spec:
8+
type: ClusterIP
9+
selector:
10+
app.kubernetes.io/component: {{ .Release.Name }}-flaskdb
11+
ports:
12+
- name: http
13+
protocol: TCP
14+
port: 27017
15+
targetPort: 27017
16+
17+
{{- end }}

0 commit comments

Comments
 (0)