SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

Ez a bejegyzĂ©s azĂ©rt Ă­rĂłdott, mert munkatĂĄrsaink sokat beszĂ©ltek az ĂŒgyfelekkel az alkalmazĂĄsok Kubernetes-en törtĂ©nƑ fejlesztĂ©sĂ©rƑl Ă©s az OpenShift-en valĂł specifikus fejlesztĂ©srƑl.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

ÁltalĂĄban azzal kezdjĂŒk, hogy a Kubernetes egyszerƱen Kubernetes, mĂ­g az OpenShift mĂĄr egy Kubernetes-alapĂș platform, mint pĂ©ldĂĄul a Microsoft AKS vagy az Amazon EKS. Ezeknek a platformoknak megvannak a sajĂĄt elƑnyeik, amelyek egyedi cĂ©lközönsĂ©gre irĂĄnyulnak. EzutĂĄn a beszĂ©lgetĂ©s mĂĄr az egyes platformok erƑssĂ©geinek Ă©s gyengesĂ©geinek összehasonlĂ­tĂĄsĂĄba torkollik.

ÖsszessĂ©gĂ©ben azt gondoltuk, hogy ezt a bejegyzĂ©st egy olyan következtetĂ©ssel zĂĄrjuk, mint: "Figyeljetek, mindegy, hol futtatjĂĄtok a kĂłdot, OpenShift-en vagy AKS-en, EKS-en, bĂĄrmilyen testreszabott Kubernetes-en, akĂĄrmilyen Kubernetes-en" (a rövidsĂ©g kedvéért hĂ­vjuk KUK-nak) – ez tĂ©nyleg egyszerƱ, ott is, Ă©s itt is.

EzutĂĄn terveztĂŒk, hogy egy egyszerƱ "Hello World" pĂ©ldĂĄval megmutatjuk, hogy mi a közös Ă©s mi a kĂŒlönbsĂ©g a KUK Ă©s a Red Hat OpenShift Container Platform (ezutĂĄn OCP vagy egyszerƱen OpenShift) között.

Azonban ennek a bejegyzĂ©snek az Ă­rĂĄsa közben rĂĄjöttĂŒnk, hogy annyira hozzĂĄszoktunk az OpenShift hasznĂĄlatĂĄhoz, hogy egyszerƱen nem tudjuk, mennyire megnƑtt Ă©s mennyire lenyƱgözƑ platform lett, amely mĂĄr jĂłval tĂșl van a pusztĂĄn Kubernetes disztribĂșciĂłn. HozzĂĄszoktunk ahhoz, hogy az OpenShift Ă©rettsĂ©gĂ©t Ă©s egyszerƱsĂ©gĂ©t termĂ©szetesnek vegyĂŒk, figyelmen kĂ­vĂŒl hagyva annak nagyszerƱsĂ©gĂ©t.

ÖsszessĂ©gĂ©ben eljött az aktĂ­v megbĂĄnĂĄs ideje, Ă©s most lĂ©pĂ©srƑl lĂ©pĂ©sre összehasonlĂ­tjuk a "Hello World" bevezetĂ©sĂ©t a KUK-ban Ă©s az OpenShift-en, Ă©s ezt a lehetƑ legobjektĂ­vebben tesszĂŒk (bĂĄr nĂ©ha szemĂ©lyes vĂ©lemĂ©nyĂŒnket is kifejezzĂŒk a tĂ©mĂĄval kapcsolatban). Ha titeket pusztĂĄn szubjektĂ­v vĂ©lemĂ©ny Ă©rdekel errƑl, azt el lehet olvasni itt (EN). Ebben a bejegyzĂ©sben azonban a tĂ©nyekre Ă©s csakis a tĂ©nyekre fogunk összpontosĂ­tani.

Kluster

