Waad salaaman tihiin dhammaan dadka ku jira boggan! Tani waa boostada saddexaad ee taxane ah oo aan ku muujineyno sida loo geeyo codsiyada casriga casriga ah ee Koofiyada Cas OpenShift.
Labadii qoraal ee hore, waxaan ku tusnay sida loo geeyo codsiyada shabakadaha casriga ah dhowr tillaabo iyo sida loo isticmaalo sawirka S2I cusub oo ay la socdaan sawirka server HTTP ka baxsan, sida NGINX, iyadoo la adeegsanayo dhismooyin silsilado ah si loo abaabulo soo saarista wax soo saarka. .
Maanta waxaan ku tusi doonaa sida loogu socodsiiyo server-ka horumarinta codsigaaga goobta OpenShift oo aan la jaanqaadi doono nidaamka faylalka maxalliga ah, iyo sidoo kale ka hadal waxa ay yihiin OpenShift Pipelines iyo sida loogu isticmaali karo beddelka shirarka isku xiran.
OpenShift sida deegaan horumarineed
socodka shaqada horumarinta
Sida hore loogu sheegay boostada ugu horeysa, Habka horumarinta caadiga ah ee codsiyada shabakada casriga ah waa nooc ka mid ah "server-ka horumarinta" kaas oo raadraaca isbeddelada faylasha maxaliga ah. Marka ay dhacaan, dhisitaanka arjiga ayaa kicinaya ka dibna waxaa loo cusbooneysiiyaa browserka.
Inta badan qaab-dhismeedka casriga ah, sida "server-ka horumarinta" ayaa lagu dhisay qalabyada khadka taliska ee u dhigma.
Tusaale maxalli ah
Marka hore, aan aragno sida tani u shaqeyso marka codsiyada gudaha lagu wado. Aan soo qaadano codsiga tusaale ahaan Diido laga soo bilaabo maqaaladii hore, in kasta oo ku dhawaad isla fikradaha socodka shaqadu ay khuseeyaan dhammaan qaababka kale ee casriga ah.
Marka, si aan u bilowno "server-ka" tusaale ahaan React-ka, waxaanu geli doonaa amarka soo socda:
$ npm run start
Kadib daaqada terminalka waxaan ku arki doonaa wax sidan oo kale ah:
Codsigayaguna wuxuu ku furmi doonaa browserka caadiga ah:
Hadda, haddii aan isbeddel ku samayno faylka, codsigu waa inuu ku cusboonaysiiyaa browserka.
OK, wax walbaa way ku cad yihiin horumarinta qaabka maxalliga ah, laakiin sida loo gaaro isla OpenShift?
Adeegga horumarinta ee OpenShift
Haddii aad xasuusato, gudaha post hore, Waxaan eegnay waxa loogu yeero marxaladda orodka sawirka S2I oo aan aragnay in si caadi ah, moduleka adeegga uu mas'uul ka yahay u adeegida codsigayaga shabakadda.
Si kastaba ha ahaatee, haddii aad si dhow u fiirsato orod qoraalka Tusaalahaas, waxa ku jira doorsoomiyaha deegaanka $NPM_RUN, kaas oo kuu ogolaanaya inaad fuliso amarkaaga.
Tusaale ahaan, waxaan isticmaali karnaa moduleka nodeshift si aan u geyno codsigeena:
Fiiro gaar ah: Tusaalaha kore waxaa loo soo gaabiyey si loo muujiyo fikradda guud.
Halkan waxa aanu ku darnay doorsoomiyaha deegaanka NPM_RUN ee diristeena, kaas oo u sheegaya wakhtiga runtime si loo socodsiiyo amarka bilawga yarn, kaas oo ka bilaabaya server-ka horumarinta ee gudaha gudaha OpenShift pod.
Haddii aad eegto log of pod ordaya, waxay u ekaan doontaa sidan:
Dabcan, waxaas oo dhami waxba ma noqon doonaan ilaa aan isku dhejin karno koodhka maxalliga ah ee koodhka, kaas oo sidoo kale lala socdo isbeddelada, laakiin ku nool server fog.
Isku-dubarid meel fog iyo koodka deegaanka
Nasiib wanaag, nodeshift waxay si fudud uga caawin kartaa wada shaqaynta, waxaadna isticmaali kartaa amarka saacadda si aad ula socoto isbeddellada.
Markaa ka dib markii aan fulinay amarka si aan u geyno server-ka horumarinta ee codsigeena, waxaan si badbaado leh u isticmaali karnaa amarka soo socda:
$ npx nodeshift watch
Natiijo ahaan, waxaa la samayn doonaa isku xirka sanduuqa ordaya ee aan abuurnay wax yar ka hor, isku-dubbaridka faylalka maxalliga ah iyo kutlada fog ayaa la hawlgelin doonaa, faylasha nidaamka deegaankayaga ayaa bilaabi doona in lala socdo isbeddelada.
Sidaa darteed, haddii aan hadda cusbooneysiinno faylka src/App.js, nidaamku wuxuu ka falcelin doonaa isbeddeladan, ku koobi doona kutlada fog wuxuuna bilaabi doonaa server-ka horumarinta, ka dibna cusbooneysiin doona codsigayaga browserka.
Si loo dhamaystiro sawirka, aan tusno sida ay amarradan oo dhami u eg yihiin:
Amarka daawadu waa dulucda sare ee oc rsync, waxaad wax badan ka baran kartaa sida ay u shaqeyso halkan.
Tani waxay tusaale u ahayd React, laakiin isla habka saxda ah ayaa loo isticmaali karaa qaab-dhismeedka kale, kaliya deji doorsoomiyaha deegaanka NPM_RUN sida loo baahdo.
Tubooyinka shaqada furan
Marka xigta waxaan ka hadli doonaa qalab sida OpenShift Pipelines iyo sida loogu isticmaali karo beddelka dhismayaasha silsiladda ah.
Waa maxay OpenShift Pipelines
OpenShift Pipelines waa CI/CD is dhexgalka joogtada ah iyo habka gaarsiinta ee loogu talagalay habaynta dhuumaha iyadoo la isticmaalayo Tekton. Tekton waa ilo furan oo dabacsan Kubernetes-native CI / CD qaab-dhismeedka kaas oo kuu ogolaanaya inaad si otomaatig ah u geyso meelo kala duwan (Kubernetes, serverless, mashiinnada farsamada, iwm.) adoo ka soo baxaya lakabka hoose.
Fahamka maqaalkan wuxuu u baahan yahay xoogaa aqoon ah oo ku saabsan Tubooyinka, markaa waxaan si adag kuugula talineynaa inaad marka hore akhrido buugaag rasmi ah.
Dejinta jawiga shaqada
Si aad ugu ciyaarto tusaalooyinka maqaalkan, marka hore waxaad u baahan tahay inaad diyaariso jawiga shaqada:
Ku rakib oo habee kutlada OpenShift 4. Tusaalooyinkayagu waxay tan u isticmaalaan CodeReady Containers (CRD), tilmaamaha rakibaadda kaas oo laga heli karo halkan.
Ka dib marka kooxdu diyaar noqoto, waxaad u baahan tahay inaad ku rakibto Hawl-wadeenka Dhuumaha. Ha ka baqin, way fududahay, tilmaamaha rakibida halkan.
Ku samee Create-react-app aaladda khadka taliska si aad u abuurto codsi aad markaas geyn doonto (kani waa codsi fudud Diido).
(Ikhtiyaar) Xidho kaydka si aad muunada codsiga ugu socodsiiso gudaha npm ka dibna npm bilowdo.
Kaydka arjiga waxa kale oo lahaan doona gal k8s, kaas oo ka koobnaan doona Kubernetes/OpenShift YAMLs loo isticmaalo in arjiga la geeyo. Waxa jiri doona hawlo, hawlo kooxeed, khayraad iyo dhuumo kuwaas oo aanu ku abuuri doono tan kayd.
Aan bilowno
Talaabada koowaad ee tusaalaheena waa in aan samayno mashruuc cusub kooxda OpenShift. Aynu wacno mashruucan webapp-pipeline oo aynu ku abuurno amarka soo socda:
$ oc new-project webapp-pipeline
Magaca mashruucan waxa uu ka soo bixi doona koodka dambe, markaa haddii aad go'aansato inaad u magacowdo wax kale, ha ilaawin inaad u saxdo koodka tusaalaha si waafaqsan. Laga soo bilaabo bartan, ma aadi doono kor-hoos, laakiin hoos-sare: taas oo ah, waxaan marka hore abuuri doonaa dhammaan qaybaha qalabka, ka dibna kaliya ka dibna gaadiidka laftiisa.
Haddaba, marka hore...
Hawlaha
Aynu abuurno dhawr hawlood, kuwaas oo markaa gacan ka geysan doona in la geliyo codsiga gudaha dhuumahayaga. Hawsha koowaad - apply_manifests_task - waxay mas'uul ka tahay codsashada YAML ee agabyada Kubernetes (adeegga, geynta iyo dariiqa) ee ku yaal galka k8s ee codsigeena. Hawsha labaad - update_deployment_task - waxay mas'uul ka tahay cusboonaysiinta sawirka mar hore la geeyay midka ay abuurtay dhuumahayagu.
Ha ka werwerin haddii aanay aad u caddayn weli. Dhab ahaantii, hawlahani waa wax la mid ah utility, waxaanan si faahfaahsan u eegi doonaa iyaga wax yar ka dib. Hadda, aynu abuurno:
Hawlaha kooxdu waxay asal ahaan la mid yihiin hawlaha fudud. Taasi waa, waa ururin dib loo isticmaali karo oo tallaabooyin ah oo la isku daray si uun ama si kale marka la wado hawl gaar ah. Farqiga u dhexeeya ayaa ah in hawsha kooxdu laga heli karo meel kasta oo ka mid ah kooxda. Si aad u aragto liiska hawlaha kooxda ee si toos ah loo abuuray marka lagu daro Hawlwadeenka Pipeline, waxaanu mar kale isticmaali doonaa tkn CLI amarka:
$ tkn clustertask ls
NAME AGE
buildah 1 day ago
buildah-v0-10-0 1 day ago
jib-maven 1 day ago
kn 1 day ago
maven 1 day ago
openshift-client 1 day ago
openshift-client-v0-10-0 1 day ago
s2i 1 day ago
s2i-go 1 day ago
s2i-go-v0-10-0 1 day ago
s2i-java-11 1 day ago
s2i-java-11-v0-10-0 1 day ago
s2i-java-8 1 day ago
s2i-java-8-v0-10-0 1 day ago
s2i-nodejs 1 day ago
s2i-nodejs-v0-10-0 1 day ago
s2i-perl 1 day ago
s2i-perl-v0-10-0 1 day ago
s2i-php 1 day ago
s2i-php-v0-10-0 1 day ago
s2i-python-3 1 day ago
s2i-python-3-v0-10-0 1 day ago
s2i-ruby 1 day ago
s2i-ruby-v0-10-0 1 day ago
s2i-v0-10-0 1 day ago
Hadda aynu abuurno laba hawlood oo kooxeed. Midka ugu horreeya ayaa soo saari doona sawirka S2I oo u diri doona diiwaanka OpenShift gudaha; Midda labaad waa in aan dhisno muuqaalkeenna ku salaysan NGINX, annagoo adeegsanayna arjigii aan horay u dhisnay sida nuxur ahaan.
Samee oo dir sawirka
Marka la abuurayo hawsha ugu horreysa, waxaan ku celin doonaa wixii aan horey u sameynay maqaalkii hore ee ku saabsan shirarka isku xiran. Xusuusnow inaan isticmaalnay sawirka S2I (ubi8-s2i-web-app) si aan u "dhisno" codsigeena, oo aan ku dhamaynay sawir lagu kaydiyay diiwaanka gudaha ee OpenShift. Hadda waxaan isticmaali doonaa sawirkan S2I ee sawirka si aan u abuurno DockerFile abkayaga ka dibna u isticmaalno Buildah si aan u samayno dhismaha dhabta ah oo aan u riixno sawirka natiijada diiwaanka gudaha ee OpenShift, sababtoo ah taasi waa waxa OpenShift uu sameeyo marka aad geyso codsiyadaada adoo isticmaalaya NodeShift .
Sideen ku ogaanay waxaas oo dhan, waxaad waydiisaa? Ka Nooca rasmiga ah ee Node.js, hadda ayaanu koobiyeeyay oo anaga lafteena wax ka bedelnay.
Marka, hadda aan abuurno hawsha kooxda s2i-web-app:
Tan si faahfaahsan u falanqayn mayno, laakiin waxa kaliya ee diirada saari doona xadka OUTPUT_DIR:
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
Sida caadiga ah, halbeeggani waxa uu le'eg yahay in la dhiso, kaas oo ah halka React ay dhigto nuxurka la ururiyey. Hababka kale waxay isticmaalaan wadooyin kala duwan, tusaale ahaan, Ember waa dist. Wax-soo-saarka hawshayada kooxeed ee ugu horreysa waxay noqon doontaa sawir ka kooban HTML, JavaScript, iyo CSS-ka aan soo uruurinnay.
Dhis sawir ku salaysan NGINX
Xagga hawshayada kooxa labaad, waa inay noo dhistaa muuqaal NGINX ku salaysan, annagoo adeegsanayna nuxurka arjiga aanu hore u dhisnay. Asal ahaan, tani waa qaybtii hore ee aan ku eegnay dhismooyinka silsiladda ah.
Si tan loo sameeyo, annagu - si la mid ah kuwa kor ku xusan - waxay abuuri doonaan hawl kooxeed webapp-build-runtime:
Haddii aad eegto koodka hawlahan kutlada ah, waxaad arki kartaa in aanu cayimin kaydka Git ee aanu la shaqaynayno ama magacyada sawirada aanu abuurayno. Kaliya waxaan cadeyneynaa waxa saxda ah ee aan u wareejineyno Git, ama muuqaal gaar ah oo sawirka kama dambaysta ah la soo saari doono. Tani waa sababta hawlahan kooxdu dib loogu isticmaali karo marka lala shaqaynayo codsiyada kale.
Halkaana waxaan si xarago leh uga sii gudbi doonaa qodobka xiga...
Khayraadka
Marka, maadaama, sida aan hadda sheegnay, hawlaha kooxdu waa inay noqdaan kuwo guud ahaan intii suurtagal ah, waxaan u baahanahay inaan abuurno ilo loo isticmaali doono gelinta (bakhaarka Git) iyo sida wax soo saarka (sawirada ugu dambeeya). Kheyraadka ugu horreeya ee aan u baahanahay waa Git, halkaas oo codsigeygu yaallo, wax sidan oo kale ah:
# This resource is the location of the git repo with the web application source
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: web-application-repo
spec:
type: git
params:
- name: url
value: https://github.com/nodeshift-starters/react-pipeline-example
- name: revision
value: master
Hadda waxaan u baahanahay inaan abuurno kheyraad sawirka halkaas oo natiijooyinka hawsha s2i-web-app lagu keydin doono, tan waxaa loo sameeyaa sidan:
# This resource is the result of running "npm run build", the resulting built files will be located in /opt/app-root/output
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: built-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-application:latest
Halkan PipelineResource waa nooca sawirka, iyo qiimaha meertadu waxay tilmaamaysaa Diiwaanka Sawirka OpenShift ee gudaha, gaar ahaan midka ku yaal goobta magaca-beebabka webapp. Ha iloobin inaad beddesho goobtan haddii aad isticmaalayso meel magac kale leh.
Ugu dambeyntiina, ilaha ugu dambeeya ee aan u baahanahay waxay sidoo kale noqon doontaa nooca sawirka tanina waxay noqon doontaa sawirka NGINX ee ugu dambeeya kaas oo markaa loo isticmaali doono inta lagu jiro hawlgalinta:
# This resource is the image that will be just the static html, css, js files being run with nginx
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: runtime-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtime-web-application:latest
Mar labaad, ogow in agabkani uu ku kaydiyo sawirka gudaha diiwaanka OpenShift ee goobta magaca-beebabka webapp.
Si loo abuuro dhammaan agabkan hal mar, waxaan isticmaalnaa amarka abuurista:
Waxaanu markaa abuurnaa hawlaha ay u baahan yihiin in dhuunteenu dhamaystirto. Ugu horreyntii, waa inay fulisaa hawsha s2i-web-app ee aan horay u abuurnay:
Hawshani waxay qaadaa gelinta (khayraadka gir) iyo soo saarida (built-web-application-source) cabirrada. Waxaan sidoo kale u gudbinaa cabbir gaar ah si aysan u xaqiijin TLS maadaama aan isticmaaleyno shahaadooyin is-saxiix:
Sida hawshii hore, waxaynu ku gudbinaa kheyraad, laakiin hadda waa-web-application-image-ku-dhisan (wax-soo-saarka hawsheennii hore). Oo sida wax soo saarka waxaan mar kale dhigay sawirka. Maadaama hawshan ay tahay in la fuliyo ka dib tii hore, waxaan ku darnaa goobta runAfter:
Labada hawlood ee soo socda ayaa mas'uul ka ah isticmaalka adeegga, jidka iyo geynta faylalka YAML ee ku nool tusaha k8s ee codsigayaga shabakadda, iyo sidoo kale cusboonaysiinta hawlgelintan marka la abuurayo sawirro cusub. Labadan hawlood ee kooxdu waxaynu ku qeexnay bilowgii maqaalka.
Bilaabida gaadiidka qaada
Markaa, dhammaan qaybaha dhuumahayaga ayaa la abuuray, waxaanan ku socodsiin doonnaa amarkan soo socda:
$ tkn pipeline start build-and-deploy-react
Marxaladdan, khadka taliska waxaa loo istcimaalaa is dhexgal waxaadna u baahan tahay inaad dooratid kheyraadka ku habboon adoo ka jawaabaya mid kasta oo ka mid ah codsiyadiisa: kheyraadka git, dooro web-application-repo, ka dibna kheyraadka sawirka ugu horreeya, arji-web-arji ah. -image, iyo ugu dambeyntii, ilaha sawirka labaad -runtime-web-application-image:
? Choose the git resource to use for web-application-repo: web-application-repo (https://github.com/nodeshift-starters/react-pipeline-example)
? Choose the image resource to use for built-web-application-image: built-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-
application:latest)
? Choose the image resource to use for runtime-web-application-image: runtime-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtim
e-web-application:latest)
Pipelinerun started: build-and-deploy-react-run-4xwsr
Haddaba aynu eegno heerka ay marayso dhuumaha anagoo adeegsanayna amarkan soo socda:
$ tkn pipeline logs -f
Marka dhuumaha la bilaabo oo codsiga la geeyo, waxaan ku codsan karnaa dariiqa la daabacay oo leh amarka soo socda:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
Si aad u aragto muuqaal weyn, waxaad ku arki kartaa dhuumahayaga qaabka soo-saare ee konsole-ka shabakadda ee qaybta Meelaha dhuumaha, sida ku cad sawirka. 1.
Jaantuska.1. Dib u eegis ku saabsan socodka dhuumaha.