Implementere en Spring Boot-applikation til OpenShift

1. Oversigt

I denne vejledning viser vi, hvordan du implementerer en applikation fra vores Bootstrap en simpel applikation ved hjælp af Spring Boot-tutorial til Openshift.

Som en del af dette vil vi:

  • Installer og konfigurer Openshift-udviklingsværktøjer.
  • Opret et Openshift-projekt og MySQL-implementering.
  • Konfigurer applikationen til Spring Cloud Kubernetes.
  • Opret og implementer applikationen i en container ved hjælp af Fabric8 Maven-pluginet, og test og skaler applikationen.

2. Åbner Skiftkonfiguration

Først, vi skal installere Minishift, den lokale Openshift-klynge med en enkelt node og Openshift-klienten.

Før vi bruger Minishift, skal vi konfigurere tilladelser til udviklerbrugeren:

minishift addons installation --defaults minishift addons aktiver admin-bruger minishift start oc adm politik --as system: admin add-cluster-role-to-user cluster-admin developer

Nu vil vi bruge Openshift Console til at oprette en MySQL-tjeneste. Vi kan starte browserens URL ved hjælp af:

minishift konsol

Hvis du ikke er logget ind automatisk, skal du bruge udvikler / udvikler.

Opret et projekt med navnet baeldung-demo og derefter oprette en MySQL-databasetjeneste fra kataloget. Giv baeldung-db til databasetjenesten, baeldung_db til MySQL-databasenavn, og lad de andre værdier være som standard.

Vi har nu en service og hemmeligheder for adgang til databasen. Vær opmærksom på URL'en til databaseforbindelsen: mysql: // baeldung-db: 3306 / baeldung_db

Vi er også nødt til at tillade applikationer at læse konfiguration som Kubernetes Secrets og ConfigMaps:

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

3. Spring Cloud Kubernetes afhængigheder

Vi bruger Spring Cloud Kubernetes-projektet til at aktivere de cloud-native API'er til Kubernetes, der 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 bruger også Fabric8 Maven-pluginet til at opbygge og implementere containeren:

 io.fabric8 fabric8-maven-plugin 3.5.37 fmp ressourceopbygning 

4. Konfiguration af applikation

Nu Vi er nødt til at give konfiguration for at sikre, at de korrekte Spring Profiles og Kubernetes Secrets injiceres som miljøvariabler.

Lad os oprette et YAML-fragment i src / main / fabric8 så at Fabric8 Maven-pluginet bruger det, når du opretter implementeringskonfigurationen.

Vi skal også tilføje et afsnit til Spring Boot-aktuatoren, da standard i Fabric8 stadig forsøger at få adgang /sundhed i stedet for / aktuator / sundhed:

spec: skabelon: spec: containere: - env: - navn: SPRING_PROFILES_ACTIVE værdi: mysql - navn: SPRING_DATASOURCE_USER værdiFrom: secretKeyRef: navn: baeldung-db nøgle: database-bruger - navn: SPRING_DATASOURCE_PASSWORD-værdiFrom: secretKeyRef: dk : database-adgangskode levetidProbe: httpGet: sti: / aktuator / sundhedsport: 8080-ordning: HTTP initialDelaySeconds: 180 parathedProbe: httpGet: sti: / actuator / health-port: 8080-ordning: HTTP initialDelaySeconds: 30

Næste, vi gemmer en ConfigMap i openshift / configmap.yml, dette indeholder data 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 interagerer med Openshift ved hjælp af kommandolinjeklienten, skal vi logge ind. Øverst til højre på webkonsollen er der et brugerikon, hvorfra vi kan vælge rullemenuen mærket "Copy Login Command". Brug derefter i en skal:

oc login //192.168.42.122:8443 --token =

Lad os sikre os, at vi bruger det rigtige projekt:

oc projekt baeldung-demo

Og så vi uploader ConfigMap:

oc create -f openshift / configmap.yml

5. Implementering

Under implementeringen forsøger Fabric8 Maven-pluginet at bestemme den konfigurerede port. Det eksisterende application.properties -fil i vores eksempelapplikation bruger et udtryk til at definere porten, som plugin'et ikke kan analysere. Derfor er vi nødt til at kommentere linjen:

# server.port = $ {port: 8080}

fra den nuværende application.properties.

Vi er nu klar til implementering:

mvn clean fabric8: deploy -P openshift 

Vi kan se implementeringsfremskridt, indtil vi ser vores applikation køre:

oc få pods -w

Bør give en liste:

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

Før vi tester applikationen, skal vi bestemme ruten:

oc få ruter

Udskriver ruterne i det aktuelle projekt:

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 

Lad os nu kontrollere, at vores ansøgning fungerer ved at tilføje en bog:

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

Forventer følgende output:

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

6. Skalering af applikationen

Lad os skalere implementeringen til at køre 2 forekomster:

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

Og vi kan bruge de samme trin som tidligere, så for at se det implementere, få ruterne og teste slutpunktet.

Openshift indeholder en bred vifte af muligheder for styring af ydeevne og skalering uden for denne artikels anvendelsesområde.

7. Konklusion

I denne vejledning, vi:

  • Installeret og konfigureret Openshift-udviklingsværktøjerne og det lokale miljø
  • Implementeret en MySQL-tjeneste
  • Oprettet en ConfigMap- og Deployment-konfiguration til at levere egenskaber til databaseforbindelser
  • Bygget og implementeret en container til vores konfigurerede Spring Boot-applikation, og
  • Testet og skaleret applikationen.

For flere detaljer, se den detaljerede Openshift-dokumentation.

Den komplette kildekode for vores eksempler her er som altid forbi på GitHub.


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