TehĂĄt a "Hello World"-ĂŒnkhöz szĂŒksĂ©gĂŒnk van klaszterekre. Azonnal elmondjuk, hogy "nem" a nyilvĂĄnos felhƑknek, hogy ne kelljen fizetnĂŒnk a szerverekĂ©rt, tĂĄrolĂłkĂ©rt, hĂĄlĂłzatĂ©rt, adatĂĄtvitelĂ©rt stb. TehĂĄt egy egyszerƱ egycsomĂłpontos klasztert vĂĄlasztunk a Minikube (KUK szĂĄmĂĄra) Ă©s a Code Ready Containers (OpenShift klaszterhez). MindkĂ©t lehetƑsĂ©g valĂłban egyszerƱen telepĂ­thetƑ, de elĂ©g sok erƑforrĂĄst igĂ©nyelnek a laptopodon.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

Build a KUK-en

Nos, lĂĄssuk.

1. lépés - összeållítjuk a konténerszótårunkat

KezdjĂŒk azzal, hogy a "Hello World"-ĂŒnket a minikube-on indĂ­tjuk el. Ehhez szĂŒksĂ©ges:

  1. 1. TelepĂ­tett Docker.
  2. 2. TelepĂ­tett Git.
  3. 3. TelepĂ­tett Maven (tulajdonkĂ©ppen ebben a projektben a mvnw binĂĄris fĂĄjlt hasznĂĄljuk, Ă­gy erre nincs szĂŒksĂ©g).
  4. 4. MagĂĄnak a forrĂĄsnak a klĂłnja, vagyis a repository klĂłnja github.com/gcolman/quarkus-hello-world.git

ElsƑ lĂ©pĂ©skĂ©nt lĂ©tre kell hozni egy Quarkus projektet. Ne ijedjetek meg, ha mĂ©g soha nem dolgoztatok a Quarkus.io webhellyel – ez könnyƱ. Csak vĂĄlasszĂĄtok ki azokat a komponenseket, amelyeket a projektben szeretnĂ©tek hasznĂĄlni (RestEasy, Hibernate, Amazon SQS, Camel stb.), a többit pedig a Quarkus mĂĄr automatikusan, a ti közremƱködĂ©setek nĂ©lkĂŒl beĂĄllĂ­tja, Ă©s mindent feltölt a githubra. TehĂĄt szĂł szerint egy kattintĂĄs – Ă©s kĂ©sz. EzĂ©rt szeretjĂŒk a Quarkust.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

A legegyszerƱbb mĂłdja a „Hello World” kontĂ©nerkĂ©p lĂ©trehozĂĄsĂĄnak, ha a quarkus-maven Docker kiterjesztĂ©st hasznĂĄljuk, amely elvĂ©gzi az összes szĂŒksĂ©ges munkĂĄt. A Quarkus bevezetĂ©sĂ©vel ez valĂłban könnyƱ Ă©s egyszerƱ lett: hozzĂĄadja a container-image-docker kiterjesztĂ©st, Ă©s maven parancsokkal kĂ©pes kĂ©peket lĂ©trehozni.

./mvnw quarkus:add-extension -Dextensions="container-image-docker"

És vĂ©gĂŒl, a Maven segĂ­tsĂ©gĂ©vel összeĂĄllĂ­tjuk a kĂ©pet. Ennek eredmĂ©nyekĂ©nt a forrĂĄskĂłdunk kĂ©sz kontĂ©nerkĂ©ppĂ© alakul, amely mĂĄr futtathatĂł kontĂ©neres környezetben.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

./mvnw -X clean package -Dquarkus.container-image.build=true

Nos, ez igazĂĄbĂłl minden, most elindĂ­thatjuk a kontĂ©nert a docker run paranccsal, illetve ĂĄtirĂĄnyĂ­thatjuk a szolgĂĄltatĂĄsunkat a 8080-as portra, hogy elĂ©rhetƑ legyen.

docker run -i --rm -p 8080:8080 gcolman/quarkus-hello-world

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

