Развертывание кластера Колибри в 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
соответственно. Ниже эти названия будут использоваться для ссылок на соответствующие смонтированные разделы.
Для настройки кластера Колибри требуется выполнить три шага:
- Установить файл лицензии.
- Установить настройки моделей (настройки конкретного приложения, построенного на базе платформы Колибри).
- Внести изменения в
colibriSettings.json
.
Установка файла лицензии
Для работы с Колибри требуется файл действующей лицензии *.colibrikey
.
Файл лицензии *.colibrikey
требуется поместить в корень раздела var
Установка настроек моделей
Конкретные приложения (модели), построенные на базе платформы Колибри, обладают своими уникальными настройками. Для работы с такими приложениями у разработчиков необходимо получить папку с данными настройками.
Настройки моделей должны быть помещены в раздел var
в директорию app
.
Настройки сервера приложений
Все настройки сервера приложений вне зависимости от вида инсталляции находятся в файле конфигурации colibriSettings.json
и описаны в соответствующем разделе.
Файл конфигурации colibriSettings.json
должен находиться в корне смонтированного раздела etc
.
Просмотр журнала
В случае ошибок запуска платформы Колибри или необходимости просмотреть журнал, файл текстового журнала на текущую дату может быть найден в смонтированном разделе var
в папке log
и называется colibri.log
.