Info-Manager-Proxy
Der Info-Manager-Proxy nimmt HTTP Requests vom Antragsraum-Server entgegen, mappt diese auf gRPC und leitet sie an den Info-Manager weiter. Zum Protokollmapping von HTTP auf gRPC wird die Bibliothek gRPC-Gateway verwendet. Dadurch können die HTTP-Endpunkte inkl. des Mappings größtenteils automatisch aus proto-Dateien generiert werden.
Requests werden an die unter config.grpc.url eingetragene URL (bzw. localhost:50051, wenn config.grpc.mock = true) weitergeleitet.
Getting Started
Dependencies installieren
go mod download
go install \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \
google.golang.org/protobuf/cmd/protoc-gen-go \
google.golang.org/grpc/cmd/protoc-gen-go-grpc \
github.com/sirupsen/logrus \
go.elastic.co/ecslogrus
Buf installieren
https://github.com/bufbuild/buf?tab=readme-ov-file
Proto Dateien anpassen
Die *.proto Dateien, die die verwendeten GRPC Apis des Proxys definieren müssen aus den entsprechenden Projekten in das Verzeichnis api/proto kopiert werden.
Die Projekte sind:
Damit die Code generierung funktioniert müssen die proto-Dateien aktuell noch angepasst werden.
Dazu muss in jede Datei die Zeile option go_package = "de.ozgcloud.info";
hinzugefügt werden, damit
die erzeugten Quellcode-Dateien im selben go package liegen.
Generierung konfigurieren
Die Generierung des Gateways kann mit den Dateien
- api/gateway-config.yml - go Code für den Gateway
- api/openapi-config.yml - für die Erzeugung der swagger json Dateien
konfiguriert werden.
Protobuf-Code generieren
buf generate
Erzeugt dann den Code für das Gateway und auch die Datei gen/openapiv2/infomanager.swagger.json. Diese Datei kann dann in anderen Projekten verwendet werden um die nötige DTO Klassen zu erzeugen.
Anwendung starten
ACTIVE_PROFILE=local go run cmd/info-manager-proxy/main.go
Config
config.yml is the default config for deployment
config-local.yml is the config file for local development setting ACTIVE_PROFILE=local will load the config-local.yml
server:
port: Port des HTTP Servers (int)
grpc:
mock: lokalen gRPC Server mocken (bool)
url: URL des Ziel-gRPC-Servers im host:port Format (string)
logging:
level: "ERROR" | "WARN" | "INFO" | "DEBUG"
Releasing
Diese Schritte ausführen:
- Master-Branch auschecken
- Master-Branch updaten
- Release-Branch auschecken
- Release-Branch updaten
- Master in den Release-Branch mergen - noch nicht pushen!
- Die Version von 'var version' in cmd/info-mamager-proxy/main.go "vX.X.X-beta.x" auf "vX.X.X" ändern
- Commit erstellen: "release version X.X.X"
- Release Branch pushen
- Tag "X.X.X" erstellen: git tag "X.X.X"
- tag pushen: git push origin X.X.X
- Master auschecken
- Release-Branch in den Master mergen nicht pushen!
- Die Version von 'var version' in cmd/info-manager-proxy/main.go "vX.X.X" auf "vX.X.X-beta.x" ändern
- Master Branch pushen