Mobile-Menu

Container-Umgebungen mit Open Source betreiben, optimieren und automatisieren So kombinieren Sie Ansible mit Kubernetes und Docker

Autor / Redakteur: Thomas Joos / Dipl.-Ing. (FH) Andreas Donner

In Container-Umgebungen spielt die Automatisierung eine wichtige Rolle. Red Hat kombiniert hier seine Produkte Ansible Automation Platform und Advanced Cluster Management für Kubernetes, um eine deutlich verbesserte Automatisierung von Container-Umgebungen zu erreichen. Es gibt aber noch weitere Möglichkeiten.

Firmen zum Thema

Um eine Container-Umgebung mit Ansible zu automatisieren, kann mit der Kombination von Red Hat OpenShift, Red Hat Ansible und Kubernetes Operators eine weitreichende Automatisierung erreicht werden.
Um eine Container-Umgebung mit Ansible zu automatisieren, kann mit der Kombination von Red Hat OpenShift, Red Hat Ansible und Kubernetes Operators eine weitreichende Automatisierung erreicht werden.
(Bild: © shane - stock.adobe.com)

Unternehmen, die hybride Clouds betreiben und die über Container Dienste im Netzwerk und der Cloud zur Verfügung stellen, stehen in den meisten Fällen vor der Herausforderung, die Bereitstellung der (Docker-) Container mit Kubernetes möglichst effektiv zu automatisieren.

Durch die Kombination der Ansible Automation Platform und dem Advanced Cluster Management for Kubernetes, können Container-Umgebungen in Red Hat OpenShift mit Ansible verwaltet werden. Parallel dazu können mit Open Source-Tools Container über Ansible automatisiert erstellt werden. Auch die Verwaltung von Images kann über diesen Weg durchgeführt werden. Wir zeigen, was dabei wichtig ist.

Red Hat OpenShift, Red Hat Ansible und Kubernetes Operators

Um eine Container-Umgebung mit Ansible zu automatisieren, kann mit der Kombination von Red Hat OpenShift, Red Hat Ansible und Kubernetes Operators eine weitreichende Automatisierung erreicht werden. Red Hat Ansible und Red Hat OpenShift ermöglichen den Betrieb und die automatisierte Bereitstellung von Kubernetes-Clustern und auch die Anbindung von Ressourcen außerhalb des Clusters. Red Hat OpenShift unterstützt Kubernetes-Operator vollständig. Dadurch können Bereitstellung, Verwaltung und Betrieb vereinfacht werden.

Operatoren erweitern dazu die Kubernetes-API, um Instanzen im Auftrag eines Kubernetes-Benutzers zu erstellen, zu konfigurieren und zu verwalten. Dabei werden bekannte Kubernetes-Ressourcen- und Controller-Konzepte genutzt. Kubernetes-Operatoren definieren in diesem Szenario einen deklarativen Zustand. Hier kann auf YAML gesetzt werden, sodass die Operatoren in Ansible verfügbar sind.

Dadurch können auch zahlreiche Module aus dem Ansible-Ökosystem genutzt werden. Mit den Operatoren kann ein deklarativer Status für Installationen einer Anwendung im laufenden Betrieb definiert werden, unabhängig davon, wo die Anwendung betrieben wird. Red Hat Advanced Cluster Management für Kubernetes kann auf diesem Weg auch mehrere Kubernetes-Cluster anbinden und verwalten.

Red Hat Ansible Automation und Red Hat Advanced Cluster Management for Kubernetes testen

Red Hat ermöglicht einen Test von 60 Tagen für Red Hat Ansible Automation und Red Hat Advanced Cluster Management for Kubernetes.

Ansible kann in Cloud-Umgebungen und hybriden Netzwerken für Mehrwert sorgen

Nicht immer ist der Einsatz von Ansible sinnvoll, wenn es um die Automatisierung einer Infrastruktur geht. Es ist nicht immer der perfekte Weg, wenn bestimmte Abläufe und Teile der Infrastruktur automatisiert werden. Hier gibt es meistens keinen perfekten Weg. Ansible kann in die Prozesse für Container-Builds, Cluster-Management und Anwendungs-Lebenszyklen integriert werden. Allerdings gehört dazu eine umfassende Planung der Automatisierungsstrategie. Teilweise Automatisierung kann m ehr Aufwand bedeuten als das komplette Automatisieren einer Umgebung. Das gilt auch für Kubernetes. Vor allem, wenn mehrere Cluster im Einsatz sind, kann es sinnvoll sein, mit Ansible in Kombination mit Kubernetes zu arbeiten.

Docker-Container und -Images mit Ansible und Buildah erstellen

Dockerfiles sind generell nichts anderes als Shell-Skripte, mit denen Container erstellt werden. Weitergehende Automatisierungen sind damit nicht möglich. Ansible kann allerdings auch dabei helfen Container-Images zu erstellen. Open-Source-Build-Tools wie Buildah https://buildah.io sind hier sinnvoll einsetzbar. Buildah bindet sich in ansible-bender ein, um Container und Container-Images mit Ansible-Playbooks zu erstellen. Diese Vorgehensweise ist in vielen Fällen wesentlich besser geeignet als mit Dockerfiles zu arbeiten, vor allem wenn in Unternehmen bereits mit der Automatisierung gearbeitet wird. Buildah wird zum Beispiel in CentOS mit dem folgenden Befehl installiert:

sudo yum -y install buildah

CentOS bietet sich als Linux-Distribution an, da diese auf Red Hat basiert und daher die Befehle und Tools aus Red Hat genutzt werden klönnen.

Die vorhandenen Images in Buildah werden mit „buildah images“ angezeigt. Auch die Container können auf diesem Weg angezeigt werden. Dazu wird der Befehl „buildah containers“ angezeigt. Die Erstellung von Containern ist auf diesem Weg mit wenigen Schritten abgeschlossen. Ein neuer Container kann zunächst mit dem folgenden Befehl erstellt werden:

newcontainer=$(buildah from scratch)

Durch die Verwendung von „from scratch“ erstellt Buildah einen Container ohne Image. Nach Eingabe von “buildah containers” wird der Container angezeigt. Mit „buildah images“ können die Images angezeigt werden. Als Image-Name für den neuen Container wird „scratch“ genutzt. Der Container ist komplett leer und wird nur auf den Kernel aufgesetzt. Mit dieser Möglichkeit kann aber getestet werden, wie die Automatisierung mit Containern bei parallelem Ansible-Einsatz funktioniert.

Dazu wird „ansible-bender“ genutzt. Dabei handelt es sich um ein Tool, das Container mit Hilfe von Ansible-Playbooks anpasst und in Container-Bilder umwandelt. Es verfügt über eine steckbare Builder-Auswahl – es liegt also an Ihnen, das Werkzeug auszuwählen, mit dem Ihr Containerbild konstruiert wird. ansible-bender nutzt dazu Ansible Connection-Plugins. Um Container mit Ansible zu automatisieren, ist der beste Weg also, mit Buildah zu arbeiten, parallel ansible-bender einzusetzen und im Bedarfsfall noch auf Ansible Automation Platform und Advanced Cluster Management for Kubernetes mit Red Hat zu setzen. Im Blogbeitrag „Building Container Images with Buildah and Ansible“ wird die Vorgehensweise genauer beschrieben.

ansible-bender kann auf CentOS zum Beispiel mit „sudo pip3 install ansible-bender“ installiert werden. Für die Installation werden Buildah und Ansible benötigt.

(ID:47034081)