Тема
Обновление 2024.8
Внимание! Обновление коробочного решения версии 2024.8 содержит в себе 2 серьёзных изменения по сравнению с предыдущей версией:
- ! Образы
sboard
иnginx[-minio][-http]
теперь объеденены в один единый образsboard
. Образыnginx[-minio][-http]
с версии 2024.8 считаются устаревшими и больше не будут обновляться. - ! Сертификаты SSL в новой версии теперь должны передаваться в контейнер образа
sboard
и иметь названияpublic.crt
иprivate.key
.
Особенности обновления на новую версию
Новая версия образа sboard
совместима с предыдущей, однако настоятельно рекомендуется внести изменения в конфигурацию разворачиваемой системы, чтобы избежать проблем в будущем.
Для этого необходимо убрать образ nginx[-minio][-http]
из docker‑compose.yml
, переместив настройки ports
(проброс портов) и volumes
(путь к сертификатам SSL) в контейнер sboard
.
Также для вариантов docker-compose.yml
с образами nginx-http
или nginx-minio-http
(конфигурации с reverse proxy) необходимо указать для контейнера образа sboard
переменную окружения REVERSE_PROXY
со значением true
.
В случае конфигурации с Kubernetes необходимо отредактировать файлы sboard_env.yml
и sboard_app.yml
в соответствии с примером.
Также при переходе на новую версию может потребоваться пересоздать Miro App, установив при создании приложения галочку на Expire user authorization token. Импорт досок из Miro для приложений без этой настройки работать не будет.
Конфигурация standalone (пример редактирования docker-compose.yml)
Для обновления на новую версию необходимо переименовать сертификаты SSL (public.crt
и private.key
), а также внести следующие изменения в docker-compose.yml
:
yml
version: "3.3"
services:
postgres:
image: "${DOCKER_REGISTRY}/postgres:${DOCKER_IMAGE_TAG}"
restart: "always"
environment:
PGDATA: /data
volumes:
- pg_data:/data
minio:
image: "${DOCKER_REGISTRY}/minio:${DOCKER_IMAGE_TAG}"
restart: "always"
volumes:
- minio_data:/data
redis:
image: "${DOCKER_REGISTRY}/redis:${DOCKER_IMAGE_TAG}"
restart: "always"
sboard:
image: "${DOCKER_REGISTRY}/sboard:${DOCKER_IMAGE_TAG}"
restart: "always"
ports:
- 80:80
- 443:443
volumes:
- "./certs:/certs"
environment:
DOMAIN_NAME: "${DOMAIN_NAME}"
MIRO_CLIENT_ID: "${MIRO_CLIENT_ID}"
MIRO_CLIENT_SECRET: "${MIRO_CLIENT_SECRET}"
depends_on:
- minio
- redis
- postgres
nginx:
image: "${DOCKER_REGISTRY}/nginx-minio:${DOCKER_IMAGE_TAG}"
restart: "always"
ports:
- 80:80
- 443:443
environment:
DOMAIN_NAME: "${DOMAIN_NAME}"
volumes:
- "./certs:/certs"
depends_on:
- minio
- sboard
volumes:
minio_data:
pg_data:
Конфигурация HA (пример редактирования docker-compose.yml)
Для обновления на новую версию необходимо переименовать сертификаты SSL (public.crt
и private.key
), а также внести следующие изменения в docker-compose.yml
:
yml
version: "3.3"
services:
sboard:
image: "${DOCKER_REGISTRY}/sboard:${DOCKER_IMAGE_TAG}"
restart: "always"
ports:
- 80:80
- 443:443
volumes:
- "./certs:/certs"
environment:
DOMAIN_NAME: "${DOMAIN_NAME}"
POSTGRES_URL: "${POSTGRES_URL}"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
REDIS_PASS: "${REDIS_PASS}"
S3_BUCKET: "${S3_BUCKET}"
S3_ACCESS_KEY_ID: "${S3_ACCESS_KEY_ID}"
S3_SECRET_ACCESS_KEY: "${S3_SECRET_ACCESS_KEY}"
S3_ENDPOINT: "${S3_ENDPOINT}"
MIRO_CLIENT_ID: "${MIRO_CLIENT_ID}"
MIRO_CLIENT_SECRET: "${MIRO_CLIENT_SECRET}"
nginx:
image: "${DOCKER_REGISTRY}/nginx:${DOCKER_IMAGE_TAG}"
restart: "always"
ports:
- 80:80
- 443:443
environment:
DOMAIN_NAME: "${DOMAIN_NAME}"
volumes:
- "./certs:/certs"
depends_on:
- sboard
Конфигурация HA с reverse proxy (пример редактирования docker-compose.yml)
Для обновления на новую версию необходимо внести следующие изменения в docker-compose.yml
:
yml
version: "3.3"
services:
sboard:
image: "${DOCKER_REGISTRY}/sboard:${DOCKER_IMAGE_TAG}"
restart: "always"
ports:
- 80:80
environment:
REVERSE_PROXY: "true"
DOMAIN_NAME: "${DOMAIN_NAME}"
POSTGRES_URL: "${POSTGRES_URL}"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
REDIS_PASS: "${REDIS_PASS}"
S3_BUCKET: "${S3_BUCKET}"
S3_ACCESS_KEY_ID: "${S3_ACCESS_KEY_ID}"
S3_SECRET_ACCESS_KEY: "${S3_SECRET_ACCESS_KEY}"
S3_ENDPOINT: "${S3_ENDPOINT}"
MIRO_CLIENT_ID: "${MIRO_CLIENT_ID}"
MIRO_CLIENT_SECRET: "${MIRO_CLIENT_SECRET}"
nginx:
image: "${DOCKER_REGISTRY}/nginx:${DOCKER_IMAGE_TAG}"
restart: "always"
ports:
- 80:80
environment:
DOMAIN_NAME: "${DOMAIN_NAME}"
depends_on:
- sboard
Конфигурация Kubernetes (пример редактирования файлов sboard_env.yml
и sboard_app.yml
)
Для обновления на новую версию необходимо внести следующие изменения в sboard_env.yml
и sboard_app.yml
:
sboard_env.yml
yml
kind: Secret
apiVersion: v1
metadata:
name: env-secret
namespace: sboard-k8s-deploy
stringData:
DOMAIN_NAME: sboard.mycompany.com # доменное имя, на котором развернется сервис
POSTGRES_URL: postgresql://user:password@host:5432/db # url подключения к базе данных postgresql, содержит в себе root user, пароль и хост базы
REDIS_HOST: redis # хост для базы данных redis
REDIS_PORT: 6379 # порт для базы данных redis
REDIS_PASS: pass # пароль для базы данных redis
S3_BUCKET: example-bucket # название бакета в s3 storage
S3_ACCESS_KEY_ID: access_key_id # айди ключа доступа к s3 storage
S3_SECRET_ACCESS_KEY: secret_access_key # ключ доступа к s3 storage
S3_ENDPOINT: https://storage.s3.com # url для s3 storage
REVERSE_PROXY: true # запуск за reverse proxy
type: Opaque
sboard_app.yml
yml
# Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sboard-ingress
namespace: sboard-k8s-deploy
annotations:
kubernetes.io/ingress.class: 'nginx'
spec:
tls:
- hosts:
- sboard.mycompany.com # доменное имя, на котором развернется сервис
secretName: domain-name-secret
rules:
- host: sboard.mycompany.com # доменное имя, на котором развернется сервис
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: sboard-lb
port:
number: 80
---
# Service для пода local-nginx-sboard
# Service для пода sboard-dev
apiVersion: v1
kind: Service
metadata:
name: sboard-lb
namespace: sboard-k8s-deploy
spec:
selector:
app: local-nginx-sboard
app: sboard-dev
ports:
- protocol: TCP
port: 80
targetPort: 80
---
# Сервис, обеспечивающий доступность sboard в local-nginx-sboard
apiVersion: v1
kind: Service
metadata:
name: sboard
namespace: sboard-k8s-deploy
spec:
selector:
app: sboard-dev
ports:
- name: auth-web
protocol: TCP
port: 8080
targetPort: 8080
- name: auth-service
protocol: TCP
port: 3000
targetPort: 3000
- name: whiteboard-api
protocol: TCP
port: 3001
targetPort: 3001
- name: api-gateway
protocol: TCP
port: 3002
targetPort: 3002
- name: dashboard
protocol: TCP
port: 8081
targetPort: 8081
- name: admin-dashboard
protocol: TCP
port: 8082
targetPort: 8082
- name: whiteboard
protocol: TCP
port: 8083
targetPort: 8083
---
# Deployment docker
apiVersion: apps/v1
kind: Deployment
metadata:
name: sboard-dev
namespace: sboard-k8s-deploy
spec:
replicas: 1
selector:
matchLabels:
app: sboard-dev
template:
metadata:
labels:
app: sboard-dev
spec:
imagePullSecrets:
- name: sboard-custom-registry
containers:
- name: sboard
image: cr.yandex/crpqnc9iiqap7fs19jhl/sboard:latest
imagePullPolicy: Always
envFrom:
- secretRef:
name: env-secret
restartPolicy: Always
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: local-nginx-sboard
namespace: sboard-k8s-deploy
spec:
replicas: 1
selector:
matchLabels:
app: local-nginx-sboard
template:
metadata:
labels:
app: local-nginx-sboard
spec:
imagePullSecrets:
- name: sboard-custom-registry
containers:
- name: nginx
image: cr.yandex/crpqnc9iiqap7fs19jhl/nginx-http:latest
ports:
- containerPort: 80
imagePullPolicy: Always
envFrom:
- secretRef:
name: env-secret
restartPolicy: Always
Примечания
Поскольку образ sboard
теперь имеет открытые порты, то это делает невозможным использование параметра --scale
(например, --scale sboard=2
) при запуске docker-compose.yml
.
Также может потребоваться указать при запуске docker-compose.yml
параметр --remove-orphans
в случае, если новая конфигурация запускается без предварительной остановки старой.
Для конфигураций с reverse proxy также может потребоваться донастройка проксирующего сервера.