Skip to content

Обновление 2024.8

Внимание! Обновление коробочного решения версии 2024.8 содержит в себе 2 серьёзных изменения по сравнению с предыдущей версией:

  1. ! Образы sboard и nginx[-minio][-http] теперь объеденены в один единый образ sboard. Образы nginx[-minio][-http] с версии 2024.8 считаются устаревшими и больше не будут обновляться.
  2. ! Сертификаты 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 также может потребоваться донастройка проксирующего сервера.

Смотрите также