MiutĂĄn a kontĂ©ner pĂ©ldĂĄny elindult, csak annyit kell ellenƑrizni a curl parancs segĂ­tsĂ©gĂ©vel, hogy a szolgĂĄltatĂĄs mƱködik-e:

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

Tehåt minden rendben mƱködik, és ez valóban könnyƱ és egyszerƱ volt.

2. lĂ©pĂ©s – elkĂŒldjĂŒk a kontĂ©nert a kontĂ©nerkĂ©pek repository-jĂĄba

A jelenleg lĂ©trehozott kĂ©p helyben van, a helyi kontĂ©ner tĂĄrolĂłnkban. Ha ezt a kĂ©pet szeretnĂ©nk hasznĂĄlni a K8S környezetĂŒnkben, akkor egy mĂĄsik repository-ba kell helyezni. A Kubernetesben nincsenek ilyen funkciĂłk, ezĂ©rt a dockerhub-ot fogjuk hasznĂĄlni. EgyrĂ©szt mert ingyenes, mĂĄsrĂ©szt pedig (majdnem) mindenki ezt csinĂĄlja.

Ez is nagyon egyszerƱ, Ă©s itt csak egy dockerhub fiĂłkra van szĂŒksĂ©g.

TehĂĄt bejelentkezĂŒnk a dockerhub-ra Ă©s feltöltjĂŒk oda a kĂ©pĂŒnket.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

3. lĂ©pĂ©s – elindĂ­tjuk a Kubernetest

SzĂĄmos mĂłdja van a Kubernetes konfigurĂĄciĂł összeĂĄllĂ­tĂĄsĂĄnak a „Hello World” elindĂ­tĂĄsĂĄhoz, de a legegyszerƱbbet fogjuk hasznĂĄlni, hiszen ilyenek vagyunk...

ElƑször indĂ­tsuk el a minikube klasztert:

minikube start

4. lĂ©pĂ©s – telepĂ­tjĂŒk a kontĂ©nerkĂ©pĂŒnket

Most ĂĄt kell alakĂ­tanunk a kĂłdunkat Ă©s a kontĂ©nerkĂ©pĂŒnket Kubernetes konfigurĂĄciĂłvĂĄ. MĂĄs szavakkal, szĂŒksĂ©gĂŒnk van egy podra Ă©s deployment definĂ­ciĂłra, amely hivatkozik a Docker Hub-on lĂ©vƑ kontĂ©nerkĂ©pĂŒnkre. Az egyik legegyszerƱbb mĂłdja ennek az, hogy vĂ©grehajtjuk a create deployment parancsot, megadva a kĂ©pĂŒnket:

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

kubectl create deployment hello-quarkus --image=gcolman/quarkus-hello-world:1.0.0-SNAPSHOT

Ezzel a parancssal azt mondtuk a Kubernetes-nek, hogy hozzon lĂ©tre egy deployment konfigurĂĄciĂłt, amely tartalmazza a pod specifikĂĄciĂłt a kontĂ©nerkĂ©pĂŒnkhöz. Ez a parancs ezt a konfigurĂĄciĂłt a minikube klaszterĂŒnkre is alkalmazza, Ă©s lĂ©trehozza a deploymentet, amely letölti a kontĂ©nerkĂ©pĂŒnket, Ă©s elindĂ­tja a podot a klaszterben.

5. lĂ©pĂ©s – hozzĂĄfĂ©rĂ©s megnyitĂĄsa a szolgĂĄltatĂĄsunkhoz

Most, hogy van egy telepĂ­tett kontĂ©nerkĂ©pĂŒnk, ideje elgondolkodni, hogyan konfigurĂĄljuk a kĂŒlsƑ hozzĂĄfĂ©rĂ©st ehhez a Restful szolgĂĄltatĂĄshoz, amelyet valĂłjĂĄban a kĂłdunkban programoztunk.

