{"id":2914,"date":"2021-08-30T07:00:00","date_gmt":"2021-08-30T05:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=2914"},"modified":"2021-08-28T16:55:17","modified_gmt":"2021-08-28T14:55:17","slug":"kommentar-linux-container-spreu-und-weizen","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/kommentar-linux-container-spreu-und-weizen\/","title":{"rendered":"Kommentar: Linux-Container &#8212; Spreu und Weizen"},"content":{"rendered":"\n<p>In diesem Beitrag m\u00f6chte ich meine pers\u00f6nliche Meinung zu und \u00fcber Linux-Container mit euch teilen. Ich freue mich, wenn sich daraus eine Diskussion entwickelt, in der ihr eure Erfahrungen und Gedanken zum Thema einbringt.<\/p>\n\n\n\n<p>Mir geht es dabei ausschlie\u00dflich um Linux-Container, welche ich von \u00e4hnlichen Konzepten wie z.B. den LDOMs und Kernel-Zones unter Solaris, etc. bewusst abgrenzen m\u00f6chte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was habe ich mit Containern zu tun?<\/h2>\n\n\n\n<p>Nun, Container haben in vielen Branchen Fu\u00df gefasst, in denen IT\/EDV eine Rolle spielt und werden voraussichtlich nicht mehr verschwinden. Ich selbst bin als Sysadmin und Nerd sowohl aus privatem Interesse, als auch beruflich mit dem Thema in Ber\u00fchrung gekommen.<\/p>\n\n\n\n<p>Mit den Konzepten und der Architektur bin ich vertraut. Mit dem Wochenendprojekt &#8222;<a href=\"https:\/\/www.my-it-brain.de\/wordpress\/kanboard-im-container\/\" data-type=\"post\" data-id=\"2685\">Kanboard im Container&#8230;<\/a>&#8220; verf\u00fcge ich \u00fcber wenig praktische Erfahrung.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie lautet das Versprechen der Container-Technologie?<\/h2>\n\n\n\n<p>Alles wird agiler, schneller, effizienter, sicherer UND einfacher. Das \u00dcbliche halt.<\/p>\n\n\n\n<p>Im Wesentlichen bieten Container die Chance, dass Anwendungen mit all ihren Abh\u00e4ngigkeiten ausgeliefert werden k\u00f6nnen.<\/p>\n\n\n\n<p>Damit k\u00f6nnte das Ende der Zeit eingel\u00e4utet werden, wo einer Anwendung eine Installationsanleitung mit dem Kapitel &#8222;Systemvoraussetzungen&#8220; beiliegt, mit welcher der Administrator sich auf die Suche nach den ben\u00f6tigten Bibliotheken und Paketen macht, welche in seiner konkreten Umgebung zu installieren und zu konfigurieren sind, bevor die eigentliche Anwendung installiert werden kann.<\/p>\n\n\n\n<p>In der sch\u00f6nen neuen Welt verpacken Entwickler alles, was ihre Anwendung braucht, in einen Container, welchen sie anschlie\u00dfend in den Versand geben (deployen) k\u00f6nnen. Auf dem Zielsystem wird nur noch eine kompatible Container-Engine ben\u00f6tigt und die Anwendung l\u00e4uft.<\/p>\n\n\n\n<p>Dabei sind Szenarien realistisch, in denen Anwendungen z.B. in einem Ubuntu-Userland auf einem RHEL-Kern laufen und umgekehrt.<\/p>\n\n\n\n<p>Auch Update-Szenarien k\u00f6nnen deutlich vereinfacht werden. Ein neues Release kommt in Form eines neuen Container-Images, welches instanziiert wird. Gibt es Probleme, bringt man die laufende Instanz um und startet eine Instanz vom vorherigen Container-Image. Vorausgesetzt die Container beinhalten keine persistent zu speichernden Daten (was sie laut Konzept nicht sollen), kann das wirklich gut funktionieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Und wie f\u00fchlt sich das bis jetzt in der Praxis an?<\/h2>\n\n\n\n<p>Die kurze Antwort auf diese Frage lautet: &#8222;Sehr unterschiedlich. Das Spektrum reicht von gut bis durchwachsen.&#8220;<\/p>\n\n\n\n<p>Ich m\u00f6chte noch einmal erw\u00e4hnen, dass ich Systemadministrator und kein Anwendungsentwickler bin. Ich entwickle also keine Software, welche dann mit CI\/CD-Pipelines verarbeitet und ausgerollt wird. Meine Aufgabe ist eher die Bereitstellung und der Betrieb von Umgebungen, in denen Container ausgef\u00fchrt werden k\u00f6nnen. Zu m\u00f6glichen Kunden\/Nutzern z\u00e4hlen dabei Teams, die eigene Anwendungen entwickeln, aber auch Teams, welche Anwendungen in Form von Container-Repositorien bzw. -Images geliefert bekommen und diese dann betreiben m\u00fcssen.<\/p>\n\n\n\n<p>Insbesondere in dem Bereich, wo uns die Aufgabe des Betriebs von extern erstellten Anwendungen obliegt, machen wir gerade ein paar Erfahrungen, die ich hier gerne aus meiner pers\u00f6nlichen Sicht teilen m\u00f6chte.<\/p>\n\n\n\n<p>Beginnen m\u00f6chte ich mit der insgesamt positiven Erfahrung, die ich mit meinem Wochenendprojekt &#8222;<a href=\"https:\/\/www.my-it-brain.de\/wordpress\/kanboard-im-container\/\" data-type=\"post\" data-id=\"2685\">Kanboard im Container&#8230;<\/a>&#8220; gemacht habe. Hier laufen eine Anwendung und eine Datenbank jeweils als Container in einem Pod auf einem RHEL 8 Host mit einer Rootless-Podman-Installation und einem <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/reverse-proxy-fuer-kanboard-im-container\/\" data-type=\"post\" data-id=\"2723\">Reverse-Proxy<\/a>. Die Dokumentation von Red Hat und dem Kanboard-Projekt sind hinreichend genau und verst\u00e4ndlich, um diese Anwendung ohne gro\u00dfe M\u00fche zu betreiben. Ohne gro\u00dfe Verrenkungen kann ich unterschiedliche Versionen aus dem Postgres-Container-Repo ausprobieren und verschiedene Releases der Anwendungen testen.<\/p>\n\n\n\n<p>Leider hat man nicht immer soviel Gl\u00fcck. Ein anderes Software-Projekt, dessen Namen ich hier bewusst nicht nenne, liefert eine kleine Sammlung von Bash-Skripten aus, welche in einer bestimmten Reihenfolge auszuf\u00fchren sind, um zur Laufzeit eine Docker-Compose-Datei zu generieren, auf deren Basis dann entsprechende Container gestartet werden. Wenn nun ein Update ansteht, ist der ganze Prozess mit der Ausf\u00fchrung der Bash-Skripte in wohldefinierter Reihenfolge erneut durchzuturnen. Das ganze l\u00e4sst sich ausschlie\u00dflich auf einem Host mit einer Docker-Installation ausf\u00fchren und ist zu Podman inkompatibel. Ob es auch mit einer Rootless-Docker-Installtion l\u00e4uft, ist noch zu testen. Ein Deployment auf einem Kubernetes-Cluster ist undenkbar. Das Projekt stellt keinerlei Informationen dazu bereit.<\/p>\n\n\n\n<p>\u00dcbrigens handelt es sich bei diesem Projekt nicht um ein 1-2 Personen FOSS-Projekt, sondern um eines, hinter dem ein Unternehmen steht, welches kostenpflichtige Support-Vertr\u00e4ge f\u00fcr seine Anwendung vertreibt.<\/p>\n\n\n\n<p>Es bleibt also wieder mal nur, die eigene Umgebung der Anwendung anzupassen, die sich andernfalls nur mit extrem hohen Aufwand integrieren l\u00e4sst. Das kennen wir schon aus dem Zeitalter vor der Container-Erscheinung. Es ist in diesem Fall halt etwas anders, aber nicht besser.<\/p>\n\n\n\n<p>In einem anderen Fall blieb das Erfolgserlebnis aus \u00e4hnlichen Gr\u00fcnden aus. Der Container mit der gew\u00fcnschten Anwendung lies sich nicht in die Zielumgebung integrieren, da ein f\u00fcr die Kommunikation ben\u00f6tigtes Software-Modul fehlt. Erste Aussage des Herstellers: &#8222;Da m\u00fcssen sie noch Paket XY im Container nachinstallieren.&#8220;<\/p>\n\n\n\n<p>Halt Stopp! Sollten mit dem Container nicht alle notwendigen Abh\u00e4ngigkeiten mit ausgeliefert werden? Jetzt sollen wir Software im Container nachinstallieren, was zur Folge hat, dass wir damit ein neues Image erzeugen, welches wir zuk\u00fcnftig wieder selbst weiterpflegen d\u00fcrfen? So habe ich mir die sch\u00f6ne neue Welt aber nicht vorgestellt. Den Aufwand mit den eigenen Anpassungen haben wir ohne Container auch. Auch hier wird es erstmal nur anders, aber nicht besser.<\/p>\n\n\n\n<p>Allerdings m\u00f6chte ich zur Ehrenrettung des Anbieters hinzuf\u00fcgen, dass er das fehlende Modul in sein Image einbauen und zuk\u00fcnftig selbst pflegen und ausliefern m\u00f6chte und uns hier lediglich um Unterst\u00fctzung beim Test bittet. Dies ist f\u00fcr mich im Sinne von <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/freie-software-und-open-source\/\" data-type=\"post\" data-id=\"2661\">FOSS<\/a> und vollkommen akzeptabel. Wir wissen allerdings noch nicht, ob der Anbieter sein Versprechen h\u00e4lt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wo ist nun das Dilemma?<\/h2>\n\n\n\n<p>Ich pers\u00f6nlich habe eine Pr\u00e4ferenz, wie Betriebsplattformen f\u00fcr Container aussehen sollten. So sehe ich die Nutzung von Rootless-Podman f\u00fcr einfache Anwendungen und Kubernetes bzw. Kubernetes-kompatible L\u00f6sungen f\u00fcr die Orchestrierung als sinnvoll an.<\/p>\n\n\n\n<p>Leider kann ich mir nicht immer aussuchen, welche Software es zu betreiben gilt. Allzu oft muss mit dem gearbeitet werden, was bestellt bzw. geliefert wurde. Und hier sind die Probleme fast so zahlreich wie au\u00dferhalb der Container-Welt. Die einen laufen nur mit Docker, aber nicht im Rootless-Modus. Die anderen verlangen eine Docker-Swarm-Umgebung und Kubernetes m\u00f6gen sie beide nicht. Das ist halt Pech.<\/p>\n\n\n\n<p>Manchmal lassen sich die gelieferten Container auch ganz einfach starten, daf\u00fcr aber \u00fcberhaupt nicht in bestehende Umgebungen integrieren. So kann es schon in Arbeit ausarten, wenn man den voreingestellten Datenbank-Container herausoperieren muss, um den vorhandenen Datenbank-Cluster nutzen zu k\u00f6nnen.<\/p>\n\n\n\n<p>Ein wenig neidisch blicke ich dabei zu Berufskollegen, die eigene Softwareentwicklung betreiben und von den Vorz\u00fcgen ihrer Kubernetes-Cluster schw\u00e4rmen.<\/p>\n\n\n\n<p>Allerdings stehe ich mit meinen Erfahrungen noch ganz am Anfang und lasse mich gerne \u00fcberraschen, was die Zukunft noch bringt.<\/p>\n\n\n\n<p>Was habt ihr f\u00fcr Erfahrungen im Umgang und mit dem Betrieb von Containern gemacht? K\u00f6nnt ihr hier Geschriebenes in Teilen nachvollziehen oder sind eure Erfahrungen v\u00f6llig anderer Natur? Ich freue mich auf eure Beitr\u00e4ge in den Kommentaren und per E-Mail.<\/p>\n\n\n\n<p>Bis bald im sch\u00f6nen neuen Container-Land.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Beitrag m\u00f6chte ich meine pers\u00f6nliche Meinung zu und \u00fcber Linux-Container mit euch teilen. Ich freue mich, wenn sich daraus eine Diskussion entwickelt, in der ihr eure Erfahrungen und Gedanken zum Thema einbringt. Mir geht es dabei ausschlie\u00dflich um Linux-Container, welche ich von \u00e4hnlichen Konzepten wie z.B. den LDOMs und Kernel-Zones unter Solaris, etc.<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/kommentar-linux-container-spreu-und-weizen\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[1],"tags":[517,430,305],"class_list":["post-2914","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-container","tag-osbn","tag-planet"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=2914"}],"version-history":[{"count":4,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2914\/revisions"}],"predecessor-version":[{"id":2918,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2914\/revisions\/2918"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=2914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=2914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=2914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}