Hauptmenü

KIX 18: Proxy ohne Funktion?

Begonnen von verrac, 02.12.2020 17:59:56

⏪ vorheriges - nächstes ⏩

verrac

Hallo zusammen,
ich habe ein Testsystem unter Debian 10.4 mit KIX18start on-premise eingerichet. Das Backend ist auch unter Port 20000 erreichbar.Aber wenn ich mir die die Proxy-Konfig anschaue sollte es auch unter Port 80 erreichbar sein. Der Proxy-Container scheint zu laufen aber es klappt nicht.Die Installationsanleitung ist dort leider auch dürftig. Hat vielleicht jemand einen Tipp für mich, was ich ggf. falsch mache?
Grüße, verrac

René Böhm

Hallo,


die ssl.conf enthält die Konfigurationen der Ports, auf denen der nginx-Proxy "lauschen" soll. Das ist dann aber nur "Container-intern" bzw. "Stack-intern". Genau diese Ports werden auf die im environment-File angegebenen lokalen Ports gemappt, damit der Stack mit der Aussenwelt kommunizieren kann. Ohne das Mapping auf lokale Ports kann ein Container nicht mit ausserhalb kommunizieren. Der nginx-Proxy ist aus Gründen der individuellen Absicherung und Integration in die jeweils vorhandene Infrastruktur, den eigentlichen Applikationsservices vorgeschaltet.


Viele Grüße
René

verrac

Hallo,
ich habe also quasi genau umgekehrt gedacht. Innerhalb des Containers lauscht KIX also auf den Ports 80,443,8080 usw. und diese werden durch den Proxy nach extern auf 20000, 20001 usw. gemappt.
root@kix18:/srv/kix-on-premise/linux# docker container port 79
443/tcp -> 0.0.0.0:20444
80/tcp -> 0.0.0.0:20001
8080/tcp -> 0.0.0.0:20000
8443/tcp -> 0.0.0.0:20443
9080/tcp -> 0.0.0.0:20002
9443/tcp -> 0.0.0.0:20445

Gibt es die Möglichkeit nicht nur den Port sondern auch die IP vorzugeben? Oder muss ich auf dem Host einen weiteren Proxy einrichten, da auf dem Host bereits Apache2 auf Port 80 läuft.

Bsp.:
root@kix18:/srv/kix-on-premise/linux# docker container port 79
443/tcp -> 10.0.20.80:20444
80/tcp -> 10.0.20.80:20001
8080/tcp -> 10.0.20.80:20000
8443/tcp -> 10.0.20.80:20443
9080/tcp -> 10.0.20.80:20002
9443/tcp -> 10.0.20.80:20445

Grüße, verrac

verrac

Hallo nochmal,
hab es selber gefunden.
Einfach die environment-Datei wie folgt editieren:

# the port on the docker host system where the backend service is listening
BACKEND_PORT=10.0.20.80:20000
BACKEND_PORT_SSL=10.0.20.80:20443
FRONTEND_PORT=10.0.20.80:20001
FRONTEND_PORT_SSL=10.0.20.80:20444


Grüße, verrac

René Böhm

Die IPs werden nicht benötigt. Einfach nur den Port hinschreiben. Der wird dann auf lokalen Host (nicht localhost ;)) gemappt. Oder hat der Host mehrere Service-IPs ?


Viele Grüße
René

verrac

#5
Doch der Server hat mehrere IPs und auf manchen ist Port 80 bereits besetzt.
apache2   15246 www-data    3u  IPv4  14882      0t0  TCP 10.0.20.230:http (LISTEN)
apache2   15246 www-data    4u  IPv4  14884      0t0  TCP 10.0.20.232:http (LISTEN)
apache2   15246 www-data    5u  IPv4  14886      0t0  TCP 10.0.20.233:http (LISTEN)
docker-pr 21140     root    4u  IPv4 143205      0t0  TCP 10.0.20.231:9443 (LISTEN)
docker-pr 21153     root    4u  IPv4 143245      0t0  TCP 10.0.20.231:9080 (LISTEN)
docker-pr 21166     root    4u  IPv4 143283      0t0  TCP 10.0.20.231:8443 (LISTEN)
docker-pr 21179     root    4u  IPv4 142220      0t0  TCP 10.0.20.231:http-alt (LISTEN)
docker-pr 21194     root    4u  IPv4 142258      0t0  TCP 10.0.20.231:https (LISTEN)
docker-pr 21207     root    4u  IPv4 142296      0t0  TCP 10.0.20.231:http (LISTEN)

Sebastian

Evtl. gehört mein Anliegen in diesen Thread:

Ich wollte mich gerade in den Backend-Container einklinken und erhielt folgende Meldungen:


root@docker-playground:/opt/kix18-capeit/linux# docker-compose exec kix_backend_1 /bin/bash
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.proxy.ports is invalid: Port ranges don't match in length
services.proxy.ports is invalid: Port ranges don't match in length
services.proxy.ports is invalid: Port ranges don't match in length
services.proxy.ports is invalid: Port ranges don't match in length
services.proxy.ports is invalid: Port ranges don't match in length
services.proxy.ports is invalid: Port ranges don't match in length

René Böhm

Hi Sebastian,
sorry, deine Nachricht ist mir leider durch die Lappen gegangen. Da die Ports in der environment-File gepflegt werden und darüber, gibt es die shell-Scripte (start.sh, stop.sh, ...). Diese bereiten die Informationen aus der File entsprechend auf und "versorgen" damit docker-compose, damit es die korrekten Umgebungsvariablen erhält.
In deinem Falle nutzt ein direktes "exec" von docker-compose. Damit versucht compose etwas mit der yml-File anzustellen, kommt aber nicht weiter, da die relevanten Umgebungsvariablen nicht vorhanden sind. Du kannst aber problemlos ein "docker exec" auf den Container machen, dann treten diese Fehler nicht auf.
Aber eine andere Frage: warum musst du im Container etwas machen ?
Viele GrüßeRené

Sebastian

Ist zu lange her, keine Ahnung ^^