parent
1f94aca003
commit
46e0bfff6e
@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: cvat
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: cvat-backend-data
|
|
||||||
namespace: cvat
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
storageClassName: standard
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 20Gi
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
type: Opaque
|
|
||||||
metadata:
|
|
||||||
name: cvat-postgres-secret
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: db
|
|
||||||
stringData:
|
|
||||||
POSTGRES_DB: cvat
|
|
||||||
POSTGRES_USER: root
|
|
||||||
POSTGRES_PASSWORD: POSTGRES_ADMIN_PW
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: cvat-postgres-data
|
|
||||||
namespace: cvat
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
storageClassName: standard
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 20Gi
|
|
||||||
@ -1,61 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: cvat-postgres
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: db
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
strategy:
|
|
||||||
type: Recreate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: db
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: db
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: cvat-postgres
|
|
||||||
image: postgres:10.3-alpine
|
|
||||||
imagePullPolicy: "IfNotPresent"
|
|
||||||
env:
|
|
||||||
- name: POSTGRES_DB
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: cvat-postgres-secret
|
|
||||||
key: POSTGRES_DB
|
|
||||||
- name: POSTGRES_USER
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: cvat-postgres-secret
|
|
||||||
key: POSTGRES_USER
|
|
||||||
- name: POSTGRES_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: cvat-postgres-secret
|
|
||||||
key: POSTGRES_PASSWORD
|
|
||||||
ports:
|
|
||||||
- containerPort: 5432
|
|
||||||
readinessProbe:
|
|
||||||
exec:
|
|
||||||
command:
|
|
||||||
- sh
|
|
||||||
- -c
|
|
||||||
- su - postgres -c "pg_isready --host=$POD_IP"
|
|
||||||
initialDelaySeconds: 15
|
|
||||||
timeoutSeconds: 2
|
|
||||||
resources: {}
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /var/lib/postgresql/data
|
|
||||||
name: postgredb
|
|
||||||
subPath: postgres
|
|
||||||
volumes:
|
|
||||||
- name: postgredb
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: cvat-postgres-data
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: cvat-redis
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: redis-app
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: redis-app
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: redis-app
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- image: redis:4.0.5-alpine
|
|
||||||
name: cvat-redis
|
|
||||||
imagePullPolicy: Always
|
|
||||||
ports:
|
|
||||||
- containerPort: 6379
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: "0.1"
|
|
||||||
@ -1,96 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: cvat-backend
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
strategy:
|
|
||||||
type: Recreate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: backend
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: cvat-backend-app-container
|
|
||||||
image: openvino/cvat_server:v1.2.0
|
|
||||||
imagePullPolicy: Always
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 10m
|
|
||||||
memory: 100Mi
|
|
||||||
env:
|
|
||||||
- name: DJANGO_MODWSGI_EXTRA_ARGS
|
|
||||||
value: ""
|
|
||||||
- name: UI_PORT
|
|
||||||
value: "80"
|
|
||||||
- name: UI_HOST
|
|
||||||
value: "cvat-frontend-service"
|
|
||||||
- name: ALLOWED_HOSTS
|
|
||||||
value: "*"
|
|
||||||
- name: CVAT_REDIS_HOST
|
|
||||||
value: "cvat-redis-service"
|
|
||||||
- name: CVAT_POSTGRES_HOST
|
|
||||||
value: "cvat-postgres-service"
|
|
||||||
- name: CVAT_POSTGRES_USER
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: cvat-postgres-secret
|
|
||||||
key: POSTGRES_USER
|
|
||||||
- name: CVAT_POSTGRES_DBNAME
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: cvat-postgres-secret
|
|
||||||
key: POSTGRES_DB
|
|
||||||
- name: CVAT_POSTGRES_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: cvat-postgres-secret
|
|
||||||
key: POSTGRES_PASSWORD
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /home/django/data
|
|
||||||
name: cvat-backend-data
|
|
||||||
subPath: data
|
|
||||||
- mountPath: /home/django/keys
|
|
||||||
name: cvat-backend-data
|
|
||||||
subPath: keys
|
|
||||||
- mountPath: /home/django/logs
|
|
||||||
name: cvat-backend-data
|
|
||||||
subPath: logs
|
|
||||||
- mountPath: /home/django/models
|
|
||||||
name: cvat-backend-data
|
|
||||||
subPath: models
|
|
||||||
initContainers:
|
|
||||||
- name: user-data-permission-fix
|
|
||||||
image: busybox
|
|
||||||
command: ["/bin/chmod", "-R", "777", "/home/django"]
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /home/django/data
|
|
||||||
name: cvat-backend-data
|
|
||||||
subPath: data
|
|
||||||
- mountPath: /home/django/keys
|
|
||||||
name: cvat-backend-data
|
|
||||||
subPath: keys
|
|
||||||
- mountPath: /home/django/logs
|
|
||||||
name: cvat-backend-data
|
|
||||||
subPath: logs
|
|
||||||
- mountPath: /home/django/models
|
|
||||||
name: cvat-backend-data
|
|
||||||
subPath: models
|
|
||||||
volumes:
|
|
||||||
- name: cvat-backend-data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: cvat-backend-data
|
|
||||||
imagePullSecrets:
|
|
||||||
- name: gitlab-registry
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: cvat-frontend
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: frontend
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
strategy:
|
|
||||||
type: Recreate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: frontend
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: frontend
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: cvat-frontend-app-container
|
|
||||||
image: openvino/cvat_ui:v1.2.0
|
|
||||||
imagePullPolicy: Always
|
|
||||||
ports:
|
|
||||||
- containerPort: 80
|
|
||||||
resources: {}
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: cvat-postgres-service
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: db
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
selector:
|
|
||||||
app: cvat-app
|
|
||||||
tier: db
|
|
||||||
ports:
|
|
||||||
- port: 5432
|
|
||||||
targetPort: 5432
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: cvat-redis-service
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: redis-app
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
selector:
|
|
||||||
app: cvat-app
|
|
||||||
tier: redis-app
|
|
||||||
ports:
|
|
||||||
- port: 6379
|
|
||||||
targetPort: 6379
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: cvat-backend-service
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
selector:
|
|
||||||
app: cvat-app
|
|
||||||
tier: backend
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
targetPort: 8080
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: cvat-frontend-service
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: frontend
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
selector:
|
|
||||||
app: cvat-app
|
|
||||||
tier: frontend
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
@ -1,151 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: cvat-nginx-conf
|
|
||||||
namespace: cvat
|
|
||||||
data:
|
|
||||||
nginx.conf: |
|
|
||||||
worker_processes 2;
|
|
||||||
|
|
||||||
error_log /dev/stdout info;
|
|
||||||
|
|
||||||
events {
|
|
||||||
worker_connections 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
http {
|
|
||||||
include mime.types;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
sendfile on;
|
|
||||||
keepalive_timeout 65;
|
|
||||||
# For long domain names (e.g. AWS hosts)
|
|
||||||
server_names_hash_bucket_size 128;
|
|
||||||
|
|
||||||
include /etc/nginx/cvat.d/*.conf;
|
|
||||||
client_max_body_size 0;
|
|
||||||
}
|
|
||||||
cvat.conf: |
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name _ default;
|
|
||||||
return 404;
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name {MY_SERVER_URL_COM};
|
|
||||||
|
|
||||||
proxy_pass_header X-CSRFToken;
|
|
||||||
proxy_set_header Host $http_host;
|
|
||||||
proxy_pass_header Set-Cookie;
|
|
||||||
|
|
||||||
location ~* /api/.*|git/.*|tensorflow/.*|auto_annotation/.*|analytics/.*|static/.*|admin|admin/.*|documentation/.*|dextr/.*|reid/.* {
|
|
||||||
proxy_pass http://cvat-backend-service:8080;
|
|
||||||
}
|
|
||||||
|
|
||||||
# workaround for match location by arguments
|
|
||||||
location = / {
|
|
||||||
error_page 418 = @annotation_ui;
|
|
||||||
|
|
||||||
if ( $query_string ~ "^id=\d+.*" ) { return 418; }
|
|
||||||
proxy_pass http://cvat-frontend-service:80;
|
|
||||||
}
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://cvat-frontend-service:80;
|
|
||||||
}
|
|
||||||
|
|
||||||
# old annotation ui, will be removed in the future.
|
|
||||||
location @annotation_ui {
|
|
||||||
proxy_pass http://cvat-backend-service:8080;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mime.types: |
|
|
||||||
types {
|
|
||||||
text/html html htm shtml;
|
|
||||||
text/css css;
|
|
||||||
text/xml xml;
|
|
||||||
image/gif gif;
|
|
||||||
image/jpeg jpeg jpg;
|
|
||||||
application/javascript js;
|
|
||||||
application/atom+xml atom;
|
|
||||||
application/rss+xml rss;
|
|
||||||
|
|
||||||
text/mathml mml;
|
|
||||||
text/plain txt;
|
|
||||||
text/vnd.sun.j2me.app-descriptor jad;
|
|
||||||
text/vnd.wap.wml wml;
|
|
||||||
text/x-component htc;
|
|
||||||
|
|
||||||
image/png png;
|
|
||||||
image/tiff tif tiff;
|
|
||||||
image/vnd.wap.wbmp wbmp;
|
|
||||||
image/x-icon ico;
|
|
||||||
image/x-jng jng;
|
|
||||||
image/x-ms-bmp bmp;
|
|
||||||
image/svg+xml svg svgz;
|
|
||||||
image/webp webp;
|
|
||||||
|
|
||||||
application/font-woff woff;
|
|
||||||
application/java-archive jar war ear;
|
|
||||||
application/json json;
|
|
||||||
application/mac-binhex40 hqx;
|
|
||||||
application/msword doc;
|
|
||||||
application/pdf pdf;
|
|
||||||
application/postscript ps eps ai;
|
|
||||||
application/rtf rtf;
|
|
||||||
application/vnd.apple.mpegurl m3u8;
|
|
||||||
application/vnd.ms-excel xls;
|
|
||||||
application/vnd.ms-fontobject eot;
|
|
||||||
application/vnd.ms-powerpoint ppt;
|
|
||||||
application/vnd.wap.wmlc wmlc;
|
|
||||||
application/vnd.google-earth.kml+xml kml;
|
|
||||||
application/vnd.google-earth.kmz kmz;
|
|
||||||
application/x-7z-compressed 7z;
|
|
||||||
application/x-cocoa cco;
|
|
||||||
application/x-java-archive-diff jardiff;
|
|
||||||
application/x-java-jnlp-file jnlp;
|
|
||||||
application/x-makeself run;
|
|
||||||
application/x-perl pl pm;
|
|
||||||
application/x-pilot prc pdb;
|
|
||||||
application/x-rar-compressed rar;
|
|
||||||
application/x-redhat-package-manager rpm;
|
|
||||||
application/x-sea sea;
|
|
||||||
application/x-shockwave-flash swf;
|
|
||||||
application/x-stuffit sit;
|
|
||||||
application/x-tcl tcl tk;
|
|
||||||
application/x-x509-ca-cert der pem crt;
|
|
||||||
application/x-xpinstall xpi;
|
|
||||||
application/xhtml+xml xhtml;
|
|
||||||
application/xspf+xml xspf;
|
|
||||||
application/zip zip;
|
|
||||||
|
|
||||||
application/octet-stream bin exe dll;
|
|
||||||
application/octet-stream deb;
|
|
||||||
application/octet-stream dmg;
|
|
||||||
application/octet-stream iso img;
|
|
||||||
application/octet-stream msi msp msm;
|
|
||||||
|
|
||||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
|
|
||||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
|
|
||||||
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
|
|
||||||
|
|
||||||
audio/midi mid midi kar;
|
|
||||||
audio/mpeg mp3;
|
|
||||||
audio/ogg ogg;
|
|
||||||
audio/x-m4a m4a;
|
|
||||||
audio/x-realaudio ra;
|
|
||||||
|
|
||||||
video/3gpp 3gpp 3gp;
|
|
||||||
video/mp2t ts;
|
|
||||||
video/mp4 mp4;
|
|
||||||
video/mpeg mpeg mpg;
|
|
||||||
video/quicktime mov;
|
|
||||||
video/webm webm;
|
|
||||||
video/x-flv flv;
|
|
||||||
video/x-m4v m4v;
|
|
||||||
video/x-mng mng;
|
|
||||||
video/x-ms-asf asx asf;
|
|
||||||
video/x-ms-wmv wmv;
|
|
||||||
video/x-msvideo avi;
|
|
||||||
}
|
|
||||||
@ -1,46 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: cvat-nginx
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: proxy
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
strategy:
|
|
||||||
type: Recreate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: proxy
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: proxy
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: nginx
|
|
||||||
image: nginx
|
|
||||||
ports:
|
|
||||||
- containerPort: 80
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /etc/nginx
|
|
||||||
readOnly: true
|
|
||||||
name: cvat-nginx-conf
|
|
||||||
- mountPath: /var/log/nginx
|
|
||||||
name: log
|
|
||||||
volumes:
|
|
||||||
- name: cvat-nginx-conf
|
|
||||||
configMap:
|
|
||||||
name: cvat-nginx-conf
|
|
||||||
items:
|
|
||||||
- key: nginx.conf
|
|
||||||
path: nginx.conf
|
|
||||||
- key: mime.types
|
|
||||||
path: mime.types
|
|
||||||
- key: cvat.conf
|
|
||||||
path: cvat.d/cvat.conf
|
|
||||||
- name: log
|
|
||||||
emptyDir: {}
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: cvat-proxy-service
|
|
||||||
namespace: cvat
|
|
||||||
labels:
|
|
||||||
app: cvat-app
|
|
||||||
tier: proxy
|
|
||||||
spec:
|
|
||||||
type: NodePort
|
|
||||||
selector:
|
|
||||||
app: cvat-app
|
|
||||||
tier: proxy
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
@ -1,85 +0,0 @@
|
|||||||
# Deploying cvat in a kubernetes cluster
|
|
||||||
|
|
||||||
This guide will focus on how to deploy cvat in an kubernetes environment.
|
|
||||||
It was tested on Kubernetes v1.19.3 but should work for >=v1.9, eventhough it is untested.
|
|
||||||
|
|
||||||
## Building the container - optional
|
|
||||||
Since prebuild container images are now available [cvat_server](https://hub.docker.com/r/openvino/cvat_server) and
|
|
||||||
[cvat_ui](https://hub.docker.com/r/openvino/cvat_ui) this steps becomes optional.
|
|
||||||
|
|
||||||
If you would like to build your one image the following steps need to be followd.
|
|
||||||
1. Build the cvat backend and frontend images and push them to a registry that you can pull from within the cluster.
|
|
||||||
1. Replace the `openvino/...` image source in
|
|
||||||
`04_cvat_backend_deployment.yml` and `04_cvat_frontend_deployment.yml` with your newly build image.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
export CI_REGISTRY_IMAGE="your.private.registry"
|
|
||||||
|
|
||||||
echo "Building backend"
|
|
||||||
docker build --cache-from $CI_REGISTRY_IMAGE/backend:release-1.1.0 \
|
|
||||||
--build-arg TF_ANNOTATION=no --build-arg AUTO_SEGMENTATION=no \
|
|
||||||
--build-arg WITH_TESTS=no --build-arg TZ="Etc/UTC" --build-arg OPENVINO_TOOLKIT=no \
|
|
||||||
--build-arg USER=django --build-arg DJANGO_CONFIGURATION=production \
|
|
||||||
--build-arg TZ="Etc/UTC" .
|
|
||||||
docker push $CI_REGISTRY_IMAGE/backend:release-1.1.0
|
|
||||||
|
|
||||||
echo "Building frontend"
|
|
||||||
docker build --file Dockerfile.ui \
|
|
||||||
--tag $CI_REGISTRY_IMAGE/frontend:release-1.1.0 - .
|
|
||||||
docker push $CI_REGISTRY_IMAGE/frontend:release-1.1.0
|
|
||||||
```
|
|
||||||
|
|
||||||
## Adjusting the kubernetes templates
|
|
||||||
|
|
||||||
1. Replacing the domain dummy with your real domain name `cvat.my.cool.domain.com`.
|
|
||||||
Replace `{MY_SERVER_URL_COM}` in `kubernetes-templates/04_cvat_frontend_deployment.yml`
|
|
||||||
and `kubernetes-templates/05_cvat_proxy_configmap.yml`.
|
|
||||||
1. Insert your choosen database password the `kubernetes-templates/02_database_secrets.yml`
|
|
||||||
|
|
||||||
## Deploying to the cluster
|
|
||||||
Deploy everything to your cluster with `kubectl apply -f kubernetes-templates/`
|
|
||||||
|
|
||||||
### Expose the deployment
|
|
||||||
The service `cvat-proxy-service` is the accesspoint to the deployment.
|
|
||||||
In order to expose this resource an ingress might be handy [kubernetes ingress documentation](https://kubernetes.io/docs/concepts/services-networking/ingress/).
|
|
||||||
|
|
||||||
For debugging puposes it is usefull to forward this service to a port on your localhost.
|
|
||||||
In the following example `8080` will be used for this purpose [localhost:8080](http://localhost:8080).
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl port-forward service/cvat-proxy-service -n cvat 8080:80
|
|
||||||
```
|
|
||||||
|
|
||||||
**Hint:**
|
|
||||||
If you are developing locally it might be usefull to replace `{MY_SERVER_URL_COM}` with `localhost`,
|
|
||||||
such that `/etc/hosts` does not need to override the DNS.
|
|
||||||
|
|
||||||
## Create the django super user
|
|
||||||
|
|
||||||
```
|
|
||||||
kubectl get pods --namespace cvat
|
|
||||||
kubectl --namespace cvat exec -it cvat-backend-78c954f84f-qxb8b -- /bin/bash
|
|
||||||
python3 ~/manage.py createsuperuser
|
|
||||||
```
|
|
||||||
|
|
||||||
## Debugging hints
|
|
||||||
Due to different kubernetes versions or other deployment environments
|
|
||||||
|
|
||||||
### Incorect storage class
|
|
||||||
Depending on the selected kubernetes environment certain storage classes might not be available.
|
|
||||||
The selected "standard" class is available with in all maijor kubernetes platforms (GKE, EKS, ...),
|
|
||||||
but not in some local development environemnts such as miniKube.
|
|
||||||
This is the case, if `kubectl describe pod -n cvat cvat-backend` shows that the volume claim is pending.
|
|
||||||
To fix this, `class: standard` needs to be adjusted in `02_cvat_backend_storage.yaml` and `02_database_storage.yml`.
|
|
||||||
|
|
||||||
### Creating the django super user fails
|
|
||||||
Depending on your kuberenets version you creating the super user might not be possible with in one line.
|
|
||||||
Therefore you need to get bash access within the consol and call the manage script manually.
|
|
||||||
```bash
|
|
||||||
kubectl --namespace cvat exec -it cvat-backend-7c954d5cf6-xfdcm bash
|
|
||||||
python3 ~/manage.py createsuperuser
|
|
||||||
```
|
|
||||||
|
|
||||||
### Running out of storage
|
|
||||||
By default the backend is reserving 20GB of storage if this is not enough,
|
|
||||||
you will need to ajust the `02_cvat_backend_storage.yml` persistant volume claim to increase it.
|
|
||||||
Loading…
Reference in New Issue