Itt sok lehetƑsĂ©g van. PĂ©ldĂĄul hasznĂĄlhatjuk az expose parancsot, hogy automatikusan lĂ©trehozzuk a szĂŒksĂ©ges Kubernetes komponenseket, mint a szolgĂĄltatĂĄsok Ă©s az endpointok. ValĂłjĂĄban Ă­gy fogunk cselekedni, vĂ©grehajtva az expose parancsot a deployment objektumunk szĂĄmĂĄra:

kubectl expose deployment hello-quarkus --type=NodePort --port=8080

Most ĂĄlljunk meg egy pillanatra az expose parancs "--type" opciĂłjĂĄnĂĄl.

Amikor vĂ©grehajtjuk az expose-t, Ă©s lĂ©trehozzuk a szĂŒksĂ©ges komponenseket a szolgĂĄltatĂĄsunk futtatĂĄsĂĄhoz, többek között azt is szeretnĂ©nk, hogy kĂ­vĂŒlrƑl csatlakozhassanak a hello-quarkus szolgĂĄltatĂĄshoz, amely a programozott hĂĄlĂłzatunkon belĂŒl talĂĄlhatĂł. Az type paramĂ©ter lehetƑvĂ© teszi szĂĄmunkra, hogy lĂ©trehozzunk Ă©s csatlakoztassunk olyan dolgokat, mint a terhelĂ©selosztĂłk, hogy irĂĄnyĂ­tsĂĄk a forgalmat erre a hĂĄlĂłzatra.

PĂ©ldĂĄul, ha megadjuk type=LoadBalancer, automatikusan inicializĂĄlunk egy terhelĂ©selosztĂłt a nyilvĂĄnos felhƑben, hogy csatlakozhassunk a Kubernetes klaszterĂŒnkhöz. Ez termĂ©szetesen nagyszerƱ, de fontos megĂ©rteni, hogy az ilyen konfigurĂĄciĂł szorosan a konkrĂ©t nyilvĂĄnos felhƑhöz lesz kötve, Ă©s nehezebben mozgathatĂł mĂĄs Kubernetes pĂ©ldĂĄnyok között kĂŒlönbözƑ környezetekben.

A pĂ©ldĂĄnkban type=NodePort, azaz a szolgĂĄltatĂĄsunkhoz valĂł hozzĂĄfĂ©rĂ©s a csomĂłpont IP-cĂ­mĂ©n Ă©s a portszĂĄmon keresztĂŒl törtĂ©nik. Ez a megoldĂĄs lehetƑvĂ© teszi, hogy ne hasznĂĄljunk nyilvĂĄnos felhƑket, de szĂĄmos tovĂĄbbi lĂ©pĂ©st igĂ©nyel. ElƑször is szĂŒksĂ©g van sajĂĄt terhelĂ©selosztĂłra, ezĂ©rt telepĂ­tĂŒnk egy NGINX terhelĂ©selosztĂłt a klaszterĂŒnkre.

6. lĂ©pĂ©s – telepĂ­tjĂŒk a terhelĂ©selosztĂłt

A minikube szĂĄmos platformspecifikus funkciĂłt kĂ­nĂĄl, amelyek megkönnyĂ­tik a kĂŒlsƑ hozzĂĄfĂ©rĂ©shez szĂŒksĂ©ges összetevƑk, pĂ©ldĂĄul ingress vezĂ©rlƑk lĂ©trehozĂĄsĂĄt. A minikube ingyenes ingress vezĂ©rlƑt tartalmaz, nekĂŒnk csupĂĄn be kell kapcsolnunk Ă©s konfigurĂĄlnunk kell.

minikube addons enable ingress

Most egy parancssal lĂ©trehozzuk az Nginx ingress vezĂ©rlƑt, amely a minikube klaszterĂŒnkben fog mƱködni:

ingress-nginx-controller-69ccf5d9d8-j5gs9 1/1 Running 1 33m

