ProHoster > Blogs > AdministrÄcija > Atvainojiet, OpenShift, mÄs jÅ«s nepietiekami novÄrtÄjÄm un uzskatÄ«jÄm par paÅ”saprotamu
Atvainojiet, OpenShift, mÄs jÅ«s nepietiekami novÄrtÄjÄm un uzskatÄ«jÄm par paÅ”saprotamu
Å is ieraksts tika uzrakstÄ«ts, jo mÅ«su darbiniekiem bija diezgan daudz sarunu ar klientiem par aplikÄciju izstrÄdi Kubernetes un Å”Ädas izstrÄdes specifiku OpenShift.
MÄs parasti sÄkam ar tÄzi, ka Kubernetes ir tikai Kubernetes, un OpenShift jau ir Kubernetes platforma, piemÄram, Microsoft AKS vai Amazon EKS. Katrai no Ŕīm platformÄm ir savas priekÅ”rocÄ«bas, kas vÄrstas uz konkrÄtu mÄrÄ·auditoriju. Un pÄc tam saruna pÄrvÄrÅ”as par konkrÄtu platformu stipro un vÄjo puÅ”u salÄ«dzinÄÅ”anu.
KopumÄ mÄs domÄjÄm rakstÄ«t Å”o ziÅu ar tÄdu secinÄjumu kÄ āKlausies, nav svarÄ«gi, kur palaist kodu, OpenShift vai AKS, EKS, dažÄs pielÄgotÄs Kubernetes vai jebkurÄ Kubernetes ierÄ«cÄ. (Ä«suma labad sauksim to par KUK) "Tas ir patieÅ”Äm vienkÄrÅ”i gan tur, gan tur."
Tad mÄs plÄnojÄm paÅemt vienkÄrÅ”Äko āHello Worldā un izmantot tÄs piemÄru, lai parÄdÄ«tu, kas ir kopÄ«gs un ar ko atŔķiras KUC un Red Hat OpenShift Container Platform (turpmÄk OCP vai vienkÄrÅ”i OpenShift).
TomÄr, rakstot Å”o ziÅu, mÄs sapratÄm, ka esam tik ilgi pieraduÅ”i izmantot OpenShift, ka vienkÄrÅ”i neapzinÄjÄmies, kÄ tÄ ir izaugusi un pÄrvÄrtusies par pÄrsteidzoÅ”u platformu, kas kļuva daudz vairÄk nekÄ tikai Kubernetes izplatÄ«Å”ana. Mums ir tendence uzskatÄ«t OpenShift briedumu un vienkÄrŔību par paÅ”saprotamu un aizmirst par tÄs spožumu.
KopumÄ ir pienÄcis laiks aktÄ«vai grÄku nožÄlai, un tagad mÄs soli pa solim salÄ«dzinÄsim mÅ«su āHello Worldā nodoÅ”anu ekspluatÄcijÄ KUK un OpenShift, un mÄs to darÄ«sim pÄc iespÄjas objektÄ«vi (nu, izÅemot dažkÄrt parÄdot personiskÄ attieksme pret tÄmu). Ja jÅ«s interesÄ tÄ«ri subjektÄ«vs viedoklis par Å”o jautÄjumu, varat to izlasÄ«t Å”eit (EN). Un Å”ajÄ ierakstÄ mÄs paliksim pie faktiem un tikai faktiem.
Kopas
TÄtad mÅ«su āSveika pasauleā prasa kopas. MÄs nekavÄjoties pateiksim ānÄā jebkuriem publiskajiem mÄkoÅiem, lai nemaksÄtu par serveriem, reÄ£istriem, tÄ«kliem, datu pÄrsÅ«tÄ«Å”anu utt. AttiecÄ«gi mÄs izvÄlamies vienkÄrÅ”u viena mezgla kopu Minikube (par KUK) un Kodu gatavi konteineri (OpenShift klasterim). Abas Ŕīs opcijas ir patieÅ”Äm viegli instalÄjamas, taÄu tÄm bÅ«s nepiecieÅ”ams diezgan daudz resursu jÅ«su klÄpjdatorÄ.
MontÄža uz KUK-e
TÄtad, ejam.
1. darbÄ«ba ā konteinera attÄla izveide
SÄksim ar mÅ«su āHello Worldā izvietoÅ”anu minikube. Lai to izdarÄ«tu, jums bÅ«s nepiecieÅ”ams:
1. Docker instalÄts.
2. Git instalÄts.
3. InstalÄts Maven (patiesÄ«bÄ Å”ajÄ projektÄ tiek izmantots mvnw binÄrs, tÄpÄc var iztikt bez tÄ).
Pirmais solis ir izveidot Quarkus projektu. Nebaidieties, ja nekad neesat strÄdÄjis ar Quarkus.io ā tas ir vienkÄrÅ”i. JÅ«s vienkÄrÅ”i izvÄlaties komponentus, kurus vÄlaties izmantot projektÄ (RestEasy, Hibernate, Amazon SQS, Camel utt.), un pÄc tam pats Quarkus bez jÅ«su lÄ«dzdalÄ«bas konfigurÄ maven arhetipu un visu ievieto github. Tas ir, burtiski viens peles klikŔķis, un esat pabeidzis. TÄpÄc mÄs mÄ«lam Quarkus.
VienkÄrÅ”Äkais veids, kÄ izveidot mÅ«su āHello Worldā konteinera attÄlu, ir izmantot Docker paplaÅ”inÄjumus quarkus-maven, kas veiks visu nepiecieÅ”amo darbu. LÄ«dz ar Quarkus parÄdÄ«Å”anos tas ir kļuvis patieÅ”Äm viegli un vienkÄrÅ”i: pievienojiet paplaÅ”inÄjumu konteiners-attÄla-docker un varat izveidot attÄlus, izmantojot komandas maven.
Visbeidzot, mÄs veidojam savu tÄlu, izmantojot Maven. RezultÄtÄ mÅ«su pirmkods pÄrvÄrÅ”as par gatavu konteinera attÄlu, ko jau var palaist konteinera izpildlaika vidÄ.
Tas arÄ« viss. Tagad varat palaist konteineru ar docker run komandu, kartÄjot mÅ«su pakalpojumu ar portu 8080, lai tam varÄtu piekļūt.
docker run -i ā rm -p 8080:8080 gcolman/quarkus-hello-world
PÄc konteinera instances palaiÅ”anas atliek tikai pÄrbaudÄ«t ar curl komandu, vai mÅ«su pakalpojums darbojas:
TÄtad viss darbojas, un tas bija patieÅ”Äm viegli un vienkÄrÅ”i.
2. darbÄ«ba ā nosÅ«tiet mÅ«su konteineru uz konteinera attÄlu krÄtuvi
PagaidÄm mÅ«su izveidotais attÄls tiek glabÄts lokÄli, mÅ«su vietÄjÄ konteineru krÄtuvÄ. Ja mÄs vÄlamies izmantot Å”o attÄlu savÄ COOK vidÄ, tad tas ir jÄievieto kÄdÄ citÄ repozitorijÄ. Kubernetes Å”Ädu funkciju nav, tÄpÄc izmantosim dockerhub. Jo, pirmkÄrt, tas ir bez maksas, otrkÄrt, to dara (gandrÄ«z) visi.
Tas ir arÄ« ļoti vienkÄrÅ”i, un viss, kas jums nepiecieÅ”ams, ir Dockerhub konts.
TÄtad, mÄs instalÄjam dockerhub un nosÅ«tÄm tur savu attÄlu.
3. darbÄ«ba ā palaidiet Kubernetes
Ir daudz veidu, kÄ salikt kubernetes konfigurÄciju, lai palaistu mÅ«su āHello Worldā, taÄu mÄs izmantosim vienkÄrÅ”Äko no tiem, tÄdi mÄs esam...
Tagad mums ir jÄpÄrvÄrÅ” mÅ«su kods un konteinera attÄls kubernetes konfigurÄcijÄs. Citiem vÄrdiem sakot, mums ir nepiecieÅ”ama podziÅa un izvietoÅ”anas definÄ«cija, kas norÄda uz mÅ«su konteinera attÄlu vietnÄ Dockerhub. Viens no vienkÄrÅ”Äkajiem veidiem, kÄ to izdarÄ«t, ir palaist komandu izveidot izvietoÅ”anu, kas norÄda uz mÅ«su attÄlu:
Ar Å”o komandu mÄs likÄm savam COO izveidot izvietoÅ”anas konfigurÄciju, kurÄ bÅ«tu jÄietver mÅ«su konteinera attÄla pod specifikÄcija. Å Ä« komanda piemÄros Å”o konfigurÄciju arÄ« mÅ«su minikube klasterim un izveidos izvietoÅ”anu, kas lejupielÄdÄs mÅ«su konteinera attÄlu un palaidÄ«s kopu klasterÄ«.
Tagad, kad mums ir izvietots konteinera attÄls, ir pienÄcis laiks domÄt par to, kÄ konfigurÄt ÄrÄjo piekļuvi Å”im pakalpojumam Restful, kas faktiski ir ieprogrammÄts mÅ«su kodÄ.
Å eit ir daudz veidu. PiemÄram, varat izmantot komandu exose, lai automÄtiski izveidotu atbilstoÅ”os Kubernetes komponentus, piemÄram, pakalpojumus un galapunktus. Faktiski tas ir tas, ko mÄs darÄ«sim, izpildot mÅ«su izvietoÅ”anas objekta eksponÄÅ”anas komandu:
AtvÄlÄsim brÄ«di, lai apskatÄ«tu komandas eksponÄÅ”anas opciju "-type".
Kad mÄs atklÄjam un izveidojam komponentus, kas nepiecieÅ”ami mÅ«su pakalpojuma palaiÅ”anai, mums, cita starpÄ, ir jÄspÄj no Ärpuses izveidot savienojumu ar pakalpojumu hello-quarkus, kas atrodas mÅ«su programmatÅ«ras definÄtajÄ tÄ«klÄ. Un parametrs tips ļauj mums izveidot un savienot lietas, piemÄram, slodzes balansÄtÄjus, lai novirzÄ«tu trafiku uz Å”o tÄ«klu.
PiemÄram, rakstot tips=LoadBalancer, mÄs automÄtiski nodroÅ”inÄm slodzes balansÄtÄju publiskajÄ mÄkonÄ«, lai izveidotu savienojumu ar mÅ«su Kubernetes klasteru. Tas, protams, ir lieliski, taÄu jums ir jÄsaprot, ka Å”Äda konfigurÄcija bÅ«s stingri piesaistÄ«ta konkrÄtam publiskam mÄkoni un to bÅ«s grÅ«tÄk pÄrsÅ«tÄ«t starp Kubernetes gadÄ«jumiem dažÄdÄs vidÄs.
MÅ«su piemÄrÄ type=NodePort, tas ir, mÅ«su pakalpojumam var piekļūt, izmantojot mezgla IP adresi un porta numuru. Å Ä« opcija ļauj neizmantot publiskos mÄkoÅus, taÄu tai ir nepiecieÅ”amas vairÄkas papildu darbÄ«bas. PirmkÄrt, jums ir nepiecieÅ”ams savs slodzes balansÄtÄjs, tÄpÄc mÄs izvietosim NGINX slodzes balansÄtÄju mÅ«su klasterÄ«.
6. solis ā uzstÄdiet slodzes balansÄtÄju
minikube ir vairÄkas platformas funkcijas, kas atvieglo ÄrÄji pieejamu komponentu, piemÄram, ieejas kontrolleru, izveidi. Minikube ir komplektÄ ar Nginx ieejas kontrolieri, un viss, kas mums jÄdara, ir tas jÄiespÄjo un jÄkonfigurÄ.
minikube addons enable ingress
Tagad mÄs izveidosim Nginx ieejas kontrolieri tikai ar vienu komandu, kas darbosies mÅ«su minikube klasterÄ«:
Tagad mums ir jÄkonfigurÄ Nginx ieejas kontrolleris, lai tas pieÅemtu hello-quarkus pieprasÄ«jumus.
Un visbeidzot, mums ir jÄpiemÄro Ŕī konfigurÄcija.
kubectl apply -f ingress.yml
TÄ kÄ mÄs to visu darÄm savÄ datorÄ, mÄs vienkÄrÅ”i pievienojam sava mezgla IP adresi failam /etc/ hosts, lai http pieprasÄ«jumus novirzÄ«tu uz mÅ«su minikube uz NGINX slodzes balansÄtÄju.
192.168.99.100 hello-quarkus.info
Tas arÄ« viss, tagad mÅ«su minikube pakalpojums ir pieejams ÄrÄji, izmantojot Nginx ieejas kontrolleri.
Nu, tas bija viegli, vai ne? Vai ne tik daudz?
Darbojas ar OpenShift (kodam gatavi konteineri)
Tagad redzÄsim, kÄ tas viss tiek darÄ«ts Red Hat OpenShift konteineru platformÄ (OCP).
TÄpat kÄ minikube gadÄ«jumÄ, mÄs izvÄlamies viena mezgla OpenShift klastera dizainu Code Ready Containers (CRC) formÄ. IepriekÅ” tas tika saukts par minishift un tika balstÄ«ts uz OpenShift Origin projektu, bet tagad tas ir CRC un veidots uz Red Hat OpenShift konteineru platformas.
Å eit mÄs, atvainojiet, nevaram nepateikt: āOpenShift ir brÄ«niŔķīgs!ā
SÄkotnÄji mÄs domÄjÄm rakstÄ«t, ka izstrÄde OpenShift neatŔķiras no izstrÄdes Kubernetes. Un bÅ«tÄ«bÄ tas tÄ ir. Bet rakstot Å”o ziÅu, mÄs atcerÄjÄmies, cik daudz papildu kustÄ«bu jums ir jÄveic, ja jums nav OpenShift, un tÄpÄc tas atkal ir brÄ«niŔķīgi. Mums patÄ«k, kad viss tiek darÄ«ts viegli, un tas, cik viegli mÅ«su piemÄru ir izvietot un palaist OpenShift salÄ«dzinÄjumÄ ar minikube, pamudinÄja mÅ«s uzrakstÄ«t Å”o ziÅu.
Iesim cauri procesam un redzÄsim, kas mums jÄdara.
TÄtad minikube piemÄrÄ mÄs sÄkÄm ar Docker... Pagaidiet, mums vairs nav nepiecieÅ”ams Docker instalÄts maŔīnÄ.
Un mums nav vajadzÄ«gs vietÄjais ģīmis.
Un Mavens nav vajadzīgs.
Un jums nav jÄizveido konteinera attÄls ar savÄm rokÄm.
Un jums nav jÄmeklÄ konteinera attÄlu krÄtuve.
Un nav nepiecieÅ”ams uzstÄdÄ«t ieejas kontrolieri.
Un jums arÄ« nav jÄkonfigurÄ ieeja.
JÅ«s saprotat, vai ne? Lai izvietotu un palaistu mÅ«su lietojumprogrammu OpenShift, jums nav nepiecieÅ”ams neviens no iepriekÅ” minÄtajiem. Un pats process izskatÄs Å”Ädi.
1. darbÄ«ba ā palaidiet savu OpenShift klasteru
MÄs izmantojam Code Ready Containers no Red Hat, kas bÅ«tÄ«bÄ ir tas pats Minikube, bet tikai ar pilnvÄrtÄ«gu viena mezgla Openshift klasteru.
crc start
2. darbÄ«ba ā izveidojiet un izvietojiet lietojumprogrammu OpenShift klasterÄ«
TieÅ”i Å”ajÄ posmÄ OpenShift vienkÄrŔība un ÄrtÄ«bas tiek atklÄtas visÄ tÄs krÄÅ”ÅumÄ. TÄpat kÄ ar visiem Kubernetes izplatÄ«jumiem, mums ir daudz veidu, kÄ palaist lietojumprogrammu klasterÄ«. Un, tÄpat kÄ KUK gadÄ«jumÄ, mÄs Ä«paÅ”i izvÄlamies vienkÄrÅ”Äko.
OpenShift vienmÄr ir veidota kÄ platforma konteinerizÄtu lietojumprogrammu izveidei un palaiÅ”anai. Konteineru veidoÅ”ana vienmÄr ir bijusi Ŕīs platformas neatÅemama sastÄvdaļa, tÄpÄc ar to saistÄ«tiem uzdevumiem ir pieejams daudz papildu Kubernetes resursu.
MÄs izmantosim OpenShift Source 2 Image (S2I) procesu, kuram ir vairÄki dažÄdi veidi, kÄ iegÅ«t mÅ«su avotu (kodu vai binÄros failus) un pÄrvÄrst to konteinerizÄtÄ attÄlÄ, kas darbojas OpenShift klasterÄ«.
Lai to izdarītu, mums ir vajadzīgas divas lietas:
MÅ«su pirmkods atrodas git repozitorijÄ
BÅ«vnieka attÄls, uz kura pamata tiks veikta bÅ«vniecÄ«ba.
Ir daudz Å”Ädu attÄlu, ko uztur gan Red Hat, gan kopienas lÄ«menÄ«, un mÄs izmantosim OpenJDK attÄlu, jo es veidoju Java lietojumprogrammu.
S2I bÅ«vÄjumu var palaist gan no OpenShift Developer grafiskÄs konsoles, gan no komandrindas. MÄs izmantosim komandu new-app, norÄdot, kur iegÅ«t veidotÄja attÄlu un mÅ«su avota kodu.
Tas arÄ« viss, mÅ«su lietojumprogramma ir izveidota. To darot, S2I process veica Å”Ädas darbÄ«bas:
Izveidots pakalpojumu bÅ«vpods visu veidu lietÄm, kas saistÄ«tas ar lietojumprogrammas izveidi.
Izveidoja OpenShift Build konfigurÄciju.
Es lejupielÄdÄju veidotÄja attÄlu iekÅ”ÄjÄ OpenShift docker reÄ£istrÄ.
KlonÄts "Hello World" uz vietÄjo repozitoriju.
Es redzÄju, ka tur ir maven pom, tÄpÄc es sastÄdÄ«ju aplikÄciju, izmantojot maven.
Izveidots jauns konteinera attÄls, kurÄ ir apkopota Java lietojumprogramma, un ievietots Å”is attÄls iekÅ”ÄjÄ konteinera reÄ£istrÄ.
Izveidota Kubernetes izvietoÅ”ana ar specifikÄcijÄm podam, pakalpojumam utt.
Es sÄku izvietot konteinera attÄlu.
NoÅemts pakalpojuma build-pod.
Å ajÄ sarakstÄ ir daudz, taÄu galvenais ir tas, ka visa bÅ«vÄÅ”ana notiek tikai OpenShift iekÅ”ienÄ, iekÅ”Äjais Docker reÄ£istrs atrodas OpenShift iekÅ”pusÄ, un veidoÅ”anas process izveido visus Kubernetes komponentus un palaiž tos klasterÄ«.
Ja konsolÄ vizuÄli pÄrraugÄt S2I palaiÅ”anu, varat redzÄt, kÄ bÅ«vÄÅ”anas pods tiek palaists, kad bÅ«vÄÅ”ana ir pabeigta.
Tagad apskatÄ«sim veidotÄju pod žurnÄlus: pirmkÄrt, tas parÄda, kÄ maven veic savu darbu, un lejupielÄdÄ atkarÄ«bas, lai izveidotu mÅ«su Java lietojumprogrammu.
Kad Maven bÅ«vÄÅ”ana ir pabeigta, tiek sÄkta konteinera attÄla bÅ«vÄÅ”ana, un pÄc tam Å”is veidotais attÄls tiek nosÅ«tÄ«ts uz iekÅ”Äjo repozitoriju.
Tas arÄ« viss, izveides process ir pabeigts. Tagad pÄrliecinÄsimies, ka mÅ«su lietojumprogrammas podi un pakalpojumi darbojas klasterÄ«.
oc get service
Tas ir viss. Un tikai viena komanda. Viss, kas mums jÄdara, ir atklÄt Å”o pakalpojumu, lai tas varÄtu piekļūt no Ärpuses.
3. darbÄ«ba ā atklÄjiet pakalpojumam piekļuvi no Ärpuses
TÄpat kÄ KUC gadÄ«jumÄ, OpenShift platformÄ mÅ«su āHello Worldā arÄ« ir nepiecieÅ”ams marÅ”rutÄtÄjs, lai novirzÄ«tu ÄrÄjo trafiku uz pakalpojumu klasterÄ«. OpenShift to padara ļoti vienkÄrÅ”u. PirmkÄrt, HAProxy marÅ”rutÄÅ”anas komponents ir instalÄts klasterÄ« pÄc noklusÄjuma (to var mainÄ«t uz to paÅ”u NGINX). OtrkÄrt, ir Ä«paÅ”i un ļoti konfigurÄjami resursi, ko sauc par marÅ”rutiem un atgÄdina Ingress objektus vecajÄ labajÄ Kubernetes (patiesÄ«bÄ OpenShift marÅ”ruti lielÄ mÄrÄ ietekmÄja Ingress objektu dizainu, ko tagad var izmantot OpenShift), bet mÅ«su "Hello World" , un gandrÄ«z visos citos gadÄ«jumos mums pietiek ar standarta MarÅ”rutu bez papildu konfigurÄcijas.
Lai izveidotu marÅ”rutÄjamu FQDN āHello Worldā (jÄ, OpenShiift ir savs DNS marÅ”rutÄÅ”anai pÄc pakalpojumu nosaukumiem), mÄs vienkÄrÅ”i atklÄsim savu pakalpojumu:
oc expose service quarkus-hello-world
Ja skatÄties uz jaunizveidoto marÅ”rutu, tajÄ varat atrast FQDN un citu marÅ”rutÄÅ”anas informÄciju:
oc get route
Visbeidzot, mÄs piekļūstam savam pakalpojumam no pÄrlÅ«kprogrammas:
Bet tagad tas bija patieÅ”Äm viegli!
MÄs mÄ«lam Kubernetes un visu, ko Ŕī tehnoloÄ£ija mums ļauj darÄ«t, kÄ arÄ« mÄs mÄ«lam vienkÄrŔību un vieglumu. Kubernetes tika izveidots, lai neticami vienkÄrÅ”otu sadalÄ«to, mÄrogojamo konteineru darbÄ«bu, taÄu ar tÄs vienkÄrŔību vairs nepietiek, lai Å”odien ieviestu lietojumprogrammas ražoÅ”anÄ. Å eit tiek izmantota OpenShift, kas seko lÄ«dzi laikam un piedÄvÄ Kubernetes, kas galvenokÄrt paredzÄta izstrÄdÄtÄjam. Ir ieguldÄ«ts daudz pūļu, lai OpenShift platformu pielÄgotu Ä«paÅ”i izstrÄdÄtÄjam, tostarp tÄdu rÄ«ku izveidei kÄ S2I, ODI, izstrÄdÄtÄju portÄls, OpenShift Operator Framework, IDE integrÄcija, izstrÄdÄtÄju katalogi, Helm integrÄcija, uzraudzÄ«ba un daudzi citi.
MÄs ceram, ka Å”is raksts jums bija interesants un noderÄ«gs. PortÄlÄ var atrast papildu resursus, materiÄlus un citas izstrÄdei noderÄ«gas lietas OpenShift platformÄ Red Hat izstrÄdÄtÄji.