Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Lokhu okuthunyelwe kubhalwe ngoba abasebenzi bethu babe nezingxoxo eziningi namakhasimende mayelana nokuthuthukiswa kwesicelo ku-Kubernetes kanye nemininingwane yentuthuko enjalo ku-OpenShift.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Sivame ukuqala ngethisisi yokuthi i-Kubernetes imane iyi-Kubernetes, futhi i-OpenShift isivele iyinkundla ye-Kubernetes, njenge-Microsoft AKS noma i-Amazon EKS. Ngayinye yalezi zinkundla inezinzuzo zayo, ezihloselwe izethameli ezithile eziqondiwe. Futhi emva kwalokhu, ingxoxo iphendukela ekuqhathaniseni amandla nobuthakathaka bezinkundla ezithile.

Ngokuvamile, sicabange ukubhala lokhu okuthunyelwe ngesiphetho esinjengokuthi “Lalela, akunandaba ukuthi ikhodi siyisebenzise kuphi, ku-OpenShift noma ku-AKS, ku-EKS, kuma-Kubernetes angokwezifiso, noma kunoma iyiphi i-Kubernetes. (ngokufushane masiyibize ngokuthi KUK) "Kulula impela, lapho nalaphaya."

Sabe sesihlela ukuthatha “Sawubona Umhlaba” olula futhi sisebenzise isibonelo sawo ukuze sibonise ukuthi yini evamile nokuthi uyini umehluko phakathi kwe-KUC ne-Red Hat OpenShift Container Platform (ngemuva kwalokhu, i-OCP noma i-OpenShift nje).

Kodwa-ke, njengoba sibhala lokhu okuthunyelwe, saqaphela ukuthi sasijwayele ukusebenzisa i-OpenShift isikhathi eside kangangokuthi asizange siqaphele ukuthi ikhule kanjani futhi yaphenduka isiteji esimangalisayo esibe ngaphezu kokusatshalaliswa kwe-Kubernetes. Sivame ukukuthatha kalula ukuvuthwa nobulula be-OpenShift, futhi silahlekelwe umbono wobuhlakani bayo.

Sekukonke, isikhathi sesifikile sokuphenduka okusebenzayo, futhi manje sizoqhathanisa nesinyathelo ngesinyathelo ukuthunyelwa kwe-"Hello World" yethu ku-KUK naku-OpenShift, futhi sizokwenza lokhu ngobuqotho ngangokunokwenzeka (kahle, ngaphandle kokuthi ngezinye izikhathi sibonise isimo sengqondo somuntu ngesihloko). Uma unentshisekelo yombono ozimele ngalolu daba, ungawufunda lapha (EN). Futhi kulokhu okuthunyelwe sizonamathela emaqinisweni kanye namaqiniso kuphela.

Amaqoqo

Ngakho, "Sawubona Umhlaba" wethu udinga amaqoqo. Ngokushesha sizothi "cha" kunoma imaphi amafu omphakathi, ukuze singakhokheli amaseva, amarejistri, amanethiwekhi, ukudluliswa kwedatha, njll. Ngokuvumelana nalokho, sikhetha iqoqo elilula lenodi eyodwa livuliwe Minikube (ye-KUK) kanye Iziqukathi Zekhodi Ezilungele (yeqoqo le-OpenShift). Zombili lezi zinketho zilula ngempela ukuzifaka, kodwa zizodinga izinsiza eziningi kukhompyutha yakho ephathekayo.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Umhlangano ku-KUK-e

Ake sihambe.

Isinyathelo 1 - ukwakha isithombe sethu sesitsha

Ake siqale ngokuthumela “Sawubona Umhlaba” wethu ku-minikube. Ukuze wenze lokhu uzodinga:

  1. 1. I-Docker ifakiwe.
  2. 2. I-Git ifakiwe.
  3. 3. Kufakiwe i-Maven (empeleni, le phrojekthi isebenzisa kanambambili ye-mvnw, ukuze ukwazi ukwenza ngaphandle kwayo).
  4. 4. Empeleni, umthombo ngokwawo, i.e. i-repository clone github.com/gcolman/quarkus-hello-world.git

