Entwicklung von cesappd
Entwicklung
Um zu überprüfen, ob cesappd läuft, führen Sie systemctl status cesappd aus. Um cesappd zu starten,
führen Sie systemctl start cesappd aus.
Benötige Werkzeuge
- go 1.16
-
makefile
- per Paketmanager
-
Protocol Buffer Compiler
- per Paketmanager z. B. v3.6.1
apt install -y protobuf-compiler - per Binary-Download, z. B. 3.17
- per Paketmanager z. B. v3.6.1
Test
Hinweis: IP-Adresse für gRPC-Ansprache verwenden (z. B. 192.168.56.1), nicht jedoch localhost u. dgl.
Damit Clients, wie beispielsweise grpcox die Service-Discovery-Funktion des Server nutzen können, muss cesappd mit
dem Parameter --env development gestartet werden. Im Produktionsbetrieb werden die Endpunktinformation nicht nach außen
weitergegeben und müssen dem Client entsprechend bekannt sein.
Beispielaufrufe mit grpcurl:
# verfügbare Services auflisten
./grpcurl -plaintext localhost:50051 list
# Anfrage an den Logging-Service
./grpcurl -plaintext -d '{"doguName": "nginx", "lineCount": 10}' localhost:50051 logging.DoguLogMessages/GetByLineNumberUm eine Anfrage aus einem Dogu heraus durchführen zu können, muss eine zusätzliche Firewall-Regel für den vom Service verwendeten Port eingerichtet werden.
ufw allow from "$(docker network inspect "cesnet1" -f '{{(index .IPAM.Config 0).Subnet}}')" to any port 50051Sollte ein eigener Docker-Container verwendet werden, muss dieser mit dem cesnet1 Docker-Netzwerk verbunden werden.
docker run -it --net cesnet1 alpine bashAusführen von bats Tests
Es wurde ein make target angelegt mit dem alle bats Tests ausgeführt werden können:
make unit-test-shell
Generierung von gRPC-Code
-
zusätzliche gRPC-Tools installieren
make install-grpc-tools
-
gRPC-Code erzeugen
make generate-grpc
Aus neuer Protobuf-Datei Code erzeugen
-
Package für neue Funktionalität festlegen, z. B.
newpackage- Package wird u. a. für die strukturierte Ablage von generiertem Code verwendet
- Der Modul-Pfad muss enthalten sein, damit die Imports richtig generiert werden.
- neue Datei in
grpc-protobuf/anlegen, z. B.grpc-protobuf/newfunction.proto
syntax = "proto3";
package newpackage;
option go_package = "github.com/cloudogu/cesappd/generated/newpackage";-
make generate-grpcaufrufen*.pb*.go-Dateien werden in Verzeichnis/Packagegenerated/newpackageangelegt- eigene Funktionalität müssen hingegen in Verzeichnis/Package
newpackageabgelegt werden
Lokale Ausführung
Der Dienst cesappd liest Log-Dateien aus dem fest hinterlegten Verzeichnis /var/log/docker. Es muss sichergestellt
werden, dass dieses Verzeichnis existiert und die gewünschten Log-Dateien darin enthalten sind. Abhängig vom Ausführungskontext
müssen ggf. noch die Berechtigungen angepasst werden.
Ausführung im CES Kontext
- Bauen des cesappd mit
make(gpg Key muss hierfür konfiguriert sein). - Aus
cesappd/targetVerzeichnis die Dateicesappdin das root-Verzeichnis des lokalem CES kopieren. - Innerhalb der Vagrant-Maschnine mit Hilfe von
dpkg -i cesappd.debinstallieren (hierbei wird derpostinstSkript ausgeführt).
Zum testen der
prermundpostrmSkripte kann cesappd mit Hilfe des Befehlsdpkg -r cesappdgelöscht werden. Die Skripte werden dann ausgeführt werden.
Kommunikation mit etcd in lokalem CES
Um direkt mit dem etcd aus einem lokalen CES kommunizieren zu können, muss eine zusätzliche Firewall-Regel im CES
eingerichtet werden.
ufw allow from 192.168.56.1 to any port 4001Dies erlaubt die Kommunikation von der Entwicklungsumgebung mit dem etcd. Außerdem muss eine minimale
cesapp-Konfiguration erstellt werden, die die richtige Adresse zum etcd enthält und unter
/etc/cesapp/configuration.json abgelegt ist.
{
"registry": {
"type": "etcd",
"endpoints": [
"http://192.168.56.1:4001"
]
}
}