Red Hat Openshift - Container PlatformLetzten September veröffentlichte Red Hat die OpenShift 3.3 Container Platform, die die Welt der Platform-as-a-Service (PaaS) revolutionierte. Die OpenShift Container Platform ist eine auf Red Hat Enterprise Linux und Kubernetes basierende PaaS, mit der Sie eine Cloud-Anwendungsplattform erhalten, die die Bereitstellung neuer Anwendungen auf sicheren und skalierbaren Ressourcen mit minimalem Konfigurations- und Verwaltungsaufwand ermöglicht. Sie umfasst zahlreiche tolle Funktionen wie integriertes Docker-Registrierung, Pipelines, Image-Bereitstellung mit nur einem Klick, bessere Benutzeroberflächen und vieles mehr. Mit diesen Funktionen setzt sich die branchenweit führende Kubernetes-Plattform für den Betrieb vorhandener, cloud-nativer Anwendungen in beliebigen Clouds von der Konkurrenz ab. Auch unsere Kunden und potenziellen Kunden, die einen PaaS-Ansatz für die Bereitstellung ihrer Anwendungen nutzen möchten, arbeiten zunehmend mit OpenShift. Somit haben wir uns entschlossen, OpenShift ebenfalls zu nutzen und zu testen!

Für den Test stehen Ihnen verschiedene Möglichkeiten zu Verfügung, am einfachsten ist jedoch der Download der All-In-One-VM für OpenShift Origin, der kostenlosen Version der OpenShift Container Platform oder OpenShift Enterprise. Oder erstellen Sie einen neuen Cluster, in dem Sie das öffentliche Docker-Image ausführen (geben Sie hierbei jedoch darauf acht, dass Sie ältere Docker-Versionen wie 1.10 verwenden müssen). Steigen Sie nach dem Test auf eine Produktionsumgebung um, sollten Sie von Red Hat umfangreiche Dokumentation dazu erhalten, wie Sie OpenShift auf AWS als HA-Cluster ausführen. Erwerben Sie hierfür mindestens das Abonnement OpenShift Business Partner Supported NFR, da eine Produktion mit dem 30-tägigen Abonnement für Red Hat Enterprise Linux Server Self-Supported Evaluation nicht möglich ist! (Vertrauen Sie mir oder verbringen Sie selbst zwei Tage damit, es selbst auszuprobieren.)

Unsere Übung ist sehr einfach. Ich möchte die Nuxeo Platform einfach so konfigurieren, dass sie so schnell wie möglich mit MongoDB läuft, damit ich meine Anwendungen entwickeln kann. Außerdem zeige ich Ihnen, wie Sie Marketplace-Pakete installieren und ein AWS-EBS-Laufwerk als persistentes Laufwerk für MongoDB festlegen können, um die Sache interessanter zu gestalten (hierfür gehe ich natürlich davon aus, dass Ihr OpenShift-Cluster auf AWS bereits eingerichtet ist).