Isinyathelo sokuqala ukwakha iphrojekthi ye-Quarkus. Ungethuki uma ungakaze usebenze ne-Quarkus.io - kulula. Uvele ukhethe izakhi ofuna ukuzisebenzisa kuphrojekthi (RestEasy, Hibernate, Amazon SQS, Camel, njll.), bese iQuarkus ngokwayo, ngaphandle kokubamba iqhaza kwakho, ilungiselela i-maven archetype futhi ibeka yonke into ku-github. Okusho ukuthi, ngokuchofoza okukodwa kwegundane futhi usuqedile. Yingakho sithanda i-Quarkus.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Indlela elula yokwakha "Sawubona Umhlaba" wethu esithombeni sesitsha ukusebenzisa izandiso ze-quarkus-maven ze-Docker, ezizokwenza wonke umsebenzi odingekayo. Ngokufika kwe-Quarkus, lokhu sekulula futhi kulula ngempela: engeza isandiso se-container-image-docker futhi ungakha izithombe usebenzisa imiyalo ye-maven.

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

Ekugcineni, sakha isithombe sethu sisebenzisa iMaven. Ngenxa yalokho, ikhodi yethu yomthombo iphenduka ibe isithombe sesiqukathi esenziwe ngomumo esingase sisetshenziswe kakade endaweni yesikhathi sokusebenza sesiqukathi.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

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

Yilokho kuphela, manje ungaqala isitsha ngomyalo we-docker run, udwebe insizakalo yethu ku-port 8080 ukuze ifinyeleleke.

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

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Ngemuva kokuthi isigameko sesitsha sesiqalile, okusele nje ukuhlola umyalo we-curl ukuthi isevisi yethu iyasebenza:

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Ngakho konke kuyasebenza futhi kwakulula futhi kulula ngempela.

Isinyathelo sesi-2 - thumela isitsha sethu endaweni yokugcina izithombe

Okwamanje, isithombe esisidalile sigcinwa endaweni, endaweni yethu yokugcina iziqukathi. Uma sifuna ukusebenzisa lesi sithombe endaweni yethu ye-COOK, kufanele sibekwe kwenye indawo yokugcina. I-Kubernetes ayinazo izici ezinjalo, ngakho-ke sizosebenzisa i-dockerhub. Ngoba, okokuqala, kumahhala, futhi okwesibili, (cishe) wonke umuntu uyakwenza.

Lokhu futhi kulula kakhulu, futhi okudingayo i-akhawunti ye-dockerhub.

Ngakho-ke, sifaka i-dockerhub futhi sithumela isithombe sethu lapho.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Isinyathelo sesi-3 - vula i-Kubernetes

Kunezindlela eziningi zokuhlanganisa ukucushwa kwe-kubernetes ukusebenzisa i-"Hello World", kodwa sizosebenzisa elula kunazo zonke, yileyo ndlela esiyiyo...

Okokuqala, ake sethule iqoqo le-minikube:

minikube start

Isinyathelo sesi-4 - sebenzisa isithombe sethu sesitsha

Manje sidinga ukuguqula ikhodi yethu nesithombe sesitsha sibe ukucushwa kwe-kubernetes. Ngamanye amazwi, sidinga i-pod nencazelo yokusebenzisa ekhomba isithombe sethu sesitsha ku-dockerhub. Enye yezindlela ezilula zokwenza lokhu ukusebenzisa umyalo wokudala wokuthunyelwa okhomba isithombe sethu:

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

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

Ngalo myalo sitshele i-COO yethu ukuthi yenze ukucushwa kokuthunyelwa, okufanele kuqukathe ukucaciswa kwe-pod yesithombe sethu sesitsha. Lo myalo uzophinda usebenzise lokhu kulungiselelwa kuqoqo lethu le-minikube, futhi udale ukuthunyelwa okuzolanda isithombe sethu sesitsha bese kwethula i-pod kuqoqo.

Isinyathelo sesi-5 - vula ukufinyelela kusevisi yethu

Manje njengoba sinesithombe sesitsha esisetshenzisiwe, sekuyisikhathi sokucabanga ngendlela yokulungisa ukufinyelela kwangaphandle kule sevisi ye-Restful, okuyinto, empeleni, ehlelwe kukhodi yethu.

Kunezindlela eziningi lapha. Isibonelo, ungasebenzisa umyalo wokudalula ukuze udale ngokuzenzakalelayo izingxenye ezifanele ze-Kubernetes, njengezinkonzo namaphoyinti okugcina. Empeleni, nakhu esizokwenza ngokukhipha umyalo wokudalula wento yethu yokuthunyelwa:

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

Ake sithathe isikhashana sibheke inketho ethi "-type" yomyalo wokudalula.

