Показать / скрыть оглавление

    Развертывание кластера Колибри в Kubernetes

    Замечание

    Текущий способ установки требует от исполнителя наличия опыта работы с утилитой kubectl и понимания используемых в kubernetes ресурсов.

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

    Замечание

    Для того, чтобы получить docker-образ платформы Колибри, потребуется подключение к репозиторию https://hub.docker.octonica.com.
    Репозиторий с ограниченным доступом. Доступ предоставляется по запросу.

    Создание секрета в kubernetes для доступа к репозиторию hub.docker.octonica.com

    Получив логин и пароль для доступа к репозиторию образов hub.docker.octonica.com в kubernetes необходимо создать ресурс Secret для дальнейшей авторизации в репозитории и загрузке образа контейнера Колибри.

    Для создания секрета можно воспользоваться утилитой kubectl в kubernetes. Для этого необходимо выполнить команду в терминале:

    sudo kubectl create secret docker-registry hub-docker-octonica-com --docker-server=hub.docker.octonica.com --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
    

    где:

    • hub-docker-octonica-com - произвольное название ресурса Secret
    • hub.docker.octonica.com - адрес репозитория
    • DOCKER_USER - предоставленный нами логин к репозиторию
    • DOCKER_PASSWORD - пароль пользователя
    • DOCKER_EMAIL - email пользователя

    Более подробную документацию к команде можно найти по ссылке: https://jamesdefabia.github.io/docs/user-guide/kubectl/kubectl_create_secret_docker-registry/

    Создание деплоймента

    Деплоймент кластера Колибри предполагает наличие или создание двух постоянных хранилищ, первое хранилище должно монтироваться в директорию /etc/opt/colibri/ и необходимо для хранения настроек приложения Колибри, а второе должно быть смонтировано в директорию /var/opt/colibri/ и предназначено для хранения лицензионного файла (/var/opt/colibri/*.colibrikey), настроек моделей (/var/opt/colibri/app/) и файлов журналов (/var/opt/colibri/log/). Описание файловой структуры платформы Колибри для ОС семейства Debian.

    В примере ниже в манифесте деплоймента создаются два постоянных хранилища, использующих cifs-драйвер (https://github.com/fstab/cifs).

    Образ контейнера hub.docker.octonica.com/colibri-release/web содержит последнюю версию платформы Колибри.

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

    Замечание

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

    В настройке imagePullSecrets - name необходимо указать название созданного ранее секрета для доступа к hub.docker.octonica.com.

    В настройке replicas необходимо указать требуемое количество экземпляров платформы Колибри, которые будут работать в кластерном режиме. Значение может варьироваться от 1 и более.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: colibri-deployment
      labels:
        app: colibri
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: colibri  
      template:
        metadata:
          labels:
            app: colibri
        spec:      
          initContainers:
            - name: init-configs
              image: hub.docker.octonica.com/colibri-release/web
              command: ["/bin/bash"]
              args: ["-c", "cp -n -R /tmp/etc/opt/colibri/* /etc/opt/colibri/ && cp -n -R /tmp/var/opt/colibri/* /var/opt/colibri/"]
              volumeMounts:
              - name: etc
                mountPath: /etc/opt/colibri
              - name: var
                mountPath: /var/opt/colibri
          containers:
            - name: colibri
              image: hub.docker.octonica.com/colibri-release/web
              env:
              - name: "URLS"
                value: "http://*:5000"
              volumeMounts:
              - name: etc
                mountPath: /etc/opt/colibri
              - name: var
                mountPath: /var/opt/colibri
          imagePullSecrets:
            - name: hub-docker-octonica-com
          volumes:
          - name: etc
            flexVolume:
              driver: "fstab/cifs"
              fsType: "cifs"
              secretRef:
                name: "cifs-secret"
              options:
                networkPath: "//networkshare/k8s-colibri-cluster/etc"
                mountOptions: "dir_mode=0755,file_mode=0644,noperm"
          - name: var
            flexVolume:
              driver: "fstab/cifs"
              fsType: "cifs"
              secretRef:
                name: "cifs-secret"
              options:
                networkPath: "//networkshare/k8s-colibri-cluster/var"
                mountOptions: "dir_mode=0755,file_mode=0644,noperm"
    
    Замечание

    Использование хранилищ типа flexVolume с драйвером fstab/cifs приведено исключительно для примера. Вы же можете выбрать хранилища любого другого типа.

    Совет

    Шпаргалка по применению манифестов по ссылке.

    Создание сервиса

    Ниже представлен пример манифеста создания сервиса с балансировщиком нагрузки для кластера Колибри. В данном примере публикация производится через механизм nodePort, т.е. снаружи доступ к кластеру можно будет получить через указанный в параметре порт.

    Параметры port и targetPort в примере можно оставить без изменений. Таким образом через порт 5000 вне контейнера (параметр port) трафик будет направляться на порт 5000 (параметр targetPort) внутри контейнера, который прослушивается сервером Колибри.

    apiVersion: v1
    kind: Service
    metadata:
      name: colibri-service
    spec:
      type: LoadBalancer
      selector:
        app: colibri
      ports:
      - protocol: TCP
        port: 5000
        targetPort: 5000
        nodePort: 40000
    

    Настройка кластера Колибри

    В примере выше смонтированные разделы для хранения настроек Колибри и хранения настроек моделей приложений Колибри названы etc и var соответственно. Ниже эти названия будут использоваться для ссылок на соответствующие смонтированные разделы.

    Для настройки кластера Колибри требуется выполнить три шага:

    1. Установить файл лицензии.
    2. Установить настройки моделей (настройки конкретного приложения, построенного на базе платформы Колибри).
    3. Внести изменения в colibriSettings.json.

    Установка файла лицензии

    Для работы с Колибри требуется файл действующей лицензии *.colibrikey.
    Файл лицензии *.colibrikey требуется поместить в корень раздела var

    Установка настроек моделей

    Конкретные приложения (модели), построенные на базе платформы Колибри, обладают своими уникальными настройками. Для работы с такими приложениями у разработчиков необходимо получить папку с данными настройками.
    Настройки моделей должны быть помещены в раздел var в директорию app.

    Настройки сервера приложений

    Все настройки сервера приложений вне зависимости от вида инсталляции находятся в файле конфигурации colibriSettings.json и описаны в соответствующем разделе. Файл конфигурации colibriSettings.json должен находиться в корне смонтированного раздела etc.

    Просмотр журнала

    В случае ошибок запуска платформы Колибри или необходимости просмотреть журнал, файл текстового журнала на текущую дату может быть найден в смонтированном разделе var в папке log и называется colibri.log.

    В начало страницы