Sie können aus zwei Optionen wählen: Sie können den OpenShift CLI-Client herunterladen und verwenden oder (fast) alles über die Benutzeroberfläche steuern. Ich erläutere beide Verfahren, die Benutzeroberfläche bietet im Vergleich zum Client jedoch wesentlich eingeschränktere Funktionen. Werfen wir also nun einen Blick auf die nötigen Schritte.

  1. OpenShift einrichten und ausführen

    Blicken wir ein wenig in die Zukunft (oder nur 10 Minuten, abhängig von der Option, für die Sie sich entscheiden) und nehmen wir an, dass Ihr OpenShift-Cluster fertig eingerichtet ist und ausgeführt werden kann.

    Möchten Sie die All-In-One-VM ausführen, benötigen Sie Folgendes:

    $ vagrant init openshift/origin-all-in-one
    $ vagrant up --provider=virtualbox
    

    Die Konsole wird unter https://10.2.2.2:8443 ausgeführt

    Möchten Sie den HA-Cluster installieren, folgen Sie den Anweisungen in dieser Dokumentation und Sie erhalten in AWS folgende Architektur:

    Cluster-Architektur

  2. In OpenShift anmelden und ein Projekt erstellen

    • Sollten Sie sich entschieden haben, den Test mit dem All-In-One-Image durchzuführen, können Sie sich einfach mit dem Benutzernamen und Passwort anmelden (jeweils "admin"):

      $ oc login https://10.2.2.2:8443
      $ oc new-project test-nuxeo
      

      Verwenden Sie nun das Projekt "test-nuxeo" auf dem Server "https://10.2.2.2:8443".

    • Sollten Sie den AWS-Cluster installiert haben, können Sie über die Webkonsole einen Token generieren. Wird der Cluster beispielsweise unter openshift-master.io.nuxeo.com/ bereitgestellt, navigieren Sie zu https://openshift-master.io.nuxeo.com/console/command-line und kopieren Sie den generierten Token in das Anmeldefenster:

      $ oc login https://openshift-master.io.nuxeo.com --token=XXX
      

      Erstellen Sie nun ein neues Projekt:

      Neues Projekt

  3. EBS-Laufwerk (AWS-Cluster) einrichten und MongoDB bereitstellen

    Wenn Sie einen OpenShift-Cluster auf AWS ausführen, kann nur ein Cluster-Administrator persistente Laufwerke konfigurieren, die für alle Projekte zur Verfügung stehen sollen. Dann können sich sämtliche Anwendungen, die externen Speicher benötigen, damit verbinden und das Laufwerk nutzen.

    • EBS-Laufwerk in AWS:

    EBS-Laufwerk in AWS

    • PS-Laufwerk im Betriebssystem erstellen
    $ cat aws-pv.yaml
    apiVersion: "v1"
    kind: "PersistentVolume"
    metadata:
     name: "pv00001"
    spec:
     capacity:
     storage: "1Gi"
     accessModes:
     - "ReadWriteOnce"
     awsElasticBlockStore:
     fsType: "ext4"
     volumeID: "vol-026b24515ee34265c"
    $ oc create -f aws-pv.yaml
    persistentvolume "pv00001" created
    

    Nun können Sie einfach eine neue MongoDB bereitstellen, indem Sie auf die Schaltflächen für das Hinzufügen zu Projekten und zum Durchsuchen des Katalogs klicken und die bestehende Vorlage "mongodb-persistent" auswählen, die unten dargestellt ist (legen Sie alle Parameter der Einfachheit halber auf "nuxeo" fest). Beachten Sie, dass die Skalierung auf mehr als eine Kopie bei dieser Vorlage nicht unterstützt wird:

    MongoDB-Vorlage

    MongoDB-Parameter

    Das war's dann schon! Der MongoDB-Container kann nun verwendet werden:

    MongoDB eingerichtet

    Dann starten wir doch auch gleich Nuxeo!

  4. Nuxeo Docker-Image erstellen und ausführen

    Standardmäßig können mit OpenShift geöffnete Container nicht Root im Container verwenden. "nuxeo:latest" kann nicht einfach ausgeführt werden, da OpenShift die Ausführung des Containers als Ursprung verhindert. Wir können jedoch die Sicherheitseinstellungen bearbeiten, um diese Regel etwas zu entschärfen (folgen Sie der hier beschriebenen Lösung), oder erstellen Sie aus einer geringfügig überarbeiteten Docker-Datei ein neues Nuxeo-Image, das statt Root den Benutzer "nuxeo" ausführt.

    Sie können das Github-Verzeichnis sowie die Umgebungsvariablen unmittelbar weitergeben und darauf warten, dass OpenShift automatisch das Docker-Image erstellt, es an die interne Registrierung pusht und den Nuxeo-Container startet.

    Da ich Nuxeo jedoch mit der MongoDB-Vorlage starten und das Marketplace-Paket "nuxeo-web-ui" installieren möchte, erstelle ich eine neue Anwendung und gebe folgende Umgebungsvariablen weiter:

    $oc new-app https://github.com/mcedica/nuxeo-openshift-image.git 
    -e NUXEO_TEMPLATES=default,mongodb 
    -e NUXEO_CUSTOM_PARAM=nuxeo.mongodb.server=mongodb://admin:[email protected]:27017 
    -e NUXEO_PACKAGES=nuxeo-web-ui
    
    --> Found Docker image ad7074a (12 days old) from Docker Hub for "nuxeo:8.10"
    
    --> Creating resources ...
     imagestream "nuxeo" created
     imagestream "nuxeo-openshift-image" created
     buildconfig "nuxeo-openshift-image" created
     deploymentconfig "nuxeo-openshift-image" created
     service "nuxeo-openshift-image" created
    --> Success
     Build scheduled, use 'oc logs -f bc/nuxeo-openshift-image' to track its progress.
     Run 'oc status' to view your app.
    

    Oder klicken Sie in der Webkonsole auf die Schaltfläche für das Hinzufügen zum Projekt, gehen Sie zur Option für die Bereitstellung des Images und geben Sie "nuxeo:latest" an, vorausgesetzt, Sie haben die Sicherheitseinschränkungen, falls erforderlich, angepasst* und die oben genannten Umgebungsvariablen festgelegt.


    Sicherheitseinschränkungen: Führen Sie den Test mit der All-In-One-VM für OpenShift Origin aus, müssen Sie keine Änderungen vornehmen. Sie können beliebige Container als Root ausführen. Verwenden Sie die Installation des AWS-OpenShift-HA-Clusters und möchten Sie das Standard-nuxeo:latestDocker-Image verwenden, gehen Sie wie folgt vor:

    $oc edit scc anyuid

    Nun den Benutzern hinzufügen:

    system:serviceaccount:$PROJECT:default #wobei $PROJECT der Name Ihres OS-Projekts ist


    Nuxeo bereitstellen

    Prüfen Sie das neue Docker-Image (das nun an die interne Registrierung gepusht wird):

    Image-Build

    Hier finden Sie die Bereitstellung:

    Bereitstellung

    Und zu guter Letzt der ausgeführte Container:

    Ausgeführter Nuxeo-Container

    Nun werden sowohl MongoDB als auch die Nuxeo Platform ausgeführt:

    MongoDB und Nuxeo

    Jetzt müssen Sie nur noch eine Route für den Zugriff auf die Nuxeo Platform festlegen:

    Route erstellen

    Voilà! Die Nuxeo Platform, konfiguriert mit persistenter MongoDB, wird ausgeführt unter: http://nuxeo-route-test-nuxeo.apps.io.nuxeo.com/
    (Hierbei handelt es sich um den Link zu meiner Testanwendung, er ist nur ein Beispiel. Sollten Sie auf diesen Link nicht zugreifen können, bedeutet dies, dass meine Testanwendung entfernt wurde und Sie die Schritte selbst ausführen müssen, um ein Ergebnis anzeigen zu können.)

    Nuxeo in Betrieb