Uma sidalula futhi sidala izingxenye ezidingekayo ukuze siqhube insizakalo yethu, thina, phakathi kwezinye izinto, sidinga ukwazi ukuxhuma kusuka ngaphandle siye kusevisi ye-hello-quarkus, ehlala ngaphakathi kwenethiwekhi yethu echazwe ngesofthiwe. Futhi ipharamitha uhlobo kusivumela ukuthi sidale futhi sixhume izinto ezifana nezilinganisi zokulayisha umzila wethrafikhi kule nethiwekhi.

Ngokwesibonelo, ngokubhala type=LoadBalancer, sihlinzeka ngokuzenzakalelayo isilinganisi somthwalo efwini lomphakathi ukuze sixhume kuqoqo lethu le-Kubernetes. Lokhu, vele, kuhle, kodwa udinga ukuqonda ukuthi ukumisa okunjalo kuzoboshelwa ngokuqinile efwini elithile lomphakathi futhi kuzoba nzima kakhulu ukudlulisa phakathi kwezimo ze-Kubernetes ezindaweni ezahlukene.

Esibonelweni sethu type=NodePort, okungukuthi, isevisi yethu ifinyelelwa ngekheli le-IP lenodi kanye nenombolo yembobo. Le nketho ikuvumela ukuthi ungasebenzisi noma yimaphi amafu omphakathi, kodwa idinga izinyathelo ezengeziwe ezengeziwe. Okokuqala, udinga ibhalansi yakho yomthwalo, ngakho-ke sizothumela ibhalansi yomthwalo we-NGINX kuqoqo lethu.

Isinyathelo sesi-6 - faka isilinganisi somthwalo

I-minikube inenombolo yemisebenzi yesikhulumi eyenza kube lula ukwakha izingxenye ezifinyeleleka ngaphandle, njengezilawuli zokungena. I-Minikube iza ihlanganiswe nesilawuli se-Nginx ingress, futhi okumele sikwenze ukuyinika amandla futhi siyilungiselele.

minikube addons enable ingress

Manje sizokwakha isilawuli se-Nginx ingress ngomyalo owodwa nje, ozosebenza ngaphakathi kweqoqo lethu le-minikube:

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

Isinyathelo sesi-7 - Ukusetha ukungena

Manje sidinga ukumisa isilawuli se-Nginx ingress ukuze samukele izicelo ze-hello-quarkus.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Futhi ekugcineni, sidinga ukusebenzisa lokhu kumisa.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

kubectl apply -f ingress.yml

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Njengoba senza konke lokhu kukhompuyutha yethu, simane sengeze ikheli le-IP lenodi yethu kufayela /etc/ hosts ukuze uhambise izicelo ze-http ku-minikube yethu kusilinganisi somthwalo we-NGINX.

192.168.99.100 hello-quarkus.info

Yilokho nje, manje insizakalo yethu ye-minikube ifinyeleleka ngaphandle ngesilawuli se-Nginx ingress.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Hhayi-ke, lokho bekulula, akunjalo? Noma hhayi kakhulu?

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Isebenza ku-OpenShift (Iziqukathi Ezilungele Ikhodi)

Manje ake sibone ukuthi konke lokhu kwenziwa kanjani ku-Red Hat OpenShift Container Platform (OCP).

Njenge-minikube, sikhetha ukwakheka kweqoqo le-OpenShift elinenodi eyodwa ngendlela ye-Code Ready Containers (CRC). Ngaphambilini, ibibizwa nge-minishift futhi ibisekelwe kuphrojekthi ye-OpenShift Origin, kodwa manje isiyi-CRC futhi yakhelwe ku-OpenShift Container Platform ye-Red Hat.

Lapha, siyaxolisa, asikwazi ukuzibamba sithi: “I-OpenShift iyamangalisa!”

Ekuqaleni, besicabanga ukubhala ukuthi intuthuko ku-OpenShift ayihlukile ekuthuthukisweni ku-Kubernetes. Futhi empeleni kunjalo. Kepha ngesikhathi sokubhala lokhu okuthunyelwe, sikhumbule ukuthi kungakanani ukunyakaza okwengeziwe okufanele ukwenze uma ungenayo i-OpenShift, yingakho, futhi, kuhle kakhulu. Siyakuthanda uma yonke into yenziwa kalula, futhi kulula kangakanani isibonelo sethu ukusebenzisa nokusebenzisa i-OpenShift uma kuqhathaniswa ne-minikube yikho okusishukumisele ukuthi sibhale lokhu okuthunyelwe.

Ake sidlule ohlelweni sibone ukuthi yini okumele siyenze.