7. lĂ©pĂ©s – konfigurĂĄljuk az ingress-t

Most be kell ĂĄllĂ­tanunk az Nginx ingress vezĂ©rlƑt, hogy az Ă©szlelje a hello-quarkus kĂ©rĂ©seket.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

És vĂ©gĂŒl alkalmaznunk kell ezt a konfigurĂĄciĂłt.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

kubectl apply -f ingress.yml

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

Mivel mindezt a sajĂĄt gĂ©pĂŒnkön vĂ©gezzĂŒk, egyszerƱen hozzĂĄadjuk a csomĂłpontunk IP-cĂ­mĂ©t a /etc/hosts fĂĄjlhoz, hogy az http-kĂ©rĂ©sek a minikube-unkat az NGINX terhelĂ©selosztĂłra irĂĄnyĂ­tsĂĄk.

192.168.99.100 hello-quarkus.info

KĂ©sz, most a minikube szolgĂĄltatĂĄsunk kĂŒlsƑleg elĂ©rhetƑ az Nginx ingress vezĂ©rlƑn keresztĂŒl.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

Na, ez könnyƱ volt, nem? Vagy nem olyan könnyƱ?

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

FuttatĂĄs OpenShift-en (Code Ready Containers)

Most nĂ©zzĂŒk meg, hogyan mƱködik mindez a Red Hat OpenShift Container Platform (OCP) alatt.

A minikube esetĂ©hez hasonlĂłan itt is egy egycsomĂłpontos OpenShift klaszteres sĂ©mĂĄt vĂĄlasztunk, amely Code Ready Containers (CRC) formĂĄjĂĄban lĂ©tezik. KorĂĄbban ezt minishiftnek hĂ­vtĂĄk, a OpenShift Origin projektre Ă©pĂŒlt, most pedig CRC-kĂ©nt ismert, Ă©s a Red Hat OpenShift Container Platformon alapul.

Itt elnĂ©zĂ©st kĂ©rĂŒnk, de nem tudjuk megĂĄllni, hogy ne mondjuk: "OpenShift csodĂĄlatos!"

Kezdetben azt akartuk Ă­rni, hogy az OpenShift környezetĂ©ben vĂ©gzett fejlesztĂ©s nem kĂŒlönbözik a Kubernetes-szel vĂ©gzett fejlesztĂ©stƑl. ValĂłjĂĄban Ă­gy is van. De ennek a posztnak az Ă­rĂĄsa közben eszĂŒnkbe jutott, hogy mennyi felesleges lĂ©pĂ©st kell megtenni, ha nincs OpenShift, Ă©s ezĂ©rt azt mondjuk, hogy csodĂĄlatos. SzeretjĂŒk, ha minden könnyen mƱködik, Ă©s hogy mennyivel könnyebb az OpenShift alatt mƱködtetni Ă©s elindĂ­tani a pĂ©ldĂĄnkat a minikube-hoz kĂ©pest, valĂłjĂĄban ösztönözte minket, hogy megĂ­rjuk ezt a posztot.

NĂ©zzĂŒk ĂĄt a folyamatot, Ă©s nĂ©zzĂŒk meg, hogy mit kell tennĂŒnk.

TehĂĄt a minikube pĂ©ldĂĄn keresztĂŒl a Dockerrel kezdtĂŒk... Álljon meg, most mĂĄr nincs szĂŒksĂ©gĂŒnk arra, hogy a gĂ©pen telepĂ­tve legyen a Docker.

És helyi git-re nincs szĂŒksĂ©gĂŒnk.
És Mavenre sincs szĂŒksĂ©g.
És nem kell manuĂĄlisan lĂ©trehozni a kontĂ©nerkĂ©pet.
És nem kell kontĂ©nerkĂ©p-tĂĄrakat keresnĂŒnk.
És ingress-vezĂ©rlƑt sem kell telepĂ­tenĂŒnk.
És ingress-t is konfigurálni sem kell.

