Traefik vs Nginx

  • Reverse Proxy? 38

    1. Traefik (8) 21%
    2. Nginx (24) 63%
    3. HAProxy (6) 16%

    Nutze seit Jahren Nginx, sowohl als Webserver, als auch als Reverse Proxy. Da ich gerade mal wieder mit Docker spiele und auf dem Host eigentlich nur einen Reverse Proxy benötige, hab ich mich mal nach reinen Proxies umgeguckt.


    Wüsste gerne, wer hier was nutzt, bzw. auch warum.


    Eignet sich Traefik für den produktiven Einsatz, oder eher Dev?

  • traefik eignet sich perfekt als Reverseproxy für docker-compose. nginx hat definitiv auch Stärken als Reverse Proxy, vor allem in kniffeligen Fällen.


    HAProxy setzen wir in der Firma ein (teilweise auch zusammen mit nginx, das muss sich ja nicht ausschließen), das ist für manche Anwendungsfälle die einzig mögliche Lösung, da das haproxy Protokoll von den Serveranwendungen benötigt werden.


    Mir fehlt in der Liste noch Caddy, das eine leichtgewichtige Alternative ist. Für manche Anwendungen viel einfacher.


    Fazit: ich suche mir je nach Anwendungsfall die Software raus, die jeweils am Besten passt. Ich fahre mehrgleisig. Das erspart mir jede Menge Ärger.

  • Ich nutze nginx, um ca 10 LXD Container zur Außenwelt verfügbar zu machen. Funktioniert absolut problemlos und zuverlässig. Habe nginx eigentlich nur genommen, weil man das Tool schon ewig kennt und ich keinen Bedarf hatte, etwas Neues ausprobieren.. ;)


    Edit: Habe mir gerade mal die Doku von Traefik angeschaut, ist mir eindeutig zu kompliziert. Für nginx habe ich einen Config-Generator, da brauche ich nur zwei Zeilen schreiben.. https://github.com/janxb/Conta…pers/tree/master/webproxy

  • Danke für den Input! Ja, ich denke Traefik hat sicherlich seine Stärken, aber ist als einfacher Proxy für 3,4 Apps wohl ein bissel too much.


    Hab bis jetzt eigentlich noch nie mehr als Proxy Pass und nen paar redirects benötigt. Werde dann wohl mal bei nginx bleiben.


    janxb Nettes Script. Generiere die configs selbst über Bash, aber mit deutlich weniger Auswahl - haha. Einfach weil ich wenig mit Containern arbeite 😊

  • Hi,

    also ich nutze traefik für meine docker container welche eine Webgui darstellen wollen.

    Das tolle daran ist einfach, dass traefik


    1. sich selbst konfiguriert über die labels des zu erreichenden containers

    2. für diese URLs dann sogar vollautomatisch die letsencrypt Certs besorgt und aktualisiert.


    Ich muss also nichts anderes tun als für meinen neuen container die URL zu setzen unter der er erreichbar sein soll, das wars... starten und das Webinterface ist erreichbar.

  • Priviet geekmonkey !


    Ich bin von Docker umgestiegen, wenn ich dass so formulieren darf. Ich habe aufgrund einer etwas komplexeren Infrastruktur mich für Kubernetes entscheiden. Somit kann meine Infrastruktur wachsen und ich habe den benannten Proxy mit an Bord. Das ist, finde ich sehr vorteilhaft. Kubernetes ist nicht sehr viel komplexer als ein einzelner Docker. Es bietet halt einige sehr wesentliche Vorteile. Damit das ganze dann in der Installation komfortabler wird, nutze ich kubespray. Dort kann ich alle nodes und die für mich wichtigen Funktionen quasi auswählen. Als Management-Console verwende ich dann rancher mit dem ich den bestehend Cluster mit allen Configuationen verwalten kann. rancher bietet auch ein eigenes Deployment auch zu anderen Providern - sorry NetCup, ich liebe Euch - an. Ceph habe ich als Storage Cluster für mich gewählt.


    Gute Nacht!

  • @2n55YMYSwMYGxc


    Wenn dir die Installation von K8s Schwierigkeiten bereitet, schau dir auf jeden Fall mal Rancher (v2) [1] an. Das ist sicherlich die einfachste Variante einen (produktiven) K8s zu installieren und vor allem auch auf Dauer zu betreiben, weil es ein komplettes Lifecycle und Patchmanagement zur Verfügung stellt. Zudem bietet es eine Management-Weboberfläche für den K8s Cluster an, welche vor allem zu Beginn recht hilfreich ist.


    Die Installation erfolgt folgendermaßen:

    1. Installation von Rancher v2 (auf einem zentralen MGT Node) über Docker (Ein schlichtes "docker run" mit Volume Mounts)
    2. Konfiguration (URL, User, ...) von Rancher v2 über die Weboberfläche
    3. Anlegen eines Clusters in Rancher (dieser gibt einem dann einen Copy&Paste Befehl, den man auf allen k8s ausführen muss).
    4. Fertig


    Rancher kann auch direkt bei bestimmten Cloud-Providern VMs über die API anlegen, so dass man hier gar nicht erst die VMs selbst vorbereiten muss. Hier bei Netcup installierst du die VMs halt schnell mal selbst (inkl. Docker) und wählst in Rancher die "Custom Provisionierung". Dies nur noch kurz als Info.


    Etwas schade finde ich nur, dass Rancher v1 damit abgekündigt wurde. Das war eine sehr schlichte Docker-Orchestrierung, die auch für kleinere Umgebung gut geeignet ist/war. K8s selbst ist halt für wirkliche große Umgebungen gedacht (kommt von Google und ist genau für diesen Scale auch ausgelegt) und für viele Zwecke einfach nur ein viel zu großer Overhead. Gerade wenn man es selbst betreiben möchte/muss.


    [1] https://rancher.com/docs/rancher/v2.x/en/

  • Guten Morgen ohne Sorgen,


    Danke mal an Paul. Dem ist nichts hinzu zu fügen. Ich betreibe mit Rancher drei Cluster, die untereinander in Beziehung stehen.


    Für das "Üben", also die Entwicklung Deiner Artefsakte in einem K8s Cluster kannst Du minikube verwenden. Eine sehr gute Anleitung findeste Du hier für Ubuntu 18.04 LTS

    https://computingforgeeks.com/…minikube-on-ubuntu-18-04/


    Ich habe auch kubespray evaluiert. Das funktioniert auch, doch ist es etwas komplexer und damit aufwendiger zu verstehen.


    Wichtig ist ansible gut zu kennen, da es Dich bei der Installation und der Pflege Deines Clusters unterstützen kann. Gerade, wenn es darum geht, die Nodes einheitlich zu installieren. Für die Nodes (Master + Worker) des Clusters an sich habe ich NetCup VPS verwendet. Die sind relativ preisgünstig und brauchst Du einige Nodes nicht und kannst Du auf die Verfügbarkeit verzichten, dann sind diese ausreichend.


    Für meinen Anwendung brauche ich einen hochverfügbaren Storage Cluster, den ich mit Ceph implementiert haben. Dieser rennt jetzt seit 10 Tagen stabil und auch die Verfügbarkeit rennt ohne Probleme durch. Dieser wird dann als Persistent Storage in den Kubernetes Cluster eingebunden. Irgendwohin willst Du auch Deine Daten schreiben und diese dann bei einer Veränderung im Kubernetes Cluster auch wiederfinden. Und die Daten sollen eben auch nicht verloren gehen. Da ist der NetCup Storage Server eine gute Wahl. Ich habe davon drei, sodass es eine gute Auslastung ist. Verbunden ist der Storage und K8s Cluster durch ein VLAN von NetCup. Das rennt soweit auch recht gut.


    Das notwendig Netzwerk kannst Du mit Tinc VPN bauen. Es wird auf das externe Netwerk-Adapter des NetCup Servers gelegt. Dieses Netzwerk dient dann dazu, den K8s Cluster zu administrieren, auch der Datenverkehr kann darüber rennen.

  • Ich werde bei Gelegeheit einen Teil der Dokumentationen - wenn diese fertig ist - hier als Anleitung veröffentlichen. Es gibt viene Anleitung im Internet, allerdings eben mit unterschiedlichen Inhalten und damit etwas zerstreut. Vielleicht steigt ja NetCup dann noch ins Cloud Cluster Kubernetes Business ein.

  • Hier noch einige Tipps zur Abkürzung zum Thema Containerization


    Kubernetes Kurssus https://www.udemy.com/learn-kubernetes/learn/v4/overview

    Docker Kursus https://www.udemy.com/learn-docker/learn/v4/overview

    Ansible Kursus https://www.udemy.com/learn-ansible/learn/v4/overview


    Diese Kurse und den Trainer kann ich wärmstens ans Herz legen. Man kann natürlich auch den harten und unbequemen Weg über die Tutorials in verschiedener Qualität nehmen.