Ngakho-ke, esibonelweni se-minikube, siqale nge-Docker... Linda, asisadingi i-Docker efakwe emshinini.

Futhi asiyidingi i-git yendawo.
Futhi iMaven ayidingeki.
Futhi akudingeki udale isithombe sesitsha ngezandla zakho.
Futhi awudingi ukubheka noma iyiphi inqolobane yezithombe zeziqukathi.
Futhi asikho isidingo sokufaka isilawuli se-ingress.
Futhi awudingi ukulungisa ukungena noma.

Uyaqonda, akunjalo? Ukuze usebenzise futhi usebenzise uhlelo lwethu ku-OpenShift, awudingi noma yikuphi kwalokhu okungenhla. Futhi inqubo ngokwayo ibukeka kanje.

Isinyathelo 1 - Yethula iqoqo lakho le-OpenShift

Sisebenzisa Iziqukathi ze-Code Ready ezivela ku-Red Hat, okuyi-Minikube efanayo, kodwa kuphela ngeqoqo le-Openshift elinenodi eyodwa egcwele.

crc start

Isinyathelo sesi-2 - Yakha futhi uthumele uhlelo lokusebenza kuqoqo le-OpenShift

Kungalesi sinyathelo lapho ubulula kanye nokuba lula kwe-OpenShift kwembulwa kuyo yonke inkazimulo yayo. Njengakho konke ukusatshalaliswa kwe-Kubernetes, sinezindlela eziningi zokuqalisa uhlelo lokusebenza kuqoqo. Futhi, njengasendabeni ye-KUK, sikhetha ngokukhethekile elula.

I-OpenShift ibilokhu yakhiwe njengenkundla yokudala nokusebenzisa izinhlelo zokusebenza ezifakwe iziqukathi. Ukwakhiwa kweziqukathi bekulokhu kuyingxenye ebalulekile yale nkundla, ngakho-ke kunethoni yezinsiza ezengeziwe ze-Kubernetes zemisebenzi ehlobene.

Sizobe sisebenzisa inqubo ye-OpenShift's Source 2 Image (S2I), enezindlela ezimbalwa ezihlukene zokuthatha umthombo wethu (ikhodi noma amabhanari) futhi iwenze isithombe esifakwe esitsheni esisebenza kuqoqo le-OpenShift.

Ukuze senze lokhu sidinga izinto ezimbili:

  • Ikhodi yethu yomthombo isendaweni ye-git
  • Isithombe somakhi esisekelwe lapho ukwakhiwa kuzokwenziwa khona.

Kunezithombe eziningi ezinjalo ezigcinwe yi-Red Hat kanye nezinga lomphakathi, futhi sizosebenzisa isithombe se-OpenJDK, kahle, njengoba ngakha uhlelo lokusebenza lwe-Java.

Ungakwazi ukusebenzisa i-S2I ukwakha kokubili kusukela ku-OpenShift Developer graphical console nakumugqa womyalo. Sizosebenzisa umyalo wohlelo lokusebenza olusha, siwutshele ukuthi singasitholaphi isithombe somakhi kanye nekhodi yethu yomthombo.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

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

Yilokho kuphela, isicelo sethu senziwe. Ngokwenza kanjalo, inqubo ye-S2I yenze lezi zinto ezilandelayo:

  • Idale i-build-pod yesevisi yazo zonke izinhlobo zezinto ezihlobene nokwakha uhlelo lokusebenza.
  • Udale ukulungiselelwa kwe-OpenShift Build.
  • Ngilande isithombe somakhi kusibhalisi sangaphakathi se-OpenShift docker.
  • Kuhlanganiswe "Sawubona Umhlaba" endaweni yokugcina yendawo.
  • Ngabona ukuthi kune-maven pom lapho, ngase ngihlanganisa isicelo ngisebenzisa i-maven.
  • Idale isithombe esisha sesiqukathi esiqukethe uhlelo lokusebenza oluhlanganisiwe lwe-Java futhi yafaka lesi sithombe ekubhalisweni kwesiqukathi sangaphakathi.
  • Kudalwe i-Kubernetes Deployment enezici ze-pod, isevisi, njll.
  • Ngiqale ukusebenzisa isithombe sesitsha.
  • Kukhishwe i-build-pod yesevisi.

Kuningi kulolu hlu, kodwa into esemqoka ukuthi konke ukwakhiwa kwenzeka ngaphakathi kwe-OpenShift kuphela, ukubhaliswa kwangaphakathi kwe-Docker kungaphakathi kwe-OpenShift, futhi inqubo yokwakha idala zonke izingxenye ze-Kubernetes futhi iziqhube ku-cluster.

