Distribuere en Spring Boot-applikasjon til OpenShift

1. Oversikt

I denne opplæringen viser vi hvordan du distribuerer et program fra vår Bootstrap en enkel applikasjon ved hjelp av Spring Boot-opplæringen til Openshift.

Som en del av dette vil vi:

  • Installer og konfigurer Openshift utviklingsverktøy.
  • Lag et Openshift-prosjekt og distribusjon av MySQL.
  • Konfigurer applikasjonen for Spring Cloud Kubernetes.
  • Opprett og distribuer applikasjonen i en container ved hjelp av Fabric8 Maven-pluginet, og test og skaler applikasjonen.

2. Åpner Skiftkonfigurasjon

Først, vi trenger å installere Minishift, den lokale Openhift-klyngen med én node og Openshift-klienten.

Før vi bruker Minishift, må vi konfigurere tillatelser for utviklerbrukeren:

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

Nå vil vi bruke Openshift Console til å lage en MySQL-tjeneste. Vi kan starte nettleserens URL ved å bruke:

minishift-konsoll

Hvis du ikke er logget på automatisk, bruk utvikler / utvikler.

Lag et prosjekt som heter baeldung-demo og opprett deretter en MySQL-databasetjeneste fra katalogen. Gi baeldung-db for databasetjenesten, baeldung_db for MySQL-databasenavnet, og la de andre verdiene stå som standard.

Vi har nå en tjeneste og hemmeligheter for tilgang til databasen. Legg merke til url for databasetilkobling: mysql: // baeldung-db: 3306 / baeldung_db

Vi må også tillate applikasjoner å lese konfigurasjoner som Kubernetes Secrets og ConfigMaps:

oc opprett rollebinding standardvisning --clusterrole = visning \ --serviceaccount = baeldung-demo: standard --namespace = baeldung-demo

3. Spring Cloud Kubernetes Avhengigheter

Vi bruker Spring Cloud Kubernetes-prosjektet for å aktivere de sky-native APIene for Kubernetes som understøtter Openshift:

 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 

Vi bruker også Plug8 Maven-plugin for å bygge og distribuere containeren:

 io.fabric8 fabric8-maven-plugin 3.5.37 fmp ressursbygging 

4. Programkonfigurasjon

Vi må gi konfigurasjon for å sikre at riktige vårprofiler og Kubernetes-hemmeligheter injiseres som miljøvariabler.

La oss lage et YAML-fragment i src / main / fabric8 slik at Fabric8 Maven-pluginet vil bruke det når du oppretter distribusjonskonfigurasjonen.

Vi må også legge til en del for Spring Boot-aktuatoren siden standard i Fabric8 fortsatt prøver å få tilgang /Helse i stedet for / aktuator / helse:

spec: mal: spec: containere: - env: - navn: SPRING_PROFILES_ACTIVE verdi: mysql - navn: SPRING_DATASOURCE_USER valueFrom: secretKeyRef: navn: baeldung-db nøkkel: database-bruker - navn: SPRING_DATASOURCE_PASSWORD-verdiFrom: secretKeyRef: dB : database-password passivitetProbe: httpGet: sti: / aktuator / helseport: 8080 ordning: HTTP initialDelaySeconds: 180 beredskap Probe: httpGet: sti: / actuator / health port: 8080 ordning: HTTP initialDelaySeconds: 30

Neste, vi sparer en ConfigMap i openshift / configmap.yml, dette inneholder dataene for en application.properties med MySQL URL:

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

Før vi kommuniserer med Openshift ved hjelp av kommandolinjeklienten, må vi logge på. Øverst til høyre på nettkonsollen er det et brukerikon der vi kan velge rullegardinmenyen merket "Kopier innloggingskommando". Bruk deretter i et skall:

oc pålogging //192.168.42.122:8443 --token =

La oss sørge for at vi bruker riktig prosjekt:

oc prosjekt baeldung-demo

Og så vi laster opp ConfigMap:

oc opprett -f openshift / configmap.yml

5. Implementering

Under distribusjonen prøver Fabric8 Maven-pluginet å bestemme den konfigurerte porten. Den eksisterende application.properties filen i eksempelprogrammet vårt bruker et uttrykk for å definere porten, som ikke pluginet kan analysere. Derfor må vi kommentere linjen:

# server.port = $ {port: 8080}

fra gjeldende application.properties.

Vi er nå klare for distribusjon:

mvn clean fabric8: deploy -P openshift 

Vi kan se distribusjonen frem til vi ser at applikasjonen vår kjører:

oc få pods -w

Bør gi en liste:

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

Før vi tester søknaden, må vi bestemme ruten:

oc få ruter

Skriver ut rutene i det aktuelle prosjektet:

NAVN 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 

La oss nå bekrefte at applikasjonen vår fungerer ved å legge til en bok:

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

Forventer følgende utgang:

HTTP / 1.1 201 {"author": "Iain M. Banks", "id": 1, "title": "Spilleren av spill"}

6. Skalering av applikasjonen

La oss skalere distribusjonen til å kjøre to forekomster:

oc skala - replikker = 2 dc spring-boot-bootstrap

Og vi kan bruke de samme trinnene som tidligere, for å se hvordan den distribueres, få rutene og teste sluttpunktet.

Openshift gir et bredt spekter av alternativer for styring av ytelse og skalering utenfor omfanget av denne artikkelen.

7. Konklusjon

I denne opplæringen:

  • Installert og konfigurert Openshift utviklingsverktøy og nærmiljø
  • Implementerte en MySQL-tjeneste
  • Opprettet en ConfigMap- og Deployment-konfigurasjon for å gi egenskaper for databasetilkobling
  • Bygget og distribuert en container for vår konfigurerte Spring Boot-applikasjon, og
  • Testet og skalert applikasjonen.

For mer informasjon, sjekk ut detaljert Openshift-dokumentasjon.

Den komplette kildekoden til eksemplene våre her er som alltid over på GitHub.


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