Skip to content

Commit a29c880

Browse files
committed
addd basic cvat deployment k8s templates
1 parent dff57eb commit a29c880

17 files changed

+591
-0
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2020
- Pre-built [cvat_server](https://hub.docker.com/r/openvino/cvat_server) and
2121
[cvat_ui](https://hub.docker.com/r/openvino/cvat_ui) images were published on DockerHub (<https://github.com/openvinotoolkit/cvat/pull/2766>)
2222
- Project task subsets (<https://github.com/openvinotoolkit/cvat/pull/2774>)
23+
- Kubernetes templates and guide for their deployment (<https://github.com/openvinotoolkit/cvat/pull/1962>)
2324

2425
### Changed
2526

kubernetes-templates/01_namespace.yml

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
apiVersion: v1
2+
kind: Namespace
3+
metadata:
4+
name: cvat
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: v1
2+
kind: PersistentVolumeClaim
3+
metadata:
4+
name: cvat-backend-data
5+
namespace: cvat
6+
spec:
7+
accessModes:
8+
- ReadWriteOnce
9+
storageClassName: standard
10+
resources:
11+
requests:
12+
storage: 20Gi
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: v1
2+
kind: Secret
3+
type: Opaque
4+
metadata:
5+
name: cvat-postgres-secret
6+
namespace: cvat
7+
labels:
8+
app: cvat-app
9+
tier: db
10+
stringData:
11+
POSTGRES_DB: cvat
12+
POSTGRES_USER: root
13+
POSTGRES_PASSWORD: POSTGRES_ADMIN_PW
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: v1
2+
kind: PersistentVolumeClaim
3+
metadata:
4+
name: cvat-postgres-data
5+
namespace: cvat
6+
spec:
7+
accessModes:
8+
- ReadWriteOnce
9+
storageClassName: standard
10+
resources:
11+
requests:
12+
storage: 20Gi
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: cvat-postgres
5+
namespace: cvat
6+
labels:
7+
app: cvat-app
8+
tier: db
9+
spec:
10+
replicas: 1
11+
strategy:
12+
type: Recreate
13+
selector:
14+
matchLabels:
15+
app: cvat-app
16+
tier: db
17+
template:
18+
metadata:
19+
labels:
20+
app: cvat-app
21+
tier: db
22+
spec:
23+
containers:
24+
- name: cvat-postgres
25+
image: postgres:10.3-alpine
26+
imagePullPolicy: "IfNotPresent"
27+
env:
28+
- name: POSTGRES_DB
29+
valueFrom:
30+
secretKeyRef:
31+
name: cvat-postgres-secret
32+
key: POSTGRES_DB
33+
- name: POSTGRES_USER
34+
valueFrom:
35+
secretKeyRef:
36+
name: cvat-postgres-secret
37+
key: POSTGRES_USER
38+
- name: POSTGRES_PASSWORD
39+
valueFrom:
40+
secretKeyRef:
41+
name: cvat-postgres-secret
42+
key: POSTGRES_PASSWORD
43+
ports:
44+
- containerPort: 5432
45+
readinessProbe:
46+
exec:
47+
command:
48+
- sh
49+
- -c
50+
- su - postgres -c "pg_isready --host=$POD_IP"
51+
initialDelaySeconds: 15
52+
timeoutSeconds: 2
53+
resources: {}
54+
volumeMounts:
55+
- mountPath: /var/lib/postgresql/data
56+
name: postgredb
57+
subPath: postgres
58+
volumes:
59+
- name: postgredb
60+
persistentVolumeClaim:
61+
claimName: cvat-postgres-data
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: cvat-redis
5+
namespace: cvat
6+
labels:
7+
app: cvat-app
8+
tier: redis-app
9+
spec:
10+
replicas: 1
11+
selector:
12+
matchLabels:
13+
app: cvat-app
14+
tier: redis-app
15+
template:
16+
metadata:
17+
labels:
18+
app: cvat-app
19+
tier: redis-app
20+
spec:
21+
containers:
22+
- image: redis:4.0.5-alpine
23+
name: cvat-redis
24+
imagePullPolicy: Always
25+
ports:
26+
- containerPort: 6379
27+
resources:
28+
limits:
29+
cpu: "0.1"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: cvat-backend
5+
namespace: cvat
6+
labels:
7+
app: cvat-app
8+
tier: backend
9+
spec:
10+
replicas: 1
11+
strategy:
12+
type: Recreate
13+
selector:
14+
matchLabels:
15+
app: cvat-app
16+
tier: backend
17+
template:
18+
metadata:
19+
labels:
20+
app: cvat-app
21+
tier: backend
22+
spec:
23+
containers:
24+
- name: cvat-backend-app-container
25+
image: {my.registry.backend.image:develop}
26+
imagePullPolicy: Always
27+
resources:
28+
requests:
29+
cpu: 10m
30+
memory: 100Mi
31+
env:
32+
- name: DJANGO_MODWSGI_EXTRA_ARGS
33+
value: ""
34+
- name: UI_PORT
35+
value: "80"
36+
- name: UI_HOST
37+
value: "cvat-frontend-service"
38+
- name: ALLOWED_HOSTS
39+
value: "{MY_SERVER_URL_COM}"
40+
- name: CVAT_REDIS_HOST
41+
value: "cvat-redis-service"
42+
- name: CVAT_POSTGRES_HOST
43+
value: "cvat-postgres-service"
44+
- name: CVAT_POSTGRES_USER
45+
valueFrom:
46+
secretKeyRef:
47+
name: cvat-postgres-secret
48+
key: POSTGRES_USER
49+
- name: CVAT_POSTGRES_DBNAME
50+
valueFrom:
51+
secretKeyRef:
52+
name: cvat-postgres-secret
53+
key: POSTGRES_DB
54+
- name: CVAT_POSTGRES_PASSWORD
55+
valueFrom:
56+
secretKeyRef:
57+
name: cvat-postgres-secret
58+
key: POSTGRES_PASSWORD
59+
ports:
60+
- containerPort: 8080
61+
volumeMounts:
62+
- mountPath: /home/django/data
63+
name: cvat-backend-data
64+
subPath: data
65+
- mountPath: /home/django/keys
66+
name: cvat-backend-data
67+
subPath: keys
68+
- mountPath: /home/django/logs
69+
name: cvat-backend-data
70+
subPath: logs
71+
- mountPath: /home/django/models
72+
name: cvat-backend-data
73+
subPath: models
74+
initContainers:
75+
- name: user-data-permission-fix
76+
image: busybox
77+
command: ["/bin/chmod", "-R", "777", "/home/django"]
78+
volumeMounts:
79+
- mountPath: /home/django/data
80+
name: cvat-backend-data
81+
subPath: data
82+
- mountPath: /home/django/keys
83+
name: cvat-backend-data
84+
subPath: keys
85+
- mountPath: /home/django/logs
86+
name: cvat-backend-data
87+
subPath: logs
88+
- mountPath: /home/django/models
89+
name: cvat-backend-data
90+
subPath: models
91+
volumes:
92+
- name: cvat-backend-data
93+
persistentVolumeClaim:
94+
claimName: cvat-backend-data
95+
imagePullSecrets:
96+
- name: gitlab-registry
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: cvat-frontend
5+
namespace: cvat
6+
labels:
7+
app: cvat-app
8+
tier: frontend
9+
spec:
10+
replicas: 1
11+
strategy:
12+
type: Recreate
13+
selector:
14+
matchLabels:
15+
app: cvat-app
16+
tier: frontend
17+
template:
18+
metadata:
19+
labels:
20+
app: cvat-app
21+
tier: frontend
22+
spec:
23+
containers:
24+
- name: cvat-frontend-app-container
25+
image: {my.registry.fronend.image:develop}
26+
imagePullPolicy: always
27+
env:
28+
- name: REACT_APP_API_PROTOCOL
29+
value: "http"
30+
- name: REACT_APP_API_HOST
31+
value: "{MY_SERVER_URL_COM}"
32+
- name: REACT_APP_API_PORT
33+
value: "8080"
34+
ports:
35+
- containerPort: 80
36+
resources: {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: cvat-postgres-service
5+
namespace: cvat
6+
labels:
7+
app: cvat-app
8+
tier: db
9+
spec:
10+
type: ClusterIP
11+
selector:
12+
app: cvat-app
13+
tier: db
14+
ports:
15+
- port: 5432
16+
targetPort: 5432
17+
protocol: TCP
18+
name: http
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: cvat-redis-service
5+
namespace: cvat
6+
labels:
7+
app: cvat-app
8+
tier: redis-app
9+
spec:
10+
type: ClusterIP
11+
selector:
12+
app: cvat-app
13+
tier: redis-app
14+
ports:
15+
- port: 6379
16+
targetPort: 6379
17+
protocol: TCP
18+
name: http
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: cvat-backend-service
5+
namespace: cvat
6+
labels:
7+
app: cvat-app
8+
tier: backend
9+
spec:
10+
type: ClusterIP
11+
selector:
12+
app: cvat-app
13+
tier: backend
14+
ports:
15+
- port: 8080
16+
targetPort: 8080
17+
protocol: TCP
18+
name: http
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: cvat-frontend-service
5+
namespace: cvat
6+
labels:
7+
app: cvat-app
8+
tier: frontend
9+
spec:
10+
type: ClusterIP
11+
selector:
12+
app: cvat-app
13+
tier: frontend
14+
ports:
15+
- port: 80
16+
targetPort: 80
17+
protocol: TCP
18+
name: http

0 commit comments

Comments
 (0)