Better readme to Helm chart (#4366)
Co-authored-by: Andrey Zhavoronkov <andrey.zhavoronkov@intel.com>main
parent
6dd73b0576
commit
93ccf2177f
@ -1,58 +1,138 @@
|
|||||||
# FAQ
|
# CVAT chart manual
|
||||||
## What should be configured before installation?
|
|
||||||
1. You should have configured connection to existed k8s cluster
|
- [CVAT chart manual](#cvat-chart-manual)
|
||||||
2. Helm must be installed
|
- [Prerequisites](#prerequisites)
|
||||||
3. You should download chart external dependencies, using following commands:
|
- [Installing dependencies](#installing-dependencies)
|
||||||
```
|
- [Optional steps](#optional-steps)
|
||||||
helm repo add bitnami https://charts.bitnami.com/bitnami
|
- [Configuration](#configuration)
|
||||||
helm repo update
|
- [Postgresql password?](#postgresql-password)
|
||||||
helm dependency update
|
- [Ingress parameters](#ingress-parameters)
|
||||||
```
|
- [Deployment](#deployment)
|
||||||
4. (Optional) Install ingress of your choice (for example: <https://github.com/kubernetes/ingress-nginx>)
|
- [With overrides:](#with-overrides)
|
||||||
5. (Optional) Create certificates for https (for example: <https://github.com/jetstack/cert-manager/>)
|
- [Without overrides:](#without-overrides)
|
||||||
6. (Optional) Create values.override.yaml and override there parameters you want
|
- [Post-deployment configuration](#post-deployment-configuration)
|
||||||
7. Change postgresql password as described below
|
- [How to create superuser?](#how-to-create-superuser)
|
||||||
8. Add ingress to values.override.yaml(example also below)
|
- [FAQ](#faq)
|
||||||
7. Deploy cvat using command below
|
- [What is kubernetes and how it is working?](#what-is-kubernetes-and-how-it-is-working)
|
||||||
## How to deploy new version of chart to cluster?
|
- [What is helm and how it is working?](#what-is-helm-and-how-it-is-working)
|
||||||
Execute following command:
|
- [How to enable ingress:](#how-to-enable-ingress)
|
||||||
```helm upgrade <release_name> --install ./helm-chart -f ./helm-chart/values.yaml -f values.override.yaml(if exists) --namespace <desired namespace>```
|
- [How to understand what diff will be inflicted by 'helm upgrade'?](#how-to-understand-what-diff-will-be-inflicted-by-helm-upgrade)
|
||||||
## How to create superuser?
|
- [I want to use my own postgresql/redis with your chart.](#i-want-to-use-my-own-postgresqlredis-with-your-chart)
|
||||||
```
|
- [I want to override some settings in values.yaml.](#i-want-to-override-some-settings-in-valuesyaml)
|
||||||
HELM_RELEASE_NAMESPACE="<insert>" &&\
|
- [Why you used external charts to provide redis and postgres?](#why-you-used-external-charts-to-provide-redis-and-postgres)
|
||||||
HELM_RELEASE_NAME="<insert>" &&\
|
|
||||||
BACKEND_POD_NAME=$(kubectl get pod --namespace $HELM_RELEASE_NAMESPACE -l tier=backend,app.kubernetes.io/instance=$HELM_RELEASE_NAME -o jsonpath='{.items[0].metadata.name}') &&\
|
## Prerequisites
|
||||||
kubectl exec -it --namespace $HELM_RELEASE_NAMESPACE $BACKEND_POD_NAME -c cvat-backend-app-container -- python manage.py createsuperuser
|
1. Installed and configured [kubernetes](https://kubernetes.io/) cluster.
|
||||||
```
|
2. Installed [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)
|
||||||
## How to change embedded postgresql password?
|
3. Installed [Helm](https://helm.sh/).
|
||||||
There are several passwords used here, for security reasons - better change them all.
|
4. Installed [dependencies](#installing-dependencies)
|
||||||
|
|
||||||
|
### Installing dependencies
|
||||||
|
To install and/or update run:
|
||||||
|
```sh
|
||||||
|
helm repo add bitnami https://charts.bitnami.com/bitnami
|
||||||
|
helm repo update
|
||||||
|
helm dependency update
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Optional steps
|
||||||
|
1. Install ingress of your choice (for example: <https://github.com/kubernetes/ingress-nginx>)
|
||||||
|
2. Create certificates for https (for example: <https://github.com/jetstack/cert-manager/>)
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
1. Create `values.override.yaml` file inside `helm-chart` directory.
|
||||||
|
2. Fill `values.override.yaml` with new parameters for chart.
|
||||||
|
3. Override [postgresql password](#postgresql-password)
|
||||||
|
4. (Optional) Add [ingress parameters](#ingress-parameters)
|
||||||
|
|
||||||
|
### Postgresql password?
|
||||||
|
Put below into your `values.override.yaml`
|
||||||
|
```yaml
|
||||||
postgresql:
|
postgresql:
|
||||||
secret:
|
secret:
|
||||||
password: cvat_postgresql
|
password: <insert_password>
|
||||||
postgres_password: cvat_postgresql_postgres
|
postgres_password: <insert_postgres_password>
|
||||||
replication_password: cvat_postgresql_replica
|
replication_password: <insert_replication_password>
|
||||||
```
|
|
||||||
Or, if you know how to work with k8s - you could create your own secret and use it here:
|
|
||||||
```
|
```
|
||||||
|
Or create your own secret and use it with:
|
||||||
|
```yaml
|
||||||
postgresql:
|
postgresql:
|
||||||
global:
|
global:
|
||||||
postgresql:
|
postgresql:
|
||||||
existingSecret: cvat-postgres-secret
|
existingSecret: <secret>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ingress parameters
|
||||||
|
Paste below parameters to `values.override.yaml`
|
||||||
|
```yaml
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: nginx
|
||||||
|
kubernetes.io/tls-acme: "true"
|
||||||
|
ingress.kubernetes.io/ssl-redirect: "true"
|
||||||
|
nginx.ingress.kubernetes.io/use-regex: "true"
|
||||||
|
nginx.ingress.kubernetes.io/secure-backends: "true"
|
||||||
|
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||||
|
nginx.ingress.kubernetes.io/proxy-send-timeout: "120"
|
||||||
|
nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
|
||||||
|
cert-manager.io/cluster-issuer: <issuer_name>
|
||||||
|
hosts:
|
||||||
|
- host: <your_domain>
|
||||||
|
paths:
|
||||||
|
- path: "/api/.*|git/.*|tensorflow/.*|auto_annotation/.*|analytics/.*|static/.*|admin|admin/.*|documentation/.*|dextr/.*|reid/.*"
|
||||||
|
service:
|
||||||
|
name: <release_name>-backend-service
|
||||||
|
port: 8080
|
||||||
|
- path: "/"
|
||||||
|
pathType: "Prefix"
|
||||||
|
service:
|
||||||
|
name: <release_name>-frontend-service
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- <your_domain>
|
||||||
|
secretName: ingress-tls-cvat
|
||||||
```
|
```
|
||||||
## How to describe ingress:
|
|
||||||
|
## Deployment
|
||||||
|
Make sure you are using correct kubernetes context. You can check it with `kubectl config current-context`.
|
||||||
|
|
||||||
|
Execute following command from repo root directory
|
||||||
|
### With overrides:
|
||||||
|
```helm upgrade -n <desired_namespace> <release_name> -i --create-namespace ./helm-chart -f ./helm-chart/values.yaml -f ./helm-chart/values.override.yaml```
|
||||||
|
|
||||||
|
### Without overrides:
|
||||||
|
```helm upgrade -n <desired_namespace> <release_name> -i --create-namespace ./helm-chart -f ./helm-chart/values.yaml```
|
||||||
|
|
||||||
|
## Post-deployment configuration
|
||||||
|
|
||||||
|
1. Create [super user](#how-to-create-superuser)
|
||||||
|
|
||||||
|
### How to create superuser?
|
||||||
|
```sh
|
||||||
|
HELM_RELEASE_NAMESPACE="<desired_namespace>" &&\
|
||||||
|
HELM_RELEASE_NAME="<release_name>" &&\
|
||||||
|
BACKEND_POD_NAME=$(kubectl get pod --namespace $HELM_RELEASE_NAMESPACE -l tier=backend,app.kubernetes.io/instance=$HELM_RELEASE_NAME -o jsonpath='{.items[0].metadata.name}') &&\
|
||||||
|
kubectl exec -it --namespace $HELM_RELEASE_NAMESPACE $BACKEND_POD_NAME -c cvat-backend-app-container -- python manage.py createsuperuser
|
||||||
|
```
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
|
||||||
|
### What is kubernetes and how it is working?
|
||||||
|
See <https://kubernetes.io/>
|
||||||
|
### What is helm and how it is working?
|
||||||
|
See <https://helm.sh/>
|
||||||
|
### How to enable ingress:
|
||||||
Just set `ingress.enabled:` to `true`, then copy example, uncomment it and change values there
|
Just set `ingress.enabled:` to `true`, then copy example, uncomment it and change values there
|
||||||
## How to understand what diff will be inflicted by 'helm upgrade'?
|
### How to understand what diff will be inflicted by 'helm upgrade'?
|
||||||
You can use <https://github.com/databus23/helm-diff#install> for that
|
You can use <https://github.com/databus23/helm-diff#install> for that
|
||||||
## I want to use my own postgresql/redis with your chart.
|
### I want to use my own postgresql/redis with your chart.
|
||||||
Just set `postgresql.enabled` or `redis.enabled` to `false`, as described below.
|
Just set `postgresql.enabled` or `redis.enabled` to `false`, as described below.
|
||||||
Then - put your instance params to "external" field
|
Then - put your instance params to "external" field
|
||||||
## I want to override some settings in values.yaml.
|
### I want to override some settings in values.yaml.
|
||||||
Just create file `values.override.yaml` and place your changes here, using same structure as in `values.yaml`.
|
Just create file `values.override.yaml` and place your changes here, using same structure as in `values.yaml`.
|
||||||
Then reference it in helm update/install command using `-f` flag
|
Then reference it in helm update/install command using `-f` flag
|
||||||
## Why you used external charts to provide redis and postgres?
|
### Why you used external charts to provide redis and postgres?
|
||||||
Because they definitely know what they do better then we are, so we are getting more quality and less support
|
Because they definitely know what they do better then we are, so we are getting more quality and less support
|
||||||
## What is kubernetes and how it is working?
|
|
||||||
See <https://kubernetes.io/>
|
|
||||||
## What is helm and how it is working?
|
|
||||||
See <https://helm.sh/>
|
|
||||||
Loading…
Reference in New Issue