Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • release
  • 1.1.0
  • 1.0.0
4 results

info-manager-proxy

  • Clone with SSH
  • Clone with HTTPS
  • Bastian Heppener's avatar
    Bastian Heppener authored
    ozg-7493 add send failure message
    
    See merge request !2
    08d918b3
    History

    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-Datei

    config-local.yml is the config file for local development setting ACTIVE_PROFILE=local will load the config-local.yml

    Config-Datei

    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