Развёртывание Visiology в Kubernetes

Развёртывание Visiology в Kubernetes

Kubernetes – это платформа для автоматизированного управления контейнерами, которая помогает запускать, масштабировать и поддерживать работу приложений в распределенной среде, обеспечивая высокую доступность и отказоустойчивость.

Платформа предоставляет инструменты для автоматического распределения нагрузки между серверами, обеспечения отказоустойчивости за счет создания резервных копий данных и быстрого восстановления после сбоев. Она особенно полезна при работе с микросервисной архитектурой, когда приложение состоит из множества независимых компонентов, работающих вместе.

Развертывая Visiology в Kubernetes, вы получаете возможность автоматизировать весь процесс управления вашей аналитической платформой. Это включает в себя не только запуск сервисов, но и их масштабирование в зависимости от текущих потребностей бизнеса, а также обеспечение высокой доступности и отказоустойчивости системы.

Среди основных преимуществ использования Kubernetes можно выделить следующие:

  • Автоматизация процессов: Kubernetes автоматически управляет жизненным циклом ваших сервисов, позволяя быстро разворачивать новые версии приложения без простоев.

  • Масштабируемость: Платформу можно легко масштабировать, добавляя дополнительные ресурсы по мере роста нагрузки. Kubernetes сам распределяет задачи между доступными узлами, оптимизируя использование ресурсов.

  • Балансировка нагрузки: Система способна динамически распределять запросы между несколькими экземплярами сервиса, тем самым повышая производительность и снижая вероятность перегрузки отдельных узлов.

  • Отказоустойчивость: Каждый компонент платформы может работать в нескольких экземплярах, что исключает наличие единой точки отказа (SPOF). Если один экземпляр выходит из строя, другие продолжают работу, обеспечивая непрерывность обслуживания.

Ниже представлен пример конфигурации кластера Kubernetes:

config.png

Для того, чтобы развернуть Visiology в Kubernetes (K8s) необходимо выполнить следующие шаги:

  1. Установить Traefik.

  2. Установить Visiology.

Установка дефолтного HTTPS сертификата для Traefik

Traefik использует Gateway API для завершения TLS. Сертификат по умолчанию должен храниться в Secret traefik-tls в пространстве имён traefik.

Для создания Secret выполните команду:

kubectl create namespace traefik kubectl create secret tls traefik-tls \ --cert=tls.crt --key=tls.key \ --namespace traefik

Важно:

  • Укажите корректные пути к файлам сертификата (tls.crt) и приватного ключа (tls.key).

  • Приватный ключ не должен быть защищён паролем (должен быть в формате без passphrase).

Установка Traefik helm chart

Ниже приведён пример файла values.yaml для установки Traefik с помощью Helm. Файл содержит настройки, необходимые для работы аналитической платформы Visiology, включая публикацию сервиса через LoadBalancer, настройки безопасности, проброс портов, интеграцию с Gateway API и мониторинг:

service: type: LoadBalancer spec: loadBalancerIP: "YOUR_IP" securityContext: capabilities: drop: - ALL readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 65532 runAsGroup: 65532 # Configure Network Ports and EntryPoints # EntryPoints are the network listeners for incoming traffic. ports: # Defines the HTTP entry point named 'web' web: port: 80 nodePort: 30000 # Instructs this entry point to redirect all traffic to the 'websecure' entry point http: redirections: entryPoint: to: websecure scheme: https permanent: true # Defines the HTTPS entry point named 'websecure' websecure: port: 8443 nodePort: 30001 exposedPort: 443 postgres-onec: port: 35432 expose: default: true exposedPort: 35432 protocol: TCP # Enables the dashboard in Secure Mode api: dashboard: true insecure: false ingressRoute: dashboard: enabled: true matchRule: Host(`dashboard.docker.localhost`) entryPoints: - websecure middlewares: - name: dashboard-auth # Creates a BasicAuth Middleware and Secret for the Dashboard Security extraObjects: - apiVersion: v1 kind: Secret metadata: name: dashboard-auth-secret type: kubernetes.io/basic-auth stringData: username: admin password: "YOUR-PASSWORD" # Replace with an Actual Password - apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: dashboard-auth spec: basicAuth: secret: dashboard-auth-secret # We will route with Gateway API instead. ingressClass: enabled: true isDefaultClass: false # Enable Gateway API Provider & Disables the KubernetesIngress provider # Providers tell Traefik where to find routing configuration. providers: kubernetesIngress: enabled: true kubernetesGateway: enabled: true ## Gateway Listeners gateway: listeners: web: # HTTP listener that matches entryPoint `web` port: 80 protocol: HTTP namespacePolicy: from: All websecure: # HTTPS listener that matches entryPoint `websecure` port: 8443 protocol: HTTPS # TLS terminates inside Traefik namespacePolicy: from: All mode: Terminate certificateRefs: - kind: Secret name: traefik-tls # the Secret we created before the installation group: "" # Enable Observability logs: general: level: INFO # This enables access logs, outputting them to Traefik's standard output by default. The [Access Logs Documentation](https://doc.traefik.io/traefik/observability/access-logs/) covers formatting, filtering, and output options. access: enabled: true # Enables Prometheus for Metrics metrics: prometheus: enabled: true

