Implementeer een Spring Boot-applicatie in OpenShift

1. Overzicht

In deze tutorial laten we zien hoe je een applicatie implementeert vanuit onze Bootstrap a Simple Application met Spring Boot-tutorial naar Openshift.

Als onderdeel hiervan zullen we:

  • Installeer en configureer de ontwikkeltools van Openshift.
  • Maak een Openshift-project en MySQL-implementatie.
  • Configureer de applicatie voor Spring Cloud Kubernetes.
  • Maak en implementeer de applicatie in een container met behulp van de Fabric8 Maven-plug-in en test en schaal de applicatie.

2. Openshift-configuratie

Eerste, we moeten Minishift, het lokale Openshift-cluster met één knooppunt en de Openshift-client installeren.

Voordat we Minishift gebruiken, moeten we de machtigingen configureren voor de ontwikkelaargebruiker:

minishift addons installeren --defaults minishift addons inschakelen admin-gebruiker minishift start oc adm-beleid - als systeem: admin add-cluster-role-to-user cluster-admin developer

Nu willen we de Openshift Console gebruiken om een ​​MySQL-service te creëren. We kunnen de browser-URL starten met:

minishift console

Als u niet automatisch bent aangemeld, gebruik dan ontwikkelaar / ontwikkelaar.

Maak een project met de naam baeldung-demo en maak vervolgens een MySQL-databaseservice vanuit de catalogus. Voorzien baeldung-db voor de databaseservice, baeldung_db voor de MySQL-databasenaam en laat de andere waarden op hun standaardwaarden staan.

We hebben nu een service en geheimen voor toegang tot de database. Noteer de URL van de databaseverbinding: mysql: // baeldung-db: 3306 / baeldung_db

We moeten ook toestaan ​​dat applicaties configuraties lezen, zoals Kubernetes Secrets en ConfigMaps:

oc maak rolbinding default-view --clusterrole = view \ --serviceaccount = baeldung-demo: default --namespace = baeldung-demo

3. Spring Cloud Kubernetes-afhankelijkheden

We gebruiken het Spring Cloud Kubernetes-project om de cloudeigen API's voor Kubernetes in te schakelen die de basis vormen voor Openshift:

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

We zullen ook de Fabric8 Maven-plug-in gebruiken om de container te bouwen en te implementeren:

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

4. Applicatieconfiguratie

Nu we moeten configuratie bieden om ervoor te zorgen dat de juiste Spring Profiles en Kubernetes Secrets worden geïnjecteerd als omgevingsvariabelen.

Laten we een YAML-fragment maken in src / main / fabric8 zodat de Fabric8 Maven-plug-in deze zal gebruiken bij het maken van de implementatieconfiguratie.

We moeten ook een sectie toevoegen voor de Spring Boot-actuator, aangezien de standaard in Fabric8 nog steeds probeert toegang te krijgen /Gezondheid in plaats van / actuator / gezondheid:

spec: sjabloon: spec: containers: - env: - naam: SPRING_PROFILES_ACTIVE waarde: mysql - naam: SPRING_DATASOURCE_USER waardeFrom: secretKeyRef: naam: baeldung-db sleutel: database-gebruiker - naam: SPRING_DATASOURCE_PASSWORD sleutel waardeVan: naam: geheime sleutel : database-wachtwoord livenessProbe: httpGet: pad: / actuator / health poort: 8080 schema: HTTP initialDelaySeconds: 180 readinessProbe: httpGet: pad: / actuator / health poort: 8080 schema: HTTP initialDelaySeconds: 30

De volgende, we zullen een ConfigMap in openshift / configmap.yml, dit bevat de gegevens voor een application.properties met de MySQL-URL:

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

Voordat we met Openshift kunnen communiceren via de opdrachtregelclient, moeten we inloggen. In de rechterbovenhoek van de webconsole staat een gebruikerspictogram waaruit we het vervolgkeuzemenu met de naam "Inlogopdracht kopiëren" kunnen selecteren. Gebruik dan in een shell:

oc login //192.168.42.122:8443 --token =

Laten we ervoor zorgen dat we het juiste project gebruiken:

oc project baeldung-demo

En dan we uploaden het ConfigMap:

oc create -f openshift / configmap.yml

5. Inzet

Tijdens de implementatie probeert de Fabric8 Maven-plug-in de geconfigureerde poort te bepalen. Het bestaan application.properties bestand in onze voorbeeldtoepassing gebruikt een uitdrukking om de poort te definiëren, die de plug-in niet kan parseren. Daarom moeten we de regel becommentariëren:

# server.port = $ {poort: 8080}

van de huidige application.properties.

We zijn nu klaar voor implementatie:

mvn clean fabric8: deploy -P openshift 

We kunnen de voortgang van de implementatie volgen totdat we zien dat onze applicatie wordt uitgevoerd:

oc krijg pods -w

Moet een vermelding bevatten:

NAAM KLAAR STATUS HERSTART LEEFTIJD baeldung-db-1-9m2cr 1/1 Running 1 1h spring-boot-bootstrap-1-x6wj5 1/1 Running 0 46s 

Voordat we de applicatie testen, moeten we de route bepalen:

oc routes ophalen

Zal de routes in het huidige project afdrukken:

NAAM HOST / HAVENPAD SERVICES HAVENBEËINDIGING WILDCARD spring-boot-bootstrap spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io spring-boot-bootstrap 8080 Geen 

Laten we nu controleren of onze applicatie werkt door een boek toe te voegen:

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

Verwacht de volgende output:

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

6. Schalen van de applicatie

Laten we de implementatie schalen om 2 instanties uit te voeren:

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

En we kunnen dezelfde stappen als eerder gebruiken om te zien hoe het wordt geïmplementeerd, de routes ophalen en het eindpunt testen.

Openshift biedt een breed scala aan opties voor het beheren van prestaties en schaalvergroting die buiten het bestek van dit artikel vallen.

7. Conclusie

In deze tutorial hebben we:

  • De Openshift ontwikkeltools en lokale omgeving geïnstalleerd en geconfigureerd
  • Een MySQL-service geïmplementeerd
  • Een ConfigMap- en Deployment-configuratie gemaakt om databaseverbindingseigenschappen te bieden
  • Een container gebouwd en geïmplementeerd voor onze geconfigureerde Spring Boot-applicatie, en
  • De applicatie getest en geschaald.

Bekijk de gedetailleerde Openshift-documentatie voor meer informatie.

De volledige broncode van onze voorbeelden hier is, zoals altijd, op GitHub.