MACVLAN über Portainer einrichten
In diesem Tutorial werden wir mittels der Portainer Weboberfläche manuell ein MACVLAN erstellen dass wir dann später beim Starten eines Containers verwenden können. Wie ihr Portainer für euren Docker Host einrichtet habe ich bereits in diesem Tutorial beschrieben:
Ich empfehle die Verwendung von MACVLAN grundsätzlich nur fortgeschrittenen Benutzern, denn für die Umsetzung solltet Ihr in jedem Fall mit den Basics zum Thema „IP-Netzwerke“ vertaut sein und euer eigenes Heimnetzwerk im Griff haben. Wenn euch Begriffe wie „DHCP“, „Gateway“ oder „Subnet“ nichts sagen, holt euch bitte entsprechende Unterstützung. Außerdem ist es hilfreich sich vorab einmal mit dem Networking unter Docker auseinander zu setzen. Infos dazu findet ihr z.B. hier:
docs.docker.com/network
Vorbereitungen für MACVLAN
Und schon geht es los. Für die Umsetzung des Tutorials benötigt ihr also Kenntnisse über euer eigenes Netzwerk, den Zugriff auf die Portainer Oberfläche und einen Konsolenzugriff (z.B. über SSH) auf euren Docker Host.
In meinem Beispiel arbeite ich auf einer Synology Disk Station und verwende als Testnetz ein 192.168.0.0/24-Netz. Das Gateway liegt klassich auf der .1 und es gibt keinen DHCP-Bereich. Mein Container soll später die IP-Adresse 192.168.0.100 bekommen.
Und schon geht es los. Das Erstellen des MACVLAN-Netzwerkes umfasst insgesamt zwei Schritte. Im ersten Schritt erstelle wir eine „Configuration“ mit den gewünschten Netzwerkinformationen. Im zweiten Schritt erstellen wir dann mit Hilfe der „Configuration“ die sogenannte „Creation“ die wir dann später auch mit dem ioBroker-Container verbinden.
Hinweis
Bis einschließlich der Docker-Paketversion 17 war es durch einen Bug auf der DS nicht möglich nach der Erstellung der „Configuration“ eine „Creation“ zu erstellen. Dafür konnte man aber die „Configuration“ direkt mit dem ioBroker-Container verbinden und hatte ein funktionierendes MACVLAN. Eine Erklärung dafür habe ich nicht gefunden, es lief so aber bei mir monatelang problemlos. Trotzdem würde ich empfehlen bei Installationen auf einer DS das Docker-Paket vorher auf die aktuellste Version zu bringen.
Öffnen wir also erst einmal die Portainer-Weboberfläche, melden uns an und wählen unseren Endpoint (Host). Anschließend starten wir die Erstellung der „Configuration“ mit einem Klick auf den Button „Add network“ unter „Networks“.
Im folgenden Dialog sind einige Felder zu füllen. Beginnen wir mit dem Namen. Ich werde dem MACVLAN nur eine einzelne IP-Adresse zuweisen. Daher bekommt mein MACVLAN auch einen eindeutigen Namen. Weil es sich um die „Configuration“ handelt, hänge ich noch ein „conf“ dran: „iob_public_conf“. Als Driver wählen wir natürlich „MACVLAN“.
Weiter geht es zum nächsten Feld: Parent network card. Hier müssen wir angeben auf welche physikalische Netzwerkkarte wir unser MACVLAN binden wollen. An dieser Stelle liegt dann auch die Beurteilung „für fortgeschrittenen Benutzer“ begründet. Denn mir ist bisher kein Weg bekannt diese Information der Weboberfläche der DS zu entlocken. Da hilft nur Kommandozeile raus und „ifconfig“ rein.
Auf meiner virtuellen Test-DS liegt die lokale IP-Adresse (192.168.0.32) auf dem Interface eth0. Ich verwende also dieses.
Weiter geht es mit dem Abschnitt „Network configuration“ Hier fülle ich die Informationen meinem Netzwerk entsprechend aus. Für „IP range“ verwende ich die gewünschte IP-Adresse mit einer Präfixlänge von „/32“. Dieses Netz enthält dann schließlich genau eine IP-Adresse.
Hinweis
Es ist natürlich auch möglich dem MACVLAN über die Präfixlänge einen ganzen Adressbereich zur Verfügung zu stellen, sodass man mehrere Container im MACVLAN mit Adressen versorgen kann.
So hat man z.B. bei 192.168.0.80/29 die Adressen .81 bis .86 für Container zur Verfügung.
Allerdings sollte man bei jedem Container genau überlegen ob dieser wirklich eine eigene IP-Adresse benötigt. In den meisten Fällen (Webster, Datenbanken usw.) ergibt das nämlich keinen Sinn.
Bei der Wahl des Netzes unterstützen kann euch dabei der z.B. Netzwerkrechner von Heise.
Achtung: Um IP-Konflikte in eurem Netzwerk zu vermeiden, stellt bitte sicher dass der gewählte Bereich NICHT von einem DHCP Server verwaltet wird/ vergeben werden kann!
Über den Button „Create the network“ schließe ich die Erstellung der „Configuration“ ab.
Die Erstellte „Configuration“ sollte nun in der Liste der Netzwerke auftauchen.
Fehlt noch die „Creation“. Um diese zu erstellen klicken wir erneut auf den Button „Add network“ und geben einen Netzwerknamen an. Dieses Mal verwenden wir nur „iob_public“ und wählen als „Driver“ erneut „MACVLAN“ aus. Anschließend klicken wir auf den Button „Creation“ und wählen im Dropdownmenü „Configuration“ unsere vorab bereits erstellte „Configuration“ aus.
Über den Button „Create the network“ schließen wir nun die Erstellung der „Creation“ ab. Das neue Netzwerk erscheint in der Liste und ist bereit zur Verwendung.
Umsetzung mit docker-compose aka „Portainer Stacks“…
Natürlich lässt sich die Erstellung des MACVLAN auch in docker-compose abbilden. In Portainer nennt sich das ganze „Stacks“. Wer noch nichts davon gehört hat kann erst einmal hier weiter lesen. Für alle Anderen habe ich hier das oben erläuterte Beispiel einmal als Definition für das Stack File. Der Name des Netzwerks lautet im Beispiel dabei „public“.
In dem entsprechenden Container wird das Ganze dann wie folgt, inklusive der IP-Adresse für den Container, referenziert.
Das solle es zu diesem Thema erst einmal gewesen sein. Bei Fragen und Anregungen nutzt gerne die Kommentare oder kontaktiert mich über einen der öffentlichen Kanäle wie z.B. über das ioBroker Forum oder den ioBroker Discord Channel.
Grundsätzlich biete ich keinen persönlichen Support per Messenger bzw. E-Mail an. Fragen sollten meiner Meinung nach immer öffentlich gestellt und beantwortet werden, damit auch andere User mit der selben Frage Zugriff auf die Antworten bekommen. 🙂 Falls ihr mal irgendwo keine Antwort bekommt, nutzt gerne das Kontaktformular und macht mich auf euren Kommentar, Post, Beitrag oder Thread aufmerksam! Danke.
Content retrieved from: https://smarthome.buanet.de/2020/09/macvlan-ueber-portainer-einrichten/.