Primijenite Spring Boot aplikaciju na OpenShift

1. Pregled

U ovom uputstvu pokazat ćemo kako rasporediti aplikaciju iz našeg Bootstrapa jednostavne aplikacije pomoću vodiča Spring Boot za Openshift.

Kao dio ovoga ćemo:

  • Instalirajte i konfigurirajte razvojne alate Openshift.
  • Stvorite projekt Openshift i implementaciju MySQL-a.
  • Konfigurirajte aplikaciju za Spring Cloud Kubernetes.
  • Stvorite i postavite aplikaciju u spremnik pomoću dodatka Fabric8 Maven i testirajte i prilagodite aplikaciju.

2. Konfiguracija preusmjeravanja

Prvi, moramo instalirati Minishift, lokalni Openshift klaster s jednim čvorom i klijent Openshift.

Prije upotrebe Minishifta moramo konfigurirati dozvole za korisnika programera:

minishift addons instalirati - zadane postavke minishift addons omogućiti admin-user minishift start oc adm policy --kao sustav: admin add-cluster-role-to-user cluster-admin programer

Sada želimo koristiti Openshift Console za stvaranje MySQL usluge. URL preglednika možemo pokrenuti pomoću:

minishift konzola

Ako niste automatski prijavljeni, tada upotrijebite programer / programer.

Izradite projekt s imenom baeldung-demo a zatim iz kataloga stvorite uslugu baze podataka MySQL. Pružiti baeldung-db za uslugu baze podataka, baeldung_db za MySQL Ime baze podataka, a ostale vrijednosti ostavite prema zadanim postavkama.

Sada imamo uslugu i tajne za pristup bazi podataka. Zabilježite url veze baze podataka: mysql: // baeldung-db: 3306 / baeldung_db

Također moramo omogućiti aplikacijama čitanje konfiguracije poput Kubernetes Secrets i ConfigMaps:

oc stvoriti obvezujući prikaz zadataka --clusterrole = view \ --serviceaccount = baeldung-demo: default --namespace = baeldung-demo

3. Ovisnosti o proljetnom oblaku Kubernetes

Upotrijebit ćemo projekt Spring Cloud Kubernetes da omogućimo API-je nativne za Cloud za Kubernetes koji podupiru Openshift:

 openshift org.springframework.cloud proljeće-oblak-kubernetes-ovisnosti 0.3.0.RELEASE pom import org.springframework.cloud proljeće-oblak-ovisnosti Greenwich.RELEASE pom import org.springframework.cloud proljeće-oblak-starter-kubernetes-config org .springframework.pokretanje pokretača opruge-pokretač-pokretač 

Također ćemo koristiti dodatak Fabric8 Maven za izgradnju i implementaciju spremnika:

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

4. Konfiguracija aplikacije

Sada moramo osigurati konfiguraciju kako bismo osigurali da se ispravni proljetni profili i Kubernetesove tajne ubrizgaju kao varijable okoliša.

Stvorimo YAML fragment u src / main / fabric8 tako da će ga dodatak Fabric8 Maven koristiti prilikom stvaranja konfiguracije implementacije.

Također trebamo dodati odjeljak za aktuator Spring Boot jer zadani u Fabric8 i dalje pokušava pristupiti /zdravlje umjesto / aktuator / zdravlje:

spec: predložak: spec: spremnici: - env: - ime: SPRING_PROFILES_ACTIVE vrijednost: mysql - ime: SPRING_DATASOURCE_USER valueFrom: secretKeyRef: name: baeldung-db ključ: korisnik baze podataka - ime: SPRING_DATASOURCE_PASSWORD valueFeld: tajni df: tajni : baza podataka-lozinka livenessProbe: httpGet: put: / aktuator / priključak zdravlja: 8080 shema: HTTP početniDelaySeconds: 180 spremnostiProbe: httpGet: put: / aktuator / zdravstveni port: 8080 shema: HTTP početniDelaySeconds: 30

Sljedeći, spasit ćemo a ConfigMap u openshift / configmap.yml, ovo sadrži podatke za primjena.svojstva s MySQL URL-om:

apiVersion: v1 vrsta: ConfigMap metapodaci: ime: spring-boot-bootstrap podaci: application.properties: | - spring.datasource.url = jdbc: mysql: // baeldung-db: 3306 / baeldung_db

Prije interakcije s Openshiftom pomoću klijenta naredbenog retka moramo se prijaviti. U gornjem desnom dijelu web konzole nalazi se ikona korisnika s koje možemo odabrati padajući izbornik s oznakom "Kopiraj naredbu za prijavu". Zatim upotrijebite u ljusci:

oc prijava //192.168.42.122:8443 --token =

Provjerimo koristimo li ispravan projekt:

oc projekt baeldung-demo

I onda prenosimo ConfigMap:

oc create -f openshift / configmap.yml

5. Raspoređivanje

Tijekom postavljanja dodatak Fabric8 Maven pokušava odrediti konfigurirani port. Postojeće primjena.svojstva datoteka u našem primjeru aplikacije koristi izraz za definiranje porta koji dodatak ne može raščlaniti. Stoga moramo komentirati redak:

# server.port = $ {port: 8080}

od struje primjena.svojstva.

Sada smo spremni za implementaciju:

mvn čista tkanina8: implementacija -P openshift 

Napredak implementacije možemo pratiti dok ne vidimo da se naša aplikacija izvodi:

oc dobiti mahune -w

Treba pružiti popis:

NAZIV SPREMNI STATUS RESTARTIRA DOBA baeldung-db-1-9m2cr 1/1 Trčanje 1 1h spring-boot-bootstrap-1-x6wj5 1/1 Trčanje 0 46s 

Prije nego što testiramo aplikaciju, moramo odrediti rutu:

oc dobiti rute

Ispisat će rute u trenutnom projektu:

IME HOST / LUKA PATH USLUGE PRESTANAK LUKE WILDCARD spring-boot-bootstrap spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io spring-boot-bootstrap 8080 Nema 

Sad, provjerimo da li naša aplikacija radi dodavanjem knjige:

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

Očekujući sljedeći izlaz:

HTTP / 1.1 201 {"autor": "Iain M. Banks", "id": 1, "naslov": "Igrač igara"}

6. Skaliranje aplikacije

Skalirajmo implementaciju tako da pokrene 2 instance:

oc razmjera --replicas = 2 dc opruga-boot-bootstrap

Tada možemo koristiti iste korake kao i ranije, da bismo gledali njegovo postavljanje, pronalaženje ruta i testiranje krajnje točke.

Openshift pruža širok raspon opcija za upravljanje izvedbom i skaliranjem izvan opsega ovog članka.

7. Zaključak

U ovom uputstvu mi:

  • Instalirali i konfigurirali razvojne alate Openshift i lokalno okruženje
  • Primijenio MySQL uslugu
  • Stvorio je konfiguraciju ConfigMap i Deployment kako bi pružio svojstva veze baze podataka
  • Izgradio i implementirao spremnik za našu konfiguriranu aplikaciju Spring Boot i
  • Testirao i skalirao aplikaciju.

Za više pojedinosti pogledajte detaljnu dokumentaciju Openshift.

Kompletni izvorni kod naših primjera ovdje je, kao i uvijek, završen na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found