Értetted, igaz? Az OpenShift-en valĂł alkalmazĂĄsunk telepĂ­tĂ©sĂ©hez Ă©s elindĂ­tĂĄsĂĄhoz nincs szĂŒksĂ©gĂŒnk semmi többre a fentiekbƑl. A folyamat azonban a következƑkĂ©ppen nĂ©z ki.

1. lĂ©pĂ©s – ElindĂ­tjuk a sajĂĄt OpenShift klaszterĂŒnket

A Red Hat Code Ready Containers-t hasznåljuk, ami lényegében ugyanaz, mint a Minikube, de egy teljes értékƱ egycsomópontos OpenShift klaszterrel.

crc start

2. lĂ©pĂ©s – Az alkalmazĂĄs Ă©pĂ­tĂ©se Ă©s telepĂ­tĂ©se az OpenShift klaszterbe

Ezen a lĂ©pĂ©sen bontakozik ki legjobban az OpenShift egyszerƱsĂ©ge Ă©s kĂ©nyelme. Mint minden Kubernetes disztribĂșciĂłban, itt is sok mĂłdja van az alkalmazĂĄs indĂ­tĂĄsĂĄnak a klaszterben. És mint a KĂșknĂĄl, most is szĂĄndĂ©kosan a legegyszerƱbbet vĂĄlasztjuk.

Az OpenShift mindig is olyan platformkĂ©nt Ă©pĂŒlt, amely kontĂ©neralapĂș alkalmazĂĄsok lĂ©trehozĂĄsĂĄra Ă©s futtatĂĄsĂĄra szolgĂĄl. A kontĂ©nerek Ă©pĂ­tĂ©se mindig is a platform elengedhetetlen rĂ©szĂ©t kĂ©pezte, ezĂ©rt itt rengeteg tovĂĄbbi Kubernetes erƑforrĂĄs ĂĄll rendelkezĂ©sre ezekhez a feladatokhoz.

Az OpenShift S2I (Source 2 Image) folyamatĂĄt fogjuk hasznĂĄlni, amelynek több kĂŒlönbözƑ mĂłdja van annak, hogy a forrĂĄsĂĄllomĂĄnyunkat (kĂłd vagy binĂĄris fĂĄjlok) kontĂ©nerkĂ©ppĂ© alakĂ­tsuk, amely az OpenShift klaszterben futhat.

Ehhez kĂ©t dologra van szĂŒksĂ©gĂŒnk:

  • ForrĂĄskĂłdunk egy git tĂĄrhelyen
  • A builder-kĂ©p, amely alapjĂĄn az Ă©pĂ­tĂ©s fog törtĂ©nni.

Szåmos ilyen kép létezik, amelyeket mind a Red Hat tåmogat, mind a közösségi szinten, és mi az OpenJDK képet fogjuk hasznålni, mivel Java alkalmazåst építek.

Az S2I építést elindíthatjuk az OpenShift Developer grafikus konzoljåból vagy parancssorból is. Mi az new-app parancsot fogjuk hasznålni, megadva neki, honnan vegye a builder-képet és a forråskódunkat.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

oc new-app registry.access.redhat.com/ubi8/openjdk-11:latest~https://github.com/gcolman/quarkus-hello-world.git