Перед установкой:

  1. Замените YOUR_IP на актуальный IP-адрес LoadBalancer.

  2. Замените YOUR-PASSWORD в секции stringData на реальный пароль для доступа к Dashboard.

  3. Убедитесь, что Secret traefik-tls с HTTPS-сертификатом создан в namespace traefik (как описано в предыдущем разделе).

  4. При необходимости скорректируйте порт для 1С (postgres-onec) под вашу конфигурацию.

Пример применения :

helm repo add traefik https://traefik.github.io/charts helm repo update helm upgrade --install traefik traefik/traefik -n traefik -f values.yaml

Установка Visiology

  1. Скачайте helm чарт нужной версии.

    • Получите токен аутентификации на сайте https://distrib.visiology.su на вкладке YCR токен.

    • Войдите в helm репозиторий.

      helm registry login cr.yandex -u iam -p <TOKEN>
    • Скачайте нужную версию чарта 3.18.х.

      helm pull oci://cr.yandex/crpick9dmcjif7me5pr5/visiology --version 3.18.0
  2. Генерация первоначальных значений для установки:

    • Извлеките из архива чарта файл settings.yaml

    • Заполните файл settings.yaml нужными вам значениями. Обязательны к заполнению:

      • global.commonEnv.PLATFORM_DOMAIN

      • global.commonEnv.SUBFOLDER

    • Заполните поле global.tlsCertificate значениями, которые использовались при настройке Traefik

    • Выполните команду первичной установки, где <NAMESPACE> создан заранее.

      helm template visiology visiology-3.18.0.tgz --show-only templates/auth-secrets.yaml \ --show-only templates/global.yaml \ --show-only templates/license-configmap.yaml \ --show-only templates/tls-secret.yaml \ --dry-run=server \ -f settings.yaml \ -n <NAMESPACE> | \ kubectl apply -n <NAMESPACE> --server-side --field-manager=helm -f -
  3. Получение Hardware ID.

    kubectl get secret visiology-license -o jsonpath="{.data.hardwareid}" -n <NAMESPACE> | \ base64 -d
  4. Отправьте Hardware ID в службу технической поддержки по адресу support@visiology.su для получения лицензии.

  5. Опционально. Загрузка Docker-образов:

    • Рекомендуется поместить образы в ваш корпоративный Container Registry. См. список образов, необходимых для работы.

    • Токен для скачивания образов можно получить на сайте https://distrib.visiology.su на вкладке YCR токен.

  6. Опционально. Для тестового запуска можно использовать публичный Container Registry. Для этого требуется создать секрет в Kubernetes в нужном namespace:

    kubectl create secret docker-registry yandex-registry \ --docker-username=iam \ --docker-password=<TOKEN> \ --docker-server cr.yandex \ -n <NAMESPACE>
  7. Развёртывание платформы с полученной лицензией, где YYY - полученная лицензия:

    helm upgrade --install visiology visiology-3.18.0.tgz -n <NAMESPACE> \ --set "license.license\.txt=YYY"
  8. Дождитесь полной загрузки системы.


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

Развёртывание платформы

Нужна дополнительная помощь?

Свяжитесь с технической поддержкой.