Развертывание модуля расширения
После реализации модуля расширения Windows необходимо позаботиться о том, чтобы его можно было развернуть в Docker.
Образ необходим для того, чтобы можно было запустить приложение в docker-compose на стенде.
После того, как приложение будет развернуто можно будет проверить работу сбора инвентарных данных ОЗУ в UI EMS.
Сборка в docker
Для сборки приложения в контейнере докер необходимо сформировать Docker-образ приложения.
Для этого, как правильно, необходимо создать Dockerfile, который содержит информацию о базовом образе окружения, в котором будет работать контейнер и его приложение.
Подробнее об этом описано здесь:
Важно для корректной работы модуля расширения прописать лейблы в Dockerfile.
В случае нашего модуля расширения, Dockerfile для проекта будет выглядеть следующим образом:
# Указание базового образа
FROM golang:1.22-bullseye AS build
### Установка компилятора protobuf
RUN apt-get update && \
apt install -y protobuf-compiler && \
apt clean
###
### Установка Golang Env-s
RUN go env -w GOSUMDB=off
RUN go env -w GO111MODULE=on
###
### Установка пакетов для генерация protobuf-файлов
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 . .
# Запуск Makefile для компиляции файлов protobuf и бинарного файла приложения
RUN make build
# Использование многоэтапной сборки для уменьшения размера образа
FROM scratch AS release
# Указание лейбла операции
LABEL ems.windows.memory=default
WORKDIR /app
# Копирование бинарного файла приложения, полученного на предыдущем этапе сборки
COPY --from=build /src/bin ./bin
ENTRYPOINT ["./bin"]
После формирования Dockerfile можно сформировать сам образ, для этого в терминале необходимо выполнить команду и дождаться завершения процесса сборки:
docker build --tag docker-windows-handler-memory .
После формирования образа в терминале можно ввести команду docker images и увидеть, что образ успешно сформирован.
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-windows-handler-memory latest 33f51e228eb4 17 seconds ago 17.4MB
Развертывание
В процессе работы система EMS ищет docker сервис с лейблом "ems.windows.memory.operation-system" и значением, которое совпадает с названием операционной системы устройства или которое совпадает с названием и версией операционной системы устройства (разделенных пробелом).
Eсли не находит, то ищет сервис с лейблом "ems.windows.memory", если не находит, то ищет сервис с лейблом "ems.windows".
Список лейблов с описанием:
Один на выбор:
- LABEL ems.windows.memory.operation-system
- Для привязки модуля расширения к операции для конкретных операционных систем устройств.
- Для этого объявите этот лейбл с названием и версией операционной системы устройства, разделенных пробелом, в качестве значения лейбла.
- LABEL ems.windows.memory
- Для привязки модуля расширения к операции для всех устройств.
- Для этого объявите этот лейбл с любым значением.
Дополнительные:
- LABEL ems.service.secure=default - активация защищенного соединения, в случае использования tls на gRPC сервере.
- LABEL ems.service.port=8081 - порт, который прослушивает сервер.
- LABEL ems.grpc-service.healthcheck=81 - порт для проверки доступности сервера.
Лейблы необходимо указывать в Dockerfile проекта.
Далее необходимо создать docker-compose.yaml файл конфигурации для развертывания сервиса через docker-compose.
Важно определить в конфигурации работу в сети ems-network, пример рабочего файла конфигурации выглядит следующим образом:
version: "3.9"
networks:
default:
name: 'ems-network'
services:
windows-handler-memory:
build:
context: .
dockerfile: Dockerfile
ports:
- 55001:8080
Подробнее об этом описано здесь:
Для запуска модуля расширения в эксплуатацию необходимо поместить папку project на ВМ, где запущен EMS и выполнить команду docker-compose up --build -d из корня проекта.
Если приложения корректно запущено, то при выполнении команды docker ps | grep project-windows-handler-memory-1 мы увидим примерно вот такой результат:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
69d9a7d31c20 project-windows-handler-memory "./bin" 37 seconds ago Up 3 seconds 0.0.0.0:55001->8080/tcp, :::55001->8080/tcp project-windows-handler-memory-1
Проверить работу сервиса можно через Postman, подробнее об этом описано здесь:
Для чистоты проверки в UI EMS необходимо остановить Docker-контейнер стандартного модуля расширения Windows, а именно контейнер ems-windows-manager-1.
Алгоритм проверки в UI EMS:
- Авторизоваться в EMS
- Завести оборудование с сетевым интерфейсом по WMI
- Зайти в проводник
- Найти заведенное устройство
- Открыть карточку устройства
- Перейти на вкладку
Оперативная память(примечание: данные собираются раз в 15 минут, поэтому возможно придётся подождать)
Подробнее можно прочитать в руководстве пользователя