Uma ubheka ukwethulwa kwe-S2I kukhonsoli, ungabona ukuthi i-pod yokwakha yethulwa kanjani lapho ukwakhiwa kuqedwa.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Manje ake sibheke izingodo ze-pod zomakhi: okokuqala, kukhombisa ukuthi i-maven iwenza kanjani umsebenzi wayo nokuncika kokulanda ukuze kwakhiwe uhlelo lwethu lwe-java.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Ngemuva kokuqedwa kokwakhiwa kwe-maven, ukwakhiwa kwesithombe sesitsha kuyaqalwa, bese lesi sithombe esakhiwe sithunyelwa endaweni yokugcina yangaphakathi.

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Yilokho kuphela, inqubo yokwakha isiphelile. Manje ake siqinisekise ukuthi ama-pods namasevisi wohlelo lwethu lokusebenza asebenza kuqoqo.

oc get service

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Yilokho kuphela. Neqembu elilodwa nje. Okufanele sikwenze ukuveza le sevisi ukuze ifinyeleleke ngaphandle.

Isinyathelo sesi-3 - veza isevisi ukuze ifinyeleleke ngaphandle

Njengasendabeni ye-KUC, endaweni yesikhulumi se-OpenShift ethi “Sawubona Umhlaba” wethu nawo udinga umzila ukuze uqondise ithrafikhi yangaphandle kusevisi ngaphakathi kweqoqo. I-OpenShift yenza lokhu kube lula kakhulu. Okokuqala, ingxenye ye-HAProxy yomzila ifakwe kuqoqo ngokuzenzakalelayo (ingashintshwa ibe yi-NGINX efanayo). Okwesibili, kunezinsiza ezikhethekile nezilungiseka kakhulu ezibizwa ngokuthi Imizila futhi okukhumbuza izinto ze-Ingress kuma-Kubernetes amadala amahle (eqinisweni, Imizila ye-OpenShift ibe nomthelela omkhulu ekwakhiweni kwezinto ze-Ingress, ezingasetshenziswa manje ku-OpenShift) , kodwa "Sawubona Umhlaba" wethu , futhi cishe kuzo zonke ezinye izimo, Umzila ojwayelekile usanele ngaphandle kokucushwa okwengeziwe.

Ukwakha i-FQDN eshintshekayo yokuthi “Sawubona Umhlaba” (yebo, i-OpenShiift ine-DNS yayo yokuqondisa ngamagama esevisi), sizomane siveze insizakalo yethu:

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

oc expose service quarkus-hello-world

Uma ubheka Umzila osanda kwakhiwa, ungathola i-FQDN nolunye ulwazi lomzila lapho:

oc get route

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Futhi ekugcineni, sifinyelela insizakalo yethu kusuka kusiphequluli:

Uxolo, OpenShift, asikwazisanga ngokwanele futhi sikuthathe kalula

Kodwa manje kwase kulula ngempela!

Sithanda i-Kubernetes nayo yonke into lobu buchwepheshe obusivumela ukuthi siyenze, futhi sithanda ubulula nokulula. I-Kubernetes yadalelwa ukwenza lula ngendlela emangalisayo ukusebenza kweziqukathi ezisabalalisiwe, ezingakala, kodwa ubulula bayo akusanele ukufaka izicelo ekukhiqizeni namuhla. Kulapho i-OpenShift iqala khona ukudlala, ihambisana nezikhathi futhi inikezela nge-Kubernetes, eqondiswe kakhulu kunjiniyela. Kutshalwe umzamo omkhulu ukulungisa inkundla ye-OpenShift eqondene ngqo nomthuthukisi, okuhlanganisa ukwakhiwa kwamathuluzi afana ne-S2I, i-ODI, i-Developer Portal, i-OpenShift Operator Framework, ukuhlanganiswa kwe-IDE, Ikhathalogi Yonjiniyela, ukuhlanganiswa kwe-Helm, ukuqapha nokunye okuningi.

Sithemba ukuthi lesi sihloko besithakazelisa futhi siwusizo kuwe. Ungathola izinsiza ezengeziwe, izinto zokwakha kanye nezinye izinto eziwusizo ekuthuthukisweni endaweni yesikhulumi se-OpenShift kuphothali Abathuthukisi Besigqoko Esibomvu.

Source: www.habr.com

Engeza amazwana