- Golang version 18(Installation instruction link)
- You need to install dev dependencies
$ make install-dev-requirements- Run PostgreSQL database
$ docker run -d --rm --name tutorintech_postgres -v /srv/_tutorintech_postgres:/var/lib/postgresql/data -e POSTGRES_PASSWORD=secret -p 5432:5432 -d postgres:15-alpine
$ docker run --rm -it --link tutorintech_postgres:postgres -e PGPASSWORD=secret postgres:15-alpine createdb -h postgres -U postgres tutorintech- Install tool for migrations and apply them:
$ make install-migrate
$ migrate -source file://./migrations -database postgres://postgres:secret@localhost:5432/tutorintech\?sslmode=disable up
- Setup local image registry:
$ docker run --rm --name registry --net host -d registry:2
$ docker login localhost:5000- Build required images and push them to the registry:
$ docker compose -f docker/dashboard/docker-compose.yml build
$ docker tag tit-dashboard:latest localhost:5000/tit-dashboard:latest
$ docker push localhost:5000/tit-dashboard:latest- Install k3s
IMPORTANT NOTE: default k3s setup is provided with flannel CNI,
which does not support network policies required for disabling networking inside dashboards.
Thats why we use calico as alternative.
Install k3s excluding flannel CNI using command below:
$ curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" INSTALL_K3S_EXEC="--flannel-backend=none --cluster-cidr=192.168.0.0/16 --disable-network-policy" sh -Then install calico:
$ k3s kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/tigera-operator.yaml
$ k3s kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/custom-resources.yamlAdd following content to /etc/rancher/k3s/registries.yaml file:
mirrors:
local:
endpoint:
- "http://localhost:5000"- Add following line to
/etc/hostsfile:
127.0.0.1 dashboards.tutorin.tech
- Create
.envfile with following content:
DEBUG=true
SECRET_KEY=secret
DASHBOARD_IMAGE=localhost:5000/tit-dashboard:latest
DASHBOARD_INGRESS_DOMAIN=dashboards.tutorin.tech- Run application. You can configure app by passing env variables directly or create .env file in project root.
$ make devTo create superuser locally use command below:
$ make createsuperuserIn production environment createsuperuser binary is available from anywhere
Before deployment make sure cert-manager installed in your cluster.
If it is not, use command below:
$ kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yamlTo deploy the app in production environment you should use werf (Installation instruction link).
To build and deploy app use command below:
$ werf converge --repo registry.tutorin.tech/tit-backend --env prodTo override default configuration you can use --set flags or custom values.yaml file:
$ werf converge --repo registry.tutorin.tech/tit-backend --env prod \
--set env.PG_HOST=localhost --set env.PG_NAME=postgres
$ # Alternatively
$ werf converge --repo registry.tutorin.tech/tit-backend --env prod \
--values /path/to/custom/values.yaml