KĂ©sz, az alkalmazĂĄsunk lĂ©trejött. Az S2I folyamat sorĂĄn a következƑket vĂ©gezte el:

  • LĂ©trehozott egy build-podot az alkalmazĂĄs Ă©pĂ­tĂ©sĂ©vel kapcsolatos feladatokhoz.
  • LĂ©trehozott egy OpenShift Build konfigurĂĄciĂłt.
  • Letöltötte a builder-kĂ©pet az OpenShift belsƑ docker-regisztrĂĄlĂłjĂĄba.
  • A 'Hello World' projektet klĂłnozta a helyi tĂĄrhelyĂŒnkre.
  • LĂĄttam, hogy van maven pom, ezĂ©rt a maven segĂ­tsĂ©gĂ©vel lefordĂ­tottam az alkalmazĂĄst.
  • LĂ©trehoztam egy Ășj kontĂ©nerkĂ©pet, ami a lefordĂ­tott Java alkalmazĂĄst tartalmazza, Ă©s ezt a kĂ©pet elhelyeztem a belsƑ kontĂ©nerregiszterben.
  • KĂ©szĂ­tettem egy Kubernetes Deployment-et pod, szolgĂĄltatĂĄs stb. specifikĂĄciĂłkkal.
  • ElindĂ­tottam a kontĂ©nerkĂ©p deployĂĄlĂĄsĂĄt.
  • Töröltem a build-pod szolgĂĄltatĂĄst.

Ebben a listĂĄban sok minden szerepel, de a lĂ©nyeg, hogy az egĂ©sz build kifejezetten az OpenShift belsejĂ©ben zajlik, a belsƑ Docker-regiszter is itt talĂĄlhatĂł, Ă©s a build folyamata lĂ©trehozza az összes Kubernetes komponenst Ă©s elindĂ­tja Ƒket a klaszterben.

Ha vizuĂĄlisan nyomon követjĂŒk az S2I indĂ­tĂĄsĂĄt a konzolban, lĂĄthatjuk, hogy a build pod elindulĂĄsa közben hogyan fut le a build.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

Most nĂ©zzĂŒk meg a builder pod naplĂłit: elƑször is, lĂĄthatĂł, hogy a maven hogyan vĂ©gzi a munkĂĄjĂĄt Ă©s tölti le a fĂŒggƑsĂ©geket a Java alkalmazĂĄsunk buildelĂ©sĂ©hez.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

MiutĂĄn befejezƑdött a maven build, elindul a kontĂ©nerkĂ©p build folyamata, majd ez a lĂ©trehozott kĂ©p elkĂŒldĂ©sre kerĂŒl a belsƑ tĂĄrolĂłba.

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

KĂ©sz, a build folyamata befejezƑdött. Most ellenƑrizzĂŒk, hogy a klaszterben elindultak a podok Ă©s a szolgĂĄltatĂĄsok a mi alkalmazĂĄsunk szĂĄmĂĄra.

oc get service

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

Ennyi, Ă©s mindez egyetlen parancs. MĂĄr csak annyit kell tennĂŒnk, hogy kiadjuk ennek a szolgĂĄltatĂĄsnak a kitettsĂ©gĂ©t a kĂŒlsƑ hozzĂĄfĂ©rĂ©s Ă©rdekĂ©ben.

3. lĂ©pĂ©s – a szolgĂĄltatĂĄs kitettsĂ©ge kĂŒlsƑ hozzĂĄfĂ©rĂ©s Ă©rdekĂ©ben

Ahogy a KUK esetĂ©ben, az OpenShift platformon a mi 'Hello World'-ĂŒnkhöz is szĂŒksĂ©g van egy routerre, hogy a kĂŒlsƑ forgalmat irĂĄnyĂ­tani tudja a klaszter belsƑ szolgĂĄltatĂĄsĂĄra. Az OpenShift ezt nagyon egyszerƱvĂ© teszi. ElƑször is, a klaszterben alapĂ©rtelmezetten telepĂ­tve van a HAProxy router komponens (amit ĂĄt lehet cserĂ©lni ugyanarra NGINX-re). MĂĄsodszor, itt vannak a speciĂĄlis Ă©s szĂ©leskörben konfigurĂĄlhatĂł erƑforrĂĄsok, amelyeket Route-nak hĂ­vnak, Ă©s hasonlĂ­tanak a rĂ©gi jĂł Kubernetes Ingress objektumokra (valĂłjĂĄban az OpenShift Route-ok jelentƑsen befolyĂĄsoltĂĄk az Ingress objektumok tervezĂ©sĂ©t, amelyeket most mĂĄr OpenShift-ben is lehet hasznĂĄlni), de a mi 'Hello World'-ĂŒnkhöz, Ă©s szinte minden mĂĄs esetben elegendƑ lesz a standard Route kiegĂ©szĂ­tƑ beĂĄllĂ­tĂĄs nĂ©lkĂŒl.

