Webui
Genesis имеет собственный API и веб-интерфейс позволяющий просматривать логи контейнеров.
Для его запуска необходимо добавить в ваш gitlab-ci.yml
переменную SELF_CONTAINERS_BUILD: 1
и конфигурацию сервисов genesis-webui-backend
, genesis-webui-frontend
, смотри в конце пример docker-compose.yml и манифест для кубернетиса. Во время исполнения джобы genesis-release
будут собраны (2.5 мин.) внутренние контейнеры генезиса: webui_backend
, webui_frontend
.
WebUi-frontend
Веб-интерфейс будет доступен по адресу: genesis-webui-frontend.<имя ветки>.<домен>
(прим. https://genesis-webui-frontend.stand.genesis-framework.com), адрес так же можно увидеть в CI/CD логах джобы Deploy
.
WebUi-backend
API сервис genesis-webui-backend
имеет swagger интерфейс и Redoc интерфейс автодокументации по API на url example.com/docs
и example.com/redoc
соответственно. Основные эндпоинты с командами исполняемыми генезисом в таблице ниже.
Endpoint | Response | Genesis command for docker compose | Genesis command for k8s |
---|---|---|---|
/cmd/start/ | HTTP 204 No Content | docker-compose pull --quiet \ && docker-compose up --detach --remove-orphans |
kubectl delete all --all -n $NAMESPACE kubectl apply -n $NAMESPACE -f genesis/tmp/k8s --recursive |
/cmd/stop/ | HTTP 204 No Content | services=$(genesis services --container-manager docker) docker-compose stop $services |
kubectl -n $NAMESPACE rollout pause deploy |
/cmd/restart/ | HTTP 204 No Content | services=$(genesis services --container-manager docker) docker-compose pull --quiet \ && docker-compose up --detach --force-recreate --remove-orphans $services |
kubectl -n $NAMESPACE rollout restart deploy |
/cmd/update/ | HTTP 204 No Content | docker-compose pull --quiet \ && docker-compose up --detach --remove-orphans |
kubectl delete all --all -n $NAMESPACE kubectl apply -n $NAMESPACE -f genesis/tmp/k8s --recursive |
/cmd/list/ | List of services | Не реализованно | |
/cmd/version/ | Genesis version included in WebUI container | ||
/сmd/service/{service} | Websocket receiving the service name. Giving away service logs. | Не реализованно |
Configuration
Для Docker compose использовать конфиг сервисов docker-compose.yml
:
Если у вас уже есть Nginx в конфиге, второй раз добавлять его не нужно.
version: '3.3'
services:
genesis-webui-backend:
container_name: genesis-webui-backend
image: ${REGISTRY_URL}/webui_backend:${TAG}
restart: always
ports:
- "8999:8999"
volumes:
- /home/devop:/root/
- /var/run/docker.sock:/var/run/docker.sock
genesis-webui-frontend:
container_name: genesis-webui-frontend
image: ${REGISTRY_URL}/webui_frontend:${TAG}
restart: always
environment:
- BASE_URL=${GENESIS_WEBUI_BACKEND_PUBLIC_URL}
ports:
- "8998:3000"
nginx:
container_name: nginx
image: jonasal/nginx-certbot:3.2.0-nginx1.23.1
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- nginx_secrets:/etc/letsencrypt
- ~/user_conf.d:/etc/nginx/user_conf.d:ro
environment:
- CERTBOT_EMAIL=${CERTBOT_EMAIL}
volumes:
nginx_secrets:
Для кубернетиса использовать следующий манифест.
apiVersion: apps/v1
kind: Deployment
metadata:
name: genesis-webui-backend
labels:
app: genesis-webui-backend
spec:
selector:
matchLabels:
app: genesis-webui-backend
replicas: 1
template:
metadata:
labels:
app: genesis-webui-backend
spec:
containers:
- name: genesis-webui-backend
image: ${REGISTRY_URL}/webui_backend:${TAG}
ports:
- containerPort: 8999
imagePullPolicy: Always
imagePullSecrets:
- name: registry-credential
restartPolicy: Always
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: genesis-webui-frontend
labels:
app: genesis-webui-frontend
spec:
selector:
matchLabels:
app: genesis-webui-frontend
replicas: 1
template:
metadata:
labels:
app: genesis-webui-frontend
spec:
containers:
- name: genesis-webui-frontend
image: ${REGISTRY_URL}/webui_frontend:${TAG}
ports:
- containerPort: 3000
imagePullPolicy: Always
env:
- name: BASE_URL
value: https://${GENESIS_WEBUI_BACKEND_PUBLIC_URL}
imagePullSecrets:
- name: registry-credential
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: genesis-webui-backend
spec:
selector:
app: genesis-webui-backend
ports:
- name: "genesis-webui-backend"
port: 8999
targetPort: 8999
---
apiVersion: v1
kind: Service
metadata:
name: genesis-webui-frontend
spec:
selector:
app: genesis-webui-frontend
ports:
- name: "genesis-webui-frontend"
port: 8998
targetPort: 3000