Skip to content

Cloud Foundry Einführung mit IBM Bluemix

2017 November 22

Cloud Foundry (CF) ist eine OpenSource Platform, welches auf ein gängige IaaS bereitgestellt werden kann, um ein PaaS zu errichten, in dem dann unterschiedliche Applikationen und Services bereitgestellt werden können. Natürlich gibt es verschiedene Anbieter die ein PaaS auf Cloud Foundry basierend anbieten, dazu gehören u.a. Pivotal CF, IBM Bluemix. In dieser Einführung wird CF mit IBM Bluemix vorgestellt.

Übersicht

Mit Cloud Foundry (CF) gibt eine etablierte PaaS Software vor was von verschiedenen Hersteller unterstützt wird. CF ist eine Stack was die Bereitstellung, Verwaltung und Betrieb von eigenen Applikationen in einer Cloud-Umgebung unterstützt. Dieser Stack besteht aus mehreren Komponenten die nachfolgenden kurz erläutert werden.

Cloud Foundry Stack

Cloud Foundry Stack – https://docs.cloudfoundry.org/concepts/architecture/ – 22.11.2017

Jegliche hereinkommenden Anfragen gelangen durch den Router zu dem Cloud Controller oder ein Diego Zelle, welches eine App verwaltet.

Die Information bzgl. des Routing für die vorhandenen Applikationen wird vom Bulletin Board System (BBS) regelmäßig abgefragt.

Deployment Anfragen werden an den Cloud Controller verwiesen, der im Zuge des Deployments eine Diego Zelle für die Ausführung der Applikation beauftragt.

Ein Vorteil einer Cloud Platform ist die Skalierung und die Überwachung der Applikationen mit einem automatischen Neustart einer weiteren Instanz, falls notwendig. Cell Reps überwacht dabei die aktuellen Instanzen gemäß der definierten Anzahl an Instanzen. Nsyncs verarbeitet die Skalierungs-Anfragen und BBS verwaltet die Instanzen um die Skalierungsanforderungen einzuhalten.

Jegliche binäre Dateien (Applikationen, Droplet etc) werden in dem Blob Store zwischengehalten.

Die schon erwähnte Diego Zelle übernimmt die Ausführung der Applikationen und deren Installation. Dabei werden alle Container in dem Garden verwaltet.

Falls die Applikation zusätzliche Services benötigt, werden diese über den Service Broker verwaltet.

Die unzähligen Komponenten in der CF Landschaft kommunizieren über verschiedene Mechanismen:

  • BBS für die Daten welche häufig aktualisiert werden, wie jegliche Status-Daten, Heartbeat Messages, Routing-Informationen etc.
  • Consul für langlebige Daten wie IP-Adressen oder verteilte Locks
  • NATS sorgt für die Broadcast Funktionalität, welche u.a. für das Routing relevant ist.

Um einen guten Überblick über Komponenten zu haben werden die Metriken und Logs einheitlich gesammelt; so finden sich z.B. Deployment-Information im Metrics Collector und jegliche Applikations-Log im Log Aggregator.

Vorbedingung

Um CF zu nutzen, wird eine eigene CF Installation/Plattform benötigt oder man nutzt einen der existierenden CF Provider, wie Pivotal CF oder IBM Bluemix. Im weiteren Verlauf wird auf IBM Bluemix eingegangen.

IBM Bluemix bietet einen kostenlosen Zugang an, der zeitlich nicht begrenzt ist und viele Services und Komponenten frei zugänglich anbietet.

Die Kommunikation mit einer CF Plattform wird mittels CF CLI durchgeführt. Hierfür gibt es für die gängigen Betriebssystemen entsprechende Installationspakete:

Da hier auch IBM Bluemix verwendet wird, wird die Bluemix CLI (bx) benötigt – dafür stehen für die gängigen Betriebssysteme Pakete bereit.

Zu beachten ist, dass seit kurzem im kostenlosen Zugang von IBM Bluemix die Verwendung von Docker nur noch über ein Kubernetes Cluster möglich ist. Dafür muss die Kubernetes-CLI installiert werden. In der kostenpflichtigen Variante kann mittels IBM Bluemix Container-Service verwendet werden, um einzelne und skalierbare Container einzurichten. Tut man dies dennoch mit einem kostenlosen Account, erhält man u.a. folgende Meldung

 

In Cloud Foundry werden Applikationen immer einer Organisations-Einheit zugeordnet, die wiederum in verschiedene Spaces unterteilt werden. Hier stehen einem jegliche Unterteilungsmöglichkeiten, wie z.B. die Unterteilung nach Umgebung (Test, Integration, Produktion) oder eher fachlich (Kundenverwaltung, Produktmanagement etc). Zu beachten ist, dass beim IBM Bluemix eine Organisation und Space konfiguriert wurden. IBM Bluemix hat zusätzlich eine Kategorisierung vorweg, die Region (UK, DE, Sydney, US South).

IBM Bluemix

IBM Bluemix – Unterteilung von Region, Organisation und Space