Ahhoz, hogy lĂ©trehozzunk egy ĂștvĂĄlasztott FQDN-t a 'Hello World' szĂĄmĂĄra (igen, OpenShift-ben van DNS az szolgĂĄltatĂĄsneveken törtĂ©nƑ ĂștvĂĄlasztĂĄshoz), egyszerƱen vĂ©grehajtjuk a szolgĂĄltatĂĄsunk kitettsĂ©gĂ©t:

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

oc expose service quarkus-hello-world

Ha megnĂ©zzĂŒk az Ă©ppen lĂ©trehozott Route-ot, akkor ott talĂĄlunk FQDN-t Ă©s egyĂ©b ĂștvĂĄlasztĂĄsi informĂĄciĂłkat:

oc get route

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

VĂ©gĂŒl pedig megkeressĂŒk a szolgĂĄltatĂĄsunkat a böngĂ©szƑbƑl:

SajnĂĄlom, OpenShift, nem Ă©rtĂ©keltĂŒnk elĂ©ggĂ© tĂ©ged, Ă©s termĂ©szetesnek vettĂŒnk.

Most mår ez tényleg könnyƱ volt!

SzeretjĂŒk a Kubernetes-t Ă©s mindazt, amit ez a technolĂłgia lehetƑvĂ© tesz, valamint a egyszerƱsĂ©get Ă©s könnyedsĂ©get. A Kubernetes-t Ășgy fejlesztettĂ©k ki, hogy hihetetlenĂŒl megkönnyĂ­tse a felosztott, skĂĄlĂĄzhatĂł kontĂ©nerek ĂŒzemeltetĂ©sĂ©t, de ma mĂĄr nem elĂ©g egyszerƱ az alkalmazĂĄsok ĂŒzembe helyezĂ©sĂ©hez. Itt lĂ©p szĂ­nre az OpenShift, amely lĂ©pĂ©st tart a korral, Ă©s a Kubernetes-t elsƑsorban a fejlesztƑk szĂĄmĂĄra optimalizĂĄlja. Rengeteg energiĂĄt fektettek az OpenShift platform kifejlesztĂ©sĂ©be a fejlesztƑk igĂ©nyeinek megfelelƑen, beleĂ©rtve olyan eszközök lĂ©trehozĂĄsĂĄt, mint az S2I, ODI, FejlesztƑi PortĂĄl, OpenShift Operator Framework, IDE integrĂĄciĂł, FejlesztƑi KatalĂłgusok, Helm integrĂĄciĂł, monitoring Ă©s sok mĂĄs.

RemĂ©ljĂŒk, hogy ez a cikk Ă©rdekes Ă©s hasznos volt az Ön szĂĄmĂĄra. TovĂĄbbi forrĂĄsokat, anyagokat Ă©s egyĂ©b hasznos informĂĄciĂłkat a fejlesztĂ©shez az OpenShift platformon a következƑ portĂĄlon talĂĄlhatja: Red Hat Developers.

ForrĂĄs: habr.com

MegbĂ­zhatĂł hosting vĂĄsĂĄrlĂĄsa weboldalak szĂĄmĂĄra, DDoS vĂ©delemmel, VPS VDS szerverek. đŸ”„ MegbĂ­zhatĂł webtĂĄrhely vĂĄsĂĄrlĂĄsa DDoS vĂ©delemmel, VPS VDS szerverek | ProHoster