Skip to content

Commit db43ea5

Browse files
authored
feat: add dora metrics deployment from saas file (#94)
Signed-off-by: flacatus <[email protected]>
1 parent 4a43111 commit db43ea5

File tree

8 files changed

+336
-0
lines changed

8 files changed

+336
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
name: dora-metrics-cluster
5+
labels:
6+
app: dora-metrics
7+
app.kubernetes.io/name: dora-metrics
8+
app.kubernetes.io/version: "1.0.0"
9+
app.kubernetes.io/component: rbac
10+
app.kubernetes.io/part-of: dora-metrics
11+
rules:
12+
- apiGroups: ["argoproj.io"]
13+
resources: ["applications"]
14+
verbs: ["get", "list", "watch"]
15+
- apiGroups: ["argoproj.io"]
16+
resources: ["appprojects"]
17+
verbs: ["get", "list"]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: dora-metrics-cluster
5+
labels:
6+
app: dora-metrics
7+
app.kubernetes.io/name: dora-metrics
8+
app.kubernetes.io/version: "1.0.0"
9+
app.kubernetes.io/component: rbac
10+
app.kubernetes.io/part-of: dora-metrics
11+
roleRef:
12+
apiGroup: rbac.authorization.k8s.io
13+
kind: ClusterRole
14+
name: dora-metrics-cluster
15+
subjects:
16+
- kind: ServiceAccount
17+
name: dora-metrics
18+
namespace: konflux-dora-metrics
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: dora-metrics-config
5+
namespace: konflux-dora-metrics
6+
labels:
7+
app: dora-metrics
8+
app.kubernetes.io/name: dora-metrics
9+
app.kubernetes.io/version: "1.0.0"
10+
app.kubernetes.io/component: config
11+
app.kubernetes.io/part-of: dora-metrics
12+
data:
13+
config.yaml: |
14+
server:
15+
port: "8080"
16+
environment: "production"
17+
log_level: "info"
18+
19+
webrca:
20+
enabled: true
21+
api_url: "https://api.openshift.com/api/web-rca/v1/incidents"
22+
interval: "1h"
23+
24+
argocd:
25+
enabled: true
26+
namespaces:
27+
- konflux-public-production
28+
- argocd
29+
components_to_monitor:
30+
- build-service
31+
- crossplane-control-plane
32+
- dora-metrics
33+
- enterprise-contract
34+
- etcd-defrag
35+
- etcd-shield
36+
- image-controller
37+
- integration
38+
- internal-services
39+
- konflux-info
40+
- konflux-ui
41+
- kubelet-config
42+
- kueue
43+
- kyverno
44+
- mintmaker
45+
- multi-platform-controller
46+
- namespace-lister
47+
- notification-controller
48+
- project-controller
49+
- release
50+
- smee-client
51+
known_clusters:
52+
- kflux-ocp-p01
53+
- kflux-osp-p01
54+
- kflux-prd-es01
55+
- kflux-prd-rh02
56+
- kflux-prd-rh03
57+
- kflux-rhel-p01
58+
- stone-prd-rh01
59+
- stone-prod-p01
60+
- stone-prod-p02
61+
62+
storage:
63+
redis:
64+
enabled: true
65+
address: "localhost:6379" # Will be overridden by REDIS_HOST:REDIS_PORT env vars
66+
password: "" # Will be overridden by REDIS_PASSWORD env var
67+
database: 0
68+
key_prefix: "dora-metrics"
69+
70+
integration:
71+
devlake:
72+
enabled: true
73+
base_url: "https://konflux-devlake-ui-konflux-devlake.apps.rosa.kflux-c-prd-i01.7hyu.p3.openshiftapps.com"
74+
project_id: "1"
75+
timeout_seconds: 30
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: dora-metrics
5+
namespace: konflux-dora-metrics
6+
labels:
7+
app: dora-metrics
8+
app.kubernetes.io/name: dora-metrics
9+
app.kubernetes.io/version: "1.0.0"
10+
app.kubernetes.io/component: server
11+
app.kubernetes.io/part-of: dora-metrics
12+
spec:
13+
replicas: 1
14+
selector:
15+
matchLabels:
16+
app: dora-metrics
17+
template:
18+
metadata:
19+
labels:
20+
app: dora-metrics
21+
app.kubernetes.io/name: dora-metrics
22+
app.kubernetes.io/version: "1.0.0"
23+
app.kubernetes.io/component: server
24+
app.kubernetes.io/part-of: dora-metrics
25+
spec:
26+
serviceAccountName: dora-metrics
27+
securityContext: {}
28+
containers:
29+
- name: dora-metrics
30+
image: quay.io/konflux-ci/konflux-devprod/dora-metrics:e8dbce9804fcc33a6c88125fbf6a8f2abf311cbf
31+
imagePullPolicy: Always
32+
command: ["sh", "-c"]
33+
args: ["echo 'Starting DORA metrics...' && echo 'Waiting for Redis to be ready...' && sleep 20 && echo 'Starting application...' && ./main"]
34+
ports:
35+
- containerPort: 8080
36+
name: http
37+
protocol: TCP
38+
env:
39+
- name: PORT
40+
value: "8080"
41+
- name: ENVIRONMENT
42+
value: "production"
43+
- name: LOG_LEVEL
44+
value: "info"
45+
- name: REDIS_HOST
46+
value: "localhost"
47+
- name: REDIS_PORT
48+
value: "6379"
49+
- name: REDIS_PASSWORD
50+
valueFrom:
51+
secretKeyRef:
52+
name: konflux-dora-metrics
53+
key: redis-password
54+
optional: true
55+
- name: OFFLINE_TOKEN
56+
valueFrom:
57+
secretKeyRef:
58+
name: konflux-dora-metrics
59+
key: offline-token
60+
optional: true
61+
- name: DEVLAKE_WEBHOOK_TOKEN
62+
valueFrom:
63+
secretKeyRef:
64+
name: konflux-dora-metrics
65+
key: devlake-webhook-token
66+
optional: true
67+
- name: GITHUB_TOKEN
68+
valueFrom:
69+
secretKeyRef:
70+
name: konflux-dora-metrics
71+
key: github-token
72+
optional: true
73+
74+
resources:
75+
requests:
76+
memory: "128Mi"
77+
cpu: "100m"
78+
limits:
79+
memory: "512Mi"
80+
cpu: "500m"
81+
livenessProbe:
82+
httpGet:
83+
path: /api/v1/health
84+
port: 8080
85+
initialDelaySeconds: 30
86+
periodSeconds: 10
87+
timeoutSeconds: 5
88+
failureThreshold: 3
89+
readinessProbe:
90+
httpGet:
91+
path: /api/v1/health
92+
port: 8080
93+
initialDelaySeconds: 5
94+
periodSeconds: 5
95+
timeoutSeconds: 3
96+
failureThreshold: 3
97+
volumeMounts:
98+
- name: config-volume
99+
mountPath: /app/configs
100+
readOnly: true
101+
- name: redis
102+
image: redis:7.0-alpine
103+
imagePullPolicy: IfNotPresent
104+
ports:
105+
- containerPort: 6379
106+
name: redis
107+
protocol: TCP
108+
env:
109+
- name: REDIS_PASSWORD
110+
valueFrom:
111+
secretKeyRef:
112+
name: dora-metrics-secrets
113+
key: redis-password
114+
optional: true
115+
command:
116+
- sh
117+
- -c
118+
- |
119+
if [ -n "$REDIS_PASSWORD" ]; then
120+
redis-server --appendonly yes --requirepass "$REDIS_PASSWORD"
121+
else
122+
redis-server --appendonly yes
123+
fi
124+
resources:
125+
requests:
126+
memory: "64Mi"
127+
cpu: "50m"
128+
limits:
129+
memory: "256Mi"
130+
cpu: "200m"
131+
livenessProbe:
132+
exec:
133+
command:
134+
- sh
135+
- -c
136+
- |
137+
if [ -n "$REDIS_PASSWORD" ]; then
138+
redis-cli -a "$REDIS_PASSWORD" ping
139+
else
140+
redis-cli ping
141+
fi
142+
initialDelaySeconds: 30
143+
periodSeconds: 10
144+
timeoutSeconds: 5
145+
failureThreshold: 3
146+
readinessProbe:
147+
exec:
148+
command:
149+
- sh
150+
- -c
151+
- |
152+
if [ -n "$REDIS_PASSWORD" ]; then
153+
redis-cli -a "$REDIS_PASSWORD" ping
154+
else
155+
redis-cli ping
156+
fi
157+
initialDelaySeconds: 5
158+
periodSeconds: 5
159+
timeoutSeconds: 3
160+
failureThreshold: 3
161+
volumeMounts:
162+
- name: redis-data
163+
mountPath: /data
164+
volumes:
165+
- name: config-volume
166+
configMap:
167+
name: dora-metrics-config
168+
- name: redis-data
169+
emptyDir: {}
170+
restartPolicy: Always
171+
terminationGracePeriodSeconds: 30

manifests/production/route.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
apiVersion: route.openshift.io/v1
2+
kind: Route
3+
metadata:
4+
name: dora-metrics
5+
namespace: konflux-dora-metrics
6+
labels:
7+
app: dora-metrics
8+
app.kubernetes.io/name: dora-metrics
9+
app.kubernetes.io/version: "1.0.0"
10+
app.kubernetes.io/component: route
11+
app.kubernetes.io/part-of: dora-metrics
12+
annotations:
13+
haproxy.router.openshift.io/timeout: "300s"
14+
spec:
15+
port:
16+
targetPort: http
17+
to:
18+
kind: Service
19+
name: dora-metrics
20+
weight: 100
21+
tls:
22+
termination: edge
23+
insecureEdgeTerminationPolicy: Redirect
24+
wildcardPolicy: None

manifests/production/service.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: dora-metrics
5+
namespace: konflux-dora-metrics
6+
labels:
7+
app: dora-metrics
8+
app.kubernetes.io/name: dora-metrics
9+
app.kubernetes.io/version: "1.0.0"
10+
app.kubernetes.io/component: server
11+
app.kubernetes.io/part-of: dora-metrics
12+
spec:
13+
type: ClusterIP
14+
ports:
15+
- port: 8080
16+
targetPort: 8080
17+
protocol: TCP
18+
name: http
19+
selector:
20+
app: dora-metrics
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: dora-metrics
5+
namespace: konflux-dora-metrics
6+
labels:
7+
app: dora-metrics
8+
app.kubernetes.io/name: dora-metrics
9+
app.kubernetes.io/version: "1.0.0"
10+
app.kubernetes.io/component: rbac
11+
app.kubernetes.io/part-of: dora-metrics

manifests/staging/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)