Развертывание модуля расширения

Данный документ описывает подход к развертыванию модуля расширения с помощью docker и docker-compose.

Сборка в docker

Для сборки проекта необходим docker и docker-compose.

Dockerfile рекомендуется расположить в корне проекта.

Важно для корректной работы модуля расширения прописать лейблы в Dockerfile.

Пример рабочего Dockerfile:

FROM golang:1.22-bullseye AS build

RUN apt-get update && \
    apt install -y protobuf-compiler && \
    apt clean
RUN go env -w GOSUMDB=off
RUN go env -w GO111MODULE=on
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.32.0 && \
    go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0

WORKDIR /src
COPY . .
RUN make build

FROM scratch AS release
LABEL ems.sso.put-setting=default
WORKDIR /app
COPY --from=build /src/bin ./bin
ENTRYPOINT ["./bin"]

Подробнее здесь:

Сбилдить проект можно с помощью команды docker build .

Запустить решение в контейнере можно с помощью команды docker run -dp 127.0.0.1:8080:8080 <id_образа>.

Развертывание

В процессе работы система EMS ищет docker сервис с лейблом "ems.sso.put-setting.model" и значением, которое совпадает с названием модели устройства или docker сервис с лейблом "ems.sso.put-setting.vendor" значение которого совпадает с названием производителя устройства. Eсли не находит (или устройство не было найдено по Ip), то ищет сервис с лейблом "ems.sso.put-setting", если не находит, то ищет сервис с лейблом "ems.sso".

Список лейблов с описанием:

Один на выбор:

  • LABEL ems.sso.put-setting.vendor
    • Для привязки модуля расширения к операции для конкретных вендоров устройств.
    • Для этого объявите этот лейбл с моделью устройства.
  • LABEL ems.sso.put-setting.model
    • Для привязки модуля расширения к операции для конкретных моделей устройств.
    • Для этого объявите этот лейбл с моделью устройства.
  • LABEL ems.sso.put-setting
    • Для привязки модуля расширения к операции для всех устройств.
    • Для этого объявите этот лейбл с любым значением.

Дополнительные:

  • LABEL ems.service.secure=default - активация защищенного соединения.
  • LABEL ems.service.port=8081 - порт, который прослушивает сервер.
  • LABEL ems.grpc-service.healthcheck=81 - порт для проверки доступности сервера.

Лейблы необходимо указывать в Dockerfile проекта.

Далее необходимо создать docker-compose.yaml файл конфигурации для развертывания сервиса через docker-compose.

Важно прописать extra_hosts следующим образом:

extra_hosts:
  - traefik:<IP master-cluster>

Важно определить в конфигурации работу в сети ems-network, пример рабочего файла конфигурации выглядит следующим образом:

version: "3.9"

networks:
  default:
    name: 'ems-network'

services:
  sso-center-put-ldap-handler-huawei:
    extra_hosts:
      - traefik:10.1.18.17
    build:
      context: .
      dockerfile: Dockerfile
    restart: unless-stopped
    logging:
      options:
        max-size: '50M'
        max-file: '5'
    ulimits:
      core:
        hard: 0
        soft: 0
    hostname: sso-center-put-ldap-handler-huawei
    environment:
      ServicePort: :8080
    deploy:
      resources:
        limits:
          cpus: "3"
          memory: 2000M
        reservations:
          cpus: "0.5"
          memory: 400M

Подробнее об этом здесь:

Для запуска модуля расширения в эксплуатацию необходимо поместить папку project на ВМ, где запущен EMS и выполнить команду docker-compose up --build -d из корня проекта.

Если приложения корректно запущено, то при выполнении команды docker ps | grep project-sso-center-put-ldap-handler-1 мы увидим вот такой результат:

CONTAINER ID   IMAGE                     COMMAND   CREATED         STATUS         PORTS     NAMES
059ed982d404   project-sso-center-put-ldap-handler   "./bin"   3 seconds ago   Up 2 seconds             project-sso-center-put-ldap-handler-1

Проверить работу сервиса можно через Postman, подробнее об этом описано здесь.

Для проверки в UI EMS необходимо:

  • Авторизоваться в EMS
  • Зайти во вкладку управление
  • Выбрать операцию "Определить EMS, как центр идентификации пользователей BMC"
  • Выполнить операцию на необходимом оборудовании

Подробнее можно прочитать в руководстве пользователя.