Netguard PG Backend - это сервис, обеспечивающий хранение и управление ресурсами сетевой безопасности. Он реализует логику sgroups-k8s-netguard.
- Хранение ресурсов сетевой безопасности в базах данных PostgreSQL и в памяти
- Поддержка различных типов ресурсов:
- Сервисы (Services)
- Группы адресов (Address Groups)
- Привязки групп адресов (Address Group Bindings)
- Сопоставления портов групп адресов (Address Group Port Mappings)
- Правила взаимодействия сервисов (RuleS2S)
- Domain: Содержит основную бизнес-логику и модели
models
: Доменные сущностиports
: Интерфейсы для репозиториев и сервисов
- Application: Содержит сервисы приложения, которые оркестрируют доменную логику
services
: Реализации сервисов
- Infrastructure: Содержит реализации интерфейсов, определенных в доменном слое
repositories
: Реализации репозиториев (PostgreSQL, in-memory)
- Cmd: Содержит точки входа в приложение
server
: Основное серверное приложение
- Go 1.23 или выше
- PostgreSQL (опционально, для постоянного хранения)
-
Клонировать репозиторий:
git clone https://github.com/yourusername/netguard-pg-backend.git cd netguard-pg-backend
-
Собрать приложение:
go build -o netguard-server ./cmd/server
Запуск с базой данных в памяти:
./netguard-server --memory
Запуск с базой данных PostgreSQL:
./netguard-server --pg-uri "postgres://user:password@localhost:5432/netguard"
Проект включает поддержку Docker для простого развертывания.
-
Сборка Docker-образа:
docker build -t netguard-pg-backend .
-
Запуск контейнера с базой данных в памяти:
docker run -p 8080:8080 -p 9090:9090 netguard-pg-backend
-
Запуск контейнера с базой данных PostgreSQL:
docker run -p 8080:8080 -p 9090:9090 netguard-pg-backend ./netguard-server --pg-uri="postgres://user:password@postgres-host:5432/netguard" --grpc-addr=:9090 --http-addr=:8080
-
Запуск сервиса с базой данных в памяти:
docker-compose up
-
Для использования PostgreSQL раскомментируйте сервис PostgreSQL в docker-compose.yml и выполните:
docker-compose up
-
Доступ к сервису:
- Swagger UI: http://localhost:8080/swagger/
- gRPC: localhost:9090
Предоставляется тестовый скрипт для проверки настройки Docker:
./test-docker.sh
Этот скрипт собирает Docker-образ, запускает контейнер, проверяет доступность сервиса, а затем останавливает контейнер.
Netguard PG Backend предоставляет RESTful API, созданный с использованием gRPC с gRPC-Gateway. API документирован с использованием Swagger.
Swagger UI доступен по адресу: http://localhost:8080/swagger/
GET /v1/services
- Получить список сервисовGET /v1/address-groups
- Получить список групп адресовGET /v1/address-group-bindings
- Получить список привязок групп адресовGET /v1/address-group-port-mappings
- Получить список сопоставлений портов групп адресовGET /v1/rule-s2s
- Получить список правил взаимодействия сервисовGET /v1/sync/status
- Получить статус последней синхронизацииPOST /v1/sync
- Синхронизировать данные
netguard-pg-backend/
├── cmd/
│ └── server/
│ └── main.go
├── internal/
│ ├── api/
│ │ └── netguard/
│ │ └── service.go
│ ├── app/
│ │ └── server/
│ │ └── setup-server.go
│ ├── application/
│ │ └── services/
│ │ └── service.go
│ ├── domain/
│ │ ├── models/
│ │ │ └── resources.go
│ │ └── ports/
│ │ ├── repositories.go
│ │ └── scopes.go
│ ├── infrastructure/
│ │ └── repositories/
│ │ ├── db.go
│ │ ├── mem/
│ │ │ ├── db.go
│ │ │ └── registry.go
│ │ └── pg/
│ │ └── models.go
│ └── patterns/
│ └── subject.go
├── protos/
│ ├── api/
│ │ ├── common/
│ │ │ └── ip-transport.proto
│ │ └── netguard/
│ │ └── api.proto
│ ├── 3d-party/
│ │ └── google/
│ │ ├── api/
│ │ │ ├── annotations.proto
│ │ │ ├── http.proto
│ │ │ └── ...
│ │ └── rpc/
│ │ ├── code.proto
│ │ ├── status.proto
│ │ └── ...
│ └── Makefile
├── swagger-ui/
│ └── index.html
├── Dockerfile
├── docker-compose.yml
├── copy-swagger.sh
└── go.mod