Sveiki visiem! Å is ir otrais ieraksts mÅ«su sÄrijÄ, kurÄ mÄs parÄdÄm, kÄ izvietot modernas tÄ«mekļa lietojumprogrammas Red Hat OpenShift.
IepriekÅ”ÄjÄ ierakstÄ mÄs nedaudz pieskÄrÄmies jaunÄ S2I (source-to-image) veidotÄja attÄla iespÄjÄm, kas paredzÄts modernu tÄ«mekļa lietojumprogrammu veidoÅ”anai un izvietoÅ”anai OpenShift platformÄ. Tad mÅ«s interesÄja tÄma par lietojumprogrammas Ätru izvietoÅ”anu, un Å”odien mÄs apskatÄ«sim, kÄ izmantot S2I attÄlu kÄ ātÄ«ruā veidotÄja attÄlu un apvienot to ar saistÄ«tajiem OpenShift komplektiem.
TÄ«rs celtnieka attÄls
KÄ jau minÄjÄm XNUMX. daļÄ, lielÄkajai daļai mÅ«sdienu tÄ«mekļa lietojumprogrammu ir tÄ sauktÄ veidoÅ”anas stadija, kas parasti veic tÄdas darbÄ«bas kÄ koda transpilÄcija, vairÄku failu savienoÅ”ana un samazinÄÅ”ana. Å o darbÄ«bu rezultÄtÄ iegÅ«tie faili - un tas ir statisks HTML, JavaScript un CSS - tiek saglabÄti izvades mapÄ. Å Ä«s mapes atraÅ”anÄs vieta parasti ir atkarÄ«ga no tÄ, kÄdi veidoÅ”anas rÄ«ki tiek izmantoti, un React tÄ bÅ«s mape ./build (sÄ«kÄk par to atgriezÄ«simies tÄlÄk).
No avota uz attÄlu (S2I)
Å ajÄ ierakstÄ mÄs nepieskaramies tÄmai ākas ir S2I un kÄ to lietotā (par to varat lasÄ«t vairÄk Å”eit), taÄu ir svarÄ«gi skaidri saprast abas Ŕī procesa darbÄ«bas, lai saprastu, ko dara Web App Builder attÄls.
MontÄžas posms
MontÄžas fÄze pÄc bÅ«tÄ«bas ir ļoti lÄ«dzÄ«ga tam, kas notiek, palaižot Docker build un beidzot ar jaunu Docker attÄlu. AttiecÄ«gi Å”is posms notiek, uzsÄkot bÅ«vniecÄ«bu OpenShift platformÄ.
Web App Builder attÄla gadÄ«jumÄ tas ir atbildÄ«gs par jÅ«su lietojumprogrammas atkarÄ«bu instalÄÅ”anu un bÅ«vÄjuma palaiÅ”anu. salikt skriptu. PÄc noklusÄjuma veidotÄja attÄls izmanto npm palaist bÅ«vkonstrukciju, taÄu to var ignorÄt, izmantojot vides mainÄ«go NPM_BUILD.
KÄ jau teicÄm iepriekÅ”, gatavÄs, jau izveidotÄs lietojumprogrammas atraÅ”anÄs vieta ir atkarÄ«ga no tÄ, kÄdus rÄ«kus izmantojat. PiemÄram, React gadÄ«jumÄ tÄ bÅ«s mape ./build, bet Angular lietojumprogrammÄm tÄ bÅ«s mape project_name/dist. Un, kÄ jau parÄdÄ«ts iepriekÅ”ÄjÄ ziÅojumÄ, izvades direktorija atraÅ”anÄs vietu, kas pÄc noklusÄjuma ir iestatÄ«ta izveidei, var ignorÄt, izmantojot vides mainÄ«go OUTPUT_DIR. TÄ kÄ izvades mapes atraÅ”anÄs vieta dažÄdÄs sistÄmÄs atŔķiras, jÅ«s vienkÄrÅ”i kopÄjiet Ä£enerÄto izvadi uz attÄla standarta mapi, proti, /opt/apt-root/output. Tas ir svarÄ«gi, lai izprastu pÄrÄjo Ŕī raksta daļu, taÄu tagad Ätri apskatÄ«sim nÄkamo posmu - palaiÅ”anas fÄzi.
palaiÅ”anas fÄze
Å is posms notiek, kad jaunajam attÄlam, kas izveidots montÄžas posmÄ, tiek veikts izsaukums Docker palaiÅ”anai. Tas pats notiek, izvietojot OpenShift platformÄ. NoklusÄjums palaist skriptu izmanto apkalpoÅ”anas modulis lai apkalpotu statisku saturu, kas atrodas iepriekÅ” minÄtajÄ standarta izvades direktorijÄ.
Å Ä« metode ir piemÄrota Ätrai lietojumprogrammu izvietoÅ”anai, taÄu parasti nav ieteicams Å”ÄdÄ veidÄ apkalpot statisku saturu. TÄ kÄ patiesÄ«bÄ mÄs apkalpojam tikai statisku saturu, mÅ«su attÄlÄ nav nepiecieÅ”ams instalÄt Node.js ā pietiks ar tÄ«mekļa serveri.
Citiem vÄrdiem sakot, montÄjot mums vajag vienu lietu, izpildot citu. Å ajÄ situÄcijÄ noder Ä·Ädes bÅ«vÄjumi.
ĶÄdes bÅ«ves
Par to viÅi raksta Ä·Ädes bÅ«vÄ OpenShift dokumentÄcijÄ:
āVar saistÄ«t kopÄ divus komplektus, no kuriem viens Ä£enerÄ kompilÄtu entÄ«tiju, bet otrs mitina Å”o entÄ«tiju atseviÅ”Ä·Ä attÄlÄ, ko izmanto Ŕīs entÄ«tijas palaiÅ”anai.ā
Citiem vÄrdiem sakot, mÄs varam izmantot Web App Builder attÄlu, lai palaistu bÅ«vÄjumu, un pÄc tam izmantot tÄ«mekļa servera attÄlu, to paÅ”u NGINX, lai nodroÅ”inÄtu mÅ«su saturu.
TÄdÄjÄdi mÄs varam izmantot Web App Builder attÄlu kÄ ātÄ«ruā veidotÄju un tajÄ paÅ”Ä laikÄ izmantot nelielu izpildlaika attÄlu.
ApskatÄ«sim Å”o failu sÄ«kÄk un sÄksim ar parametru sadaļu.
parameters:
- name: SOURCE_REPOSITORY_URL
description: The source URL for the application
displayName: Source URL
required: true
- name: SOURCE_REPOSITORY_REF
description: The branch name for the application
displayName: Source Branch
value: master
required: true
- name: SOURCE_REPOSITORY_DIR
description: The location within the source repo of the application
displayName: Source Directory
value: .
required: true
- name: OUTPUT_DIR
description: The location of the compiled static files from your web apps builder
displayName: Output Directory
value: build
required: false
Å eit viss ir diezgan skaidrs, taÄu ir vÄrts pievÄrst uzmanÄ«bu parametram OUTPUT_DIR. Lietojumprogrammai React mÅ«su piemÄrÄ nav par ko uztraukties, jo React kÄ izvades mapi izmanto noklusÄjuma vÄrtÄ«bu, bet Angular vai kaut kÄ cita gadÄ«jumÄ Å”is parametrs bÅ«s jÄmaina pÄc vajadzÄ«bas.
Apskatiet treÅ”o un ceturto attÄlu. Tie abi ir definÄti kÄ Docker attÄli, un jÅ«s varat skaidri redzÄt, no kurienes tie nÄk.
TreÅ”ais attÄls ir tÄ«mekļa lietotÅu veidotÄjs, un tas nÄk no nodeshift/ubi8-s2i-web-app, kas marÄ·Äts ar 10.x. Docker centrs.
Ceturtais ir NGINX attÄls (versija 1.12) ar ieslÄgtu jaunÄko tagu Docker centrs.
Tagad apskatÄ«sim pirmos divus attÄlus. Tie abi sÄkumÄ ir tukÅ”i un tiek izveidoti tikai veidoÅ”anas fÄzÄ. Pirmais attÄls, react-web-app-builder, bÅ«s montÄžas darbÄ«bas rezultÄts, kurÄ tiks apvienots tÄ«mekļa lietotÅu veidotÄja izpildlaika attÄls un mÅ«su avota kods. TÄpÄc Ŕī attÄla nosaukumam pievienojÄm ā-builderā.
Otrais attÄls ā react-web-app-runtime ā tiks iegÅ«ts, apvienojot nginx-image-runtime un dažus failus no react-web-app-builder attÄla. Å is attÄls tiks izmantots arÄ« izvietoÅ”anas laikÄ, un tajÄ bÅ«s tikai mÅ«su lietojumprogrammas tÄ«mekļa serveris un statiskais HTML, JavaScript un CSS.
Apjucis? Tagad apskatÄ«sim bÅ«vniecÄ«bas konfigurÄcijas, un tas kļūs nedaudz skaidrÄks.
MÅ«su veidnei ir divas bÅ«vÄÅ”anas konfigurÄcijas. Å eit ir pirmais, un tas ir diezgan standarta:
KÄ redzat, rindiÅÄ ar iezÄ«mi 1 ir teikts, ka Ŕīs bÅ«ves rezultÄts tiks ievietots tajÄ paÅ”Ä react-web-app-builder attÄlÄ, ko redzÄjÄm nedaudz agrÄk sadaÄ¼Ä ImageStreams.
Rinda ar 2 norÄda, no kurienes iegÅ«t kodu. MÅ«su gadÄ«jumÄ Å”Ä« ir git repozitorijs, un atraÅ”anÄs vietu, ref un konteksta mapi nosaka parametri, kurus mÄs jau redzÄjÄm iepriekÅ”.
LÄ«nija, kas apzÄ«mÄta ar 3, ir tÄ, ko mÄs jau redzÄjÄm parametru sadaļÄ. Tas pievieno vides mainÄ«go OUTPUT_DIR, kas mÅ«su piemÄrÄ ir uzbÅ«ve.
RindÄ, kas apzÄ«mÄta ar 4, ir norÄdÄ«ts izmantot tÄ«mekļa lietotÅu veidotÄja izpildlaika attÄlu, ko mÄs jau redzÄjÄm sadaÄ¼Ä ImageStream.
RindÄ, kas apzÄ«mÄta ar 5, ir teikts, ka mÄs vÄlamies izmantot pakÄpenisku bÅ«vÄjumu, ja S2I attÄls to atbalsta un Web App Builder attÄls to atbalsta. PirmajÄ palaiÅ”anas reizÄ pÄc montÄžas posma pabeigÅ”anas attÄls mapi node_modules saglabÄs arhÄ«va failÄ. PÄc tam nÄkamajÄs palaistÄ«bÄs attÄls vienkÄrÅ”i izpakos Å”o mapi, lai samazinÄtu izveides laiku.
Visbeidzot, rindiÅa ar 6 ir tikai daži aktivizÄtÄji, lai, kad kaut kas mainÄs, bÅ«vÄjums tiktu palaists automÄtiski, bez manuÄlas iejaukÅ”anÄs.
KopumÄ Å”Ä« ir diezgan standarta konstrukcijas konfigurÄcija.
Tagad apskatÄ«sim otro bÅ«vÄjuma konfigurÄciju. Tas ir ļoti lÄ«dzÄ«gs pirmajam, taÄu ir viena bÅ«tiska atŔķirÄ«ba.
TÄtad otrÄs versijas konfigurÄcija ir react-web-app-runtime, un tÄ sÄkas diezgan standarta.
Rinda ar apzÄ«mÄjumu 1 nav nekas jauns ā tÄ vienkÄrÅ”i norÄda, ka izveides rezultÄts tiek ievietots react-web-app-runtime attÄlÄ.
Rinda, kas apzÄ«mÄta ar 2, tÄpat kÄ iepriekÅ”ÄjÄ konfigurÄcijÄ, norÄda, no kurienes iegÅ«t avota kodu. Bet ievÄrojiet, ka Å”eit mÄs sakÄm, ka tas ir Åemts no attÄla. TurklÄt no attÄla, ko tikko izveidojÄm - no react-web-app-builder (norÄdÄ«ts rindÄ ar 3). Faili, kurus vÄlamies izmantot, atrodas attÄla iekÅ”pusÄ, un to atraÅ”anÄs vieta ir iestatÄ«ta rindÄ ar apzÄ«mÄjumu 4, mÅ«su gadÄ«jumÄ tÄ ir /opt/app-root/output/. Ja atceraties, Å”eit tiek glabÄti faili, kas Ä£enerÄti, pamatojoties uz mÅ«su lietojumprogrammas izveides rezultÄtiem.
MÄrÄ·a mape, kas norÄdÄ«ta terminÄ ar iezÄ«mi 5, ir vienkÄrÅ”i paÅ”reizÄjais direktorijs (atcerieties, tas ir viss, kas darbojas kÄdÄ maÄ£iskÄ lietÄ, ko sauc par OpenShift, nevis jÅ«su lokÄlajÄ datorÄ).
StratÄÄ£ijas sadaļa ā rindiÅa ar apzÄ«mÄjumu 6 ā arÄ« ir lÄ«dzÄ«ga pirmÄs versijas konfigurÄcijai. Tikai Å”oreiz mÄs izmantosim nginx-image-runtime, ko jau redzÄjÄm sadaÄ¼Ä ImageStream.
Visbeidzot, rindiÅa ar 7 ir aktivizÄtÄju sadaļa, kas aktivizÄs Å”o bÅ«vÄjumu ikreiz, kad mainÄ«sies react-web-app-builder attÄls.
PretÄjÄ gadÄ«jumÄ Å”ajÄ veidnÄ ir ietverta diezgan standarta izvietoÅ”anas konfigurÄcija, kÄ arÄ« lietas, kas attiecas uz pakalpojumiem un marÅ”rutiem, taÄu mÄs tajÄ neiedziļinÄsimies. LÅ«dzu, Åemiet vÄrÄ, ka attÄls, kas tiks izvietots, ir react-web-app-runtime attÄls.
Lietojumprogrammu izvietoŔana
Tagad, kad esam apskatÄ«juÅ”i veidni, redzÄsim, kÄ to izmantot lietojumprogrammas izvietoÅ”anai.
MÄs varam izmantot OpenShift klienta rÄ«ku, ko sauc par oc, lai izvietotu mÅ«su veidni:
Å eit redzamÄ shÄma ir tÄda pati, izÅemot mainÄ«go OUTPUT_DIR.
PapildinÄjums 2. gadam
Å ajÄ rakstÄ mÄs izmantojÄm NGINX kÄ tÄ«mekļa serveri, taÄu to ir diezgan viegli aizstÄt ar Apache, vienkÄrÅ”i mainiet veidni failÄ NGINX attÄls par Apache attÄls.
SecinÄjums
Å Ä«s sÄrijas pirmajÄ daÄ¼Ä mÄs parÄdÄ«jÄm, kÄ Ätri izvietot modernas tÄ«mekļa lietojumprogrammas OpenShift platformÄ. Å odien mÄs apskatÄ«jÄm, ko dara Web App attÄls un kÄ to var apvienot ar tÄ«ru tÄ«mekļa serveri, piemÄram, NGINX, izmantojot Ä·Ädes bÅ«vÄjumus, lai izveidotu ražoÅ”anai gatavÄku lietojumprogrammu bÅ«vÄjumu. NÄkamajÄ un pÄdÄjÄ Å”Ä«s sÄrijas rakstÄ mÄs parÄdÄ«sim, kÄ palaist izstrÄdes serveri jÅ«su lietojumprogrammai OpenShift un nodroÅ”inÄt vietÄjo un attÄlo failu sinhronizÄciju.
2. daļa. KÄ izmantot jaunu S2I attÄlu ar esoÅ”u HTTP servera attÄlu, piemÄram, NGINX, izmantojot saistÄ«tos OpenShift komplektus ražoÅ”anas izvietoÅ”anai;
3. daļa: kÄ palaist izstrÄdes serveri jÅ«su lietojumprogrammai OpenShift platformÄ un sinhronizÄt to ar vietÄjo failu sistÄmu.