Die IBM Bluemix Region legt fest, an welcher API-URL die CF Anfragen verschickt werden

  • UK: api.eu-gb.bluemix.net
  • DE: api.eu-de.bluemix.net
  • Sydney: api.au-syd.bluemix.net
  • US South: api.ng.bluemix.net

 

Einrichtung

Dieses Kapitel umfasst die Bereitstellung einer Applikation in einem Docker Image. Dafür wird ein eigener Cluster erstellt und hierfür wird Cloud Foundry und IBM Bluemix verwendet. Als Applikation wird das blueprint Projekt verwendet, was im letzten Beitrag vorgestellt wurde.

Diese Applikation kann unter folgende URL erreicht werden: http://169.51.16.35:32531/swagger-ui.html

Erste Schritte

  • Anmeldung bei einem Cloud Foundry Provider. Zu beachten ist, dass hier die korrekte API URL verwendet wird. Dabei muss die Region verwendet werden, die in Bluemix konfiguriert wurde. Wenn als Region UK ausgewählt wurde, lautet die URL: https://api.eu-gb.bluemix.net. Ohne die Angabe von ORG und SPACE beim Login wird interaktiv die vorhandenen aufgelistet und zur Auswahl gestellt.

  • Eine Anmeldung über die IBM Bluemix CLI ist auch notwendig. Anschließend muss die Cloud Foundry Organisation und Space ausgewählt werden.

  • IBM Bluemix CLI bietet mehre Plugins an um die einzelnen Komponenten in der Bluemix Landschaft einzurichten; eins ist Container Services zur Verwaltung von Cluster. Somit steht dann „bx cs“ zur Verfügung.

  • Für den Einsatz von Docker wird ein Registry benötigt, was auch als Bluemix Plugin (bx cr)  zur Verfügung steht.

  • Für den Registry muss ein eindeutiger Namensbereich definiert werden.

 

Cluster erstellen

  • Ein neuer Cluster kann über die bx cs CLI erstellt werden. Dabei muss die Kubernetes Version angegeben werden. Diese muss mit der eigenen Kubernetes(-CLI) Version kompatibel sein. Der Erstellte Cluster ist ein Lite-Cluster und ist bei IBM Bluemix kostenfrei.

  • Die aktuellen Worker im Cluster können angezeigt werden. Der vorhandene besitzt keinen Services/Applikation ist auch nicht öffentlich erreichbar.

 

Docker Image veröffentlichen

  • Um ein Docker Image bereitzustellen, muss dieser zum bereitgestellten Registry veröffentlicht werden. Dabei ist zu beachten, dass eine Anmeldung beim Registry notwendig ist, ansonsten wird die Veröffentlichung abgewiesen.

 

Applikation veröffentlichen

  • Da in dem kostenlosen Zugang von IBM Bluemix Docker Images nur noch mittels Kuebernetes Cluster bereitgestellt werden können, wird das Kuebernetes-CLI benötigt.
  • Nach jeder CLI Anmeldung ein die CF Plattform, muss Kubernetes-CLI mit dem Cluster konfiguriert werden. Dafür wird eine Konfigurationsdatei runtergeladen und muss als Umgebungsvariable KUBECONFIG zur Verfügung gestellt werden. Mittels dem Version-Befehl kann überprüft werden, ob die Verbindung zum CF Server erfolgreich aufgebaut werden kann.

  • Zur Bereitstellung der Applikation „blueprint“ für ein POD in Kubernetes, wird erstmal ein Deployment-Artefakt erstellt werden. Dieses kann dann später für weitere Instanzen wiederverwendet werden.

  • Das Deployment muss nur veröffentlich werden. Dafür steht das kubernetes expose Befehl bereit. Da wir gerade nur einen Workerknoten im Cluster haben, wird als Typ NodePort verwendet. Zusätzlich werden noch die Ports definiert. Der generierte Port wird sich im Bereich „30000-32767“ bewegen.

  • Die öffentliche IP und Port lassen sich aus den Details des Service und Cluster ermitteln. Die Applikation lässt sich über folgende URL erreichen: http://169.51.16.35:32587.

  • Fals der Service, respektive die Applikation, gelöscht werden muss, geht das mit folgendem Befehl

 

Fazit

Mittels Cloud Foundry und Kubernetes-CLI lässt sich mit überschaubarem Aufwand ein Docker Images in einem CF Provider veröffentlichen.; ohne dabei den Docker Container hier entsprechend anzupassen. Run Anywhere somit weiter eingehalten.

Viele der hier aufgeführten Befehle lassen sich bei den CF Providern über entsprechende UI-Konsolen durchführen. Genauso gibt es entsprechende IDE Unterstützung.

In einem späteren Beitrag wird mehr auf Cluster-Fähigkeit und Skalierung eingegangen, genauso wie dieser Prozess der Bereitstellung automisiert werden kann.

 

Referenzen

Share it!
  •  
  •  
  •  
  •  
  •  
  •  
No comments yet

Leave a Reply

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS