Stellen Sie eine Spring Boot-Anwendung für OpenShift bereit

1. Übersicht

In diesem Tutorial zeigen wir Ihnen, wie Sie eine Anwendung aus unserem Bootstrap einer einfachen Anwendung mithilfe des Spring Boot-Tutorials für Openshift bereitstellen.

Als Teil davon werden wir:

  • Installieren und konfigurieren Sie Openshift-Entwicklungstools.
  • Erstellen Sie ein Openshift-Projekt und eine MySQL-Bereitstellung.
  • Konfigurieren Sie die Anwendung für Spring Cloud Kubernetes.
  • Erstellen und implementieren Sie die Anwendung in einem Container mit dem Fabric8 Maven-Plugin und testen und skalieren Sie die Anwendung.

2. OpenShift-Konfiguration

Zuerst müssen wir Minishift, den lokalen Einzelknoten-Openshift-Cluster und den Openshift-Client installieren .

Bevor Sie Minishift verwenden können, müssen Sie die Berechtigungen für den Entwicklerbenutzer konfigurieren:

minishift addons install --defaults minishift addons enable admin-user minishift start oc adm policy --as system:admin add-cluster-role-to-user cluster-admin developer

Jetzt möchten wir die Openshift-Konsole verwenden, um einen MySQL-Dienst zu erstellen. Wir können die Browser-URL starten mit:

minishift console

Wenn Sie nicht automatisch angemeldet sind, verwenden Sie Entwickler / Entwickler.

Erstellen Sie ein Projekt mit dem Namen baeldung-demo und erstellen Sie dann einen MySQL-Datenbankdienst aus dem Katalog. Geben Sie baeldung-db für den Datenbankdienst, baeldung_db für den MySQL-Datenbanknamen an und belassen Sie die anderen Werte auf ihren Standardeinstellungen.

Wir haben jetzt einen Dienst und Geheimnisse für den Zugriff auf die Datenbank. Beachten Sie die URL der Datenbankverbindung: mysql: // baeldung-db: 3306 / baeldung_db

Wir müssen auch zulassen, dass Anwendungen Konfigurationen wie Kubernetes Secrets und ConfigMaps lesen:

oc create rolebinding default-view --clusterrole=view \ --serviceaccount=baeldung-demo:default --namespace=baeldung-demo

3. Spring Cloud Kubernetes-Abhängigkeiten

Wir werden das Spring Cloud Kubernetes-Projekt verwenden, um die Cloud-nativen APIs für Kubernetes zu aktivieren, die Openshift unterstützen:

 openshift    org.springframework.cloud spring-cloud-kubernetes-dependencies 0.3.0.RELEASE pom import   org.springframework.cloud spring-cloud-dependencies Greenwich.RELEASE pom import      org.springframework.cloud spring-cloud-starter-kubernetes-config   org.springframework.boot spring-boot-starter-actuator   

Wir werden auch das Fabric8 Maven-Plugin verwenden, um den Container zu erstellen und bereitzustellen:

 io.fabric8 fabric8-maven-plugin 3.5.37   fmp  resource build     

4. Anwendungskonfiguration

Jetzt müssen wir die Konfiguration bereitstellen, um sicherzustellen, dass die richtigen Federprofile und Kubernetes-Geheimnisse als Umgebungsvariablen eingefügt werden .

Erstellen wir ein YAML-Fragment in src / main / Fabric8, damit das Fabric8 Maven-Plugin es beim Erstellen der Bereitstellungskonfiguration verwendet.

Wir müssen auch einen Abschnitt für den Spring Boot-Aktuator hinzufügen, da die Standardeinstellung in Fabric8 weiterhin versucht, auf / health anstatt auf / actuator / health zuzugreifen :

spec: template: spec: containers: - env: - name: SPRING_PROFILES_ACTIVE value: mysql - name: SPRING_DATASOURCE_USER valueFrom: secretKeyRef: name: baeldung-db key: database-user - name: SPRING_DATASOURCE_PASSWORD valueFrom: secretKeyRef: name: baeldung-db key: database-password livenessProbe: httpGet: path: /actuator/health port: 8080 scheme: HTTP initialDelaySeconds: 180 readinessProbe: httpGet: path: /actuator/health port: 8080 scheme: HTTP initialDelaySeconds: 30

Als nächstes speichern wir eine ConfigMap in openshift / configmap.yml . Diese enthält die Daten für eine application.properties mit der MySQL-URL:

apiVersion: v1 kind: ConfigMap metadata: name: spring-boot-bootstrap data: application.properties: |- spring.datasource.url=jdbc:mysql://baeldung-db:3306/baeldung_db

Bevor wir mit Openshift über den Befehlszeilenclient interagieren können, müssen wir uns anmelden . Oben rechts in der Webkonsole befindet sich ein Benutzersymbol, aus dem wir das Dropdown-Menü mit der Bezeichnung "Anmeldebefehl kopieren" auswählen können. Dann in einer Shell verwenden:

oc login //192.168.42.122:8443 --token=

Stellen wir sicher, dass wir das richtige Projekt verwenden:

oc project baeldung-demo

Und dann laden wir die ConfigMap hoch :

oc create -f openshift/configmap.yml

5. Bereitstellung

Während der Bereitstellung versucht das Fabric8 Maven-Plugin, den konfigurierten Port zu ermitteln. Die vorhandene Datei application.properties in unserer Beispielanwendung verwendet einen Ausdruck, um den Port zu definieren, den das Plugin nicht analysieren kann. Deshalb müssen wir die Zeile kommentieren:

#server.port=${port:8080}

aus der aktuellen application.properties .

Wir sind jetzt bereit für den Einsatz:

mvn clean fabric8:deploy -P openshift 

Wir können den Bereitstellungsfortschritt verfolgen, bis unsere Anwendung ausgeführt wird:

oc get pods -w

Sollte eine Auflistung liefern:

NAME READY STATUS RESTARTS AGE baeldung-db-1-9m2cr 1/1 Running 1 1h spring-boot-bootstrap-1-x6wj5 1/1 Running 0 46s 

Bevor wir die Anwendung testen, müssen wir die Route bestimmen:

oc get routes

Druckt die Routen im aktuellen Projekt:

NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD spring-boot-bootstrap spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io spring-boot-bootstrap 8080 None 

Lassen Sie uns nun überprüfen, ob unsere Anwendung funktioniert, indem Sie ein Buch hinzufügen:

http POST //spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io/api/books \ author="Iain M. Banks" 

Erwarten Sie die folgende Ausgabe:

HTTP/1.1 201 { "author": "Iain M. Banks", "id": 1, "title": "The Player of Games" }

6. Skalieren der Anwendung

Skalieren wir die Bereitstellung, um zwei Instanzen auszuführen:

oc scale --replicas=2 dc spring-boot-bootstrap

Und wir können dann die gleichen Schritte wie zuvor ausführen, um die Bereitstellung zu beobachten, die Routen abzurufen und den Endpunkt zu testen.

Openshift bietet eine Vielzahl von Optionen zum Verwalten der Leistung und Skalierung, die über den Rahmen dieses Artikels hinausgehen.

7. Fazit

In diesem Tutorial haben wir:

  • Installiert und konfiguriert die Openshift-Entwicklungstools und die lokale Umgebung
  • Bereitstellung eines MySQL-Dienstes
  • Erstellt eine ConfigMap- und Bereitstellungskonfiguration, um Datenbankverbindungseigenschaften bereitzustellen
  • Erstellt und bereitgestellt einen Container für unsere konfigurierte Spring Boot-Anwendung und
  • Getestet und skaliert die Anwendung.

Weitere Informationen finden Sie in der detaillierten Dokumentation zu Openshift.

Der vollständige Quellcode unserer Beispiele hier ist wie immer auf GitHub verfügbar.