Mhoroi mose pane ino blog! Iyi ndiyo positi yechitatu munhevedzano yatinoratidza maitiro ekutumira mawebhu emazuva ano paRed Hat OpenShift.
Muzvinyorwa zviviri zvakapfuura, takaratidza nzira yekuendesa mawebhu emazuva ano mumatanho mashoma uye mashandisiro emufananidzo mutsva weS2I pamwe neiyo off-the-sherufu HTTP sevha mufananidzo, senge NGINX, uchishandisa maketani anovaka kurongedza zvigadzirwa zvekugadzira. .
Nhasi ticharatidza maitiro ekumhanyisa sevha yekuvandudza yekunyorera kwako papuratifomu yeOpenShift uye kuiwiriranisa neyemuno faira system, uye zvakare kutaura nezve izvo OpenShift Mapaipi uye kuti angashandiswa sei seimwe nzira kune yakabatana magungano.
OpenShift senzvimbo yekusimudzira
Development workflow
Sezvambotaurwa mu
Mune akawanda emazuva ano masisitimu, yakadai "sevha yekuvandudza" inovakwa mune inoenderana mitsara yekuraira maturusi.
Muenzaniso womunzvimbomo
Kutanga, ngatione kuti izvi zvinoshanda sei kana uchimhanyisa maapplication munharaunda. Ngatitorei application semuenzaniso
Saka, kutanga iyo "dev server" mune yedu React muenzaniso, isu tinoisa unotevera rairo:
$ npm run start
Zvadaro muhwindo rekupedzisira tichaona chimwe chinhu chakadai:
Uye application yedu ichavhura mune default browser:
Zvino, kana tikaita shanduko kufaira, iyo application inofanirwa kugadzirisa mubrowser.
Zvakanaka, zvese zvakajeka nekusimudzira mune yemuno modhi, asi maitiro ekuita zvakafanana paOpenShift?
Development server pa OpenShift
Kana uchirangarira, mu
Zvisinei, kana iwe ukanyatsotarisisa
Semuenzaniso, isu tinogona kushandisa iyo nodeshift module kuendesa application yedu:
$ npx nodeshift --deploy.env NPM_RUN="yarn start" --dockerImage=nodeshift/ubi8-s2i-web-app
Cherechedza: Muenzaniso uri pamusoro wakapfupikiswa kuratidza pfungwa huru.
Pano tawedzera iyo NPM_RUN nharaunda inosiyana kune yedu kuendesa, iyo inoudza iyo yekumhanyisa nguva yekumhanyisa tambo yekutanga kuraira, iyo inotanga React yekuvandudza server mukati medu OpenShift pod.
Kana iwe ukatarisa irogi yepodhi inomhanya, inotaridzika seizvi:
Ehe, zvese izvi hazvizove chinhu kudzamara takwanisa kuwiriranisa kodhi yemunharaunda nekodhi, iyo inotariswawo shanduko, asi inogara pane iri kure server.
Kubatanidza kodhi iri kure neyemunharaunda
Neraki, nodeshift inogona kubatsira nyore nekuyananisa, uye unogona kushandisa iyo wachi yekuraira kuteedzera shanduko.
Saka mushure mekunge tamhanya murairo wekuendesa sevha yekuvandudza yekushandiswa kwedu, tinogona kushandisa zvakachengeteka murairo unotevera:
$ npx nodeshift watch
Nekuda kweizvozvo, chinongedzo chichaitwa kune inomhanya pod yatakagadzira zvishoma kare, kuwiriranisa kwemafaira edu emunharaunda nesumbu rekure kuchaitwa, uye mafaera ari pane yedu yemunharaunda system anotanga kutariswa shanduko.
Naizvozvo, kana isu tagadzirisa ikozvino src/App.js faira, iyo sisitimu ichaita kune idzi shanduko, ikopidze kune iri kure cluster uye tanga sevha yekuvandudza, iyo inozovandudza application yedu mubrowser.
Kupedzisa mufananidzo, ngatiratidze kuti iyi mirairo yese yakaita sei:
$ npx nodeshift --strictSSL=false --dockerImage=nodeshift/ubi8-s2i-web-app --build.env YARN_ENABLED=true --expose --deploy.env NPM_RUN="yarn start" --deploy.port 3000
$ npx nodeshift watch --strictSSL=false
Murairo wewachi ndeyekubvisa pamusoro peiyo oc rsync command, unogona kudzidza zvakawanda nezve mashandiro ayo
Uyu waive muenzaniso weReact, asi iyo chaiyo nzira inogona kushandiswa nemamwe masisitimu, ingoisa iyo NPM_RUN nharaunda inosiyana sezvinodiwa.
β
Openshift Pipelines
Tevere tichazotaura nezve chishandiso chakaita seOpenShift Pipelines uye kuti ingashandiswa sei seimwe nzira kune akasungwa anovaka.
Chii chinonzi OpenShift Pipelines
OpenShift Pipelines ndeyegore-yekuzvarwa CI/CD inoenderera yekubatanidza uye yekuendesa sisitimu yakagadzirirwa kuronga mapaipi uchishandisa Tekton. Tekton inochinjika yakavhurika-sosi Kubernetes-yekuzvarwa CI/CD chimiro chinokutendera kuti uite otomatiki kutumira pane akasiyana mapuratifomu (Kubernetes, serverless, chaiwo muchina, nezvimwewo) nekubvisa kubva pasi peiyo layer.
Kunzwisisa chinyorwa ichi kunoda ruzivo rwePipelines, saka tinokurudzira kuti utange waverenga
Kugadzirisa nzvimbo yako yebasa
Kutamba nemienzaniso mune ino chinyorwa, iwe unofanirwa kutanga wagadzirira nzvimbo yako yekushanda:
- Isa uye gadzirisa sumbu reOpenShift 4. Mienzaniso yedu inoshandisa CodeReady Containers (CRD) yeizvi, mirairo yekuisa iyo inogona kuwanikwa.
pano . - Mushure mokunge boka racho ragadzirira, unoda kuisa Pipeline Operator pairi. Usatya, zviri nyore, mirayiridzo yekuisa
pano . - Download
Tekton CLI (tkn)pano . - Mhanya iyo gadzira-react-app yekuraira mutsara chishandiso kugadzira application yauchazoisa (ichi chiri nyore application
Taura ). - (Sarudzo) Clone iyo repository kumhanyisa muenzaniso application munharaunda ne npm install uye ipapo npm tanga.
Iyo repository repository ichavawo nek8s folda, iyo ichange iine Kubernetes/OpenShift YAMLs inoshandiswa kuendesa application. Pachave neMabasa, ClusterTasks, Zvishandiso uye Pipelines izvo zvatichagadzira mune izvi
Ngatitangei
Nhanho yekutanga yemuenzaniso wedu kugadzira purojekiti nyowani muOpenShift cluster. Ngatishevedzei iyi purojekiti webapp-pipeline uye tigadzire nemurairo unotevera:
$ oc new-project webapp-pipeline
Iri zita reprojekiti richaonekwa mune kodhi gare gare, saka kana ukafunga kuitumidza chimwe chinhu, usakanganwa kugadzirisa iyo muenzaniso kodhi zvinoenderana. Kutanga kubva panguva ino, isu hatisi kuzoenda kumusoro-pasi, asi pasi-kumusoro: ndiko kuti, isu tichatanga kugadzira zvese zvikamu zvemutakuri, uye chete ipapo mutakuri wacho pachawo.
Saka, chekutanga ...
Mabasa
Ngatigadzire akati wandei mabasa, ayo anozobatsira kuendesa application mukati mepombi yedu. Basa rekutanga - apply_manifests_task - rine basa rekushandisa iyo YAML yeayo Kubernetes zviwanikwa (sevhisi, kuendesa uye nzira) iri muk8s folda yechishandiso chedu. Basa rechipiri - update_deployment_task - rine basa rekugadzirisa mufananidzo wakatoiswa kune wakagadzirwa nepombi yedu.
Usanetseka kana zvisati zvanyatsojeka. Muchokwadi, aya mabasa chimwe chinhu senge zvishandiso, uye isu tichazvitarisa zvakadzama gare gare. Parizvino, ngatingozvigadzirai:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/update_deployment_task.yaml
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/apply_manifests_task.yaml
Zvadaro, tichishandisa tkn CLI murairo, tichatarisa kuti mabasa akagadzirwa here:
$ tkn task ls
NAME AGE
apply-manifests 1 minute ago
update-deployment 1 minute ago
Cherechedza: Aya ndiwo mabasa emunharaunda epurojekiti yako yazvino.
Cluster mabasa
Mabasa eCluster akangofanana neakareruka mabasa. Ndiko kuti, iri reusable muunganidzwa wematanho anosanganiswa neimwe nzira kana imwe pakuita rimwe basa. Musiyano ndewekuti basa remasumbu rinowanikwa kwese kwese mukati meboka. Kuti uone runyorwa rwemasumbu emabasa anogadzirwa otomatiki pakuwedzera Pipeline Operator, isu tichashandisa zvakare tkn CLI kuraira:
$ 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
Zvino ngatigadzirei maviri masumbu mabasa. Yekutanga ichagadzira iyo S2I mufananidzo uye woitumira kune yemukati OpenShift registry; chechipiri ndechekuvaka chifananidzo chedu chakavakirwa paNGINX, tichishandisa application yatakatovaka semukati.
Gadzira uye tumira mufananidzo
Pakugadzira basa rekutanga, tichadzokorora zvatakatoita munyaya yapfuura pamusoro pemagungano akabatanidzwa. Rangarira kuti takashandisa mufananidzo weS2I (ubi8-s2i-web-app) "kuvaka" application yedu, uye takaguma nemufananidzo wakachengetwa muOpenShift yemukati registry. Ikozvino tichashandisa iyi S2I yewebhu app mufananidzo kugadzira DockerFile yeapp yedu tobva tashandisa Buildah kuita iyo chaiyo kuvaka uye kusundira iyo inobuda mufananidzo kuOpenShift yemukati registry, sezvo ndizvo chaizvo zvinoitwa neOpenShift paunotumira zvikumbiro zvako uchishandisa NodeShift. .
Takaziva sei zvese izvi, unobvunza? Kubva
Saka, ikozvino ngatigadzire iyo s2i-web-app cluster basa:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/s2i-web-app-task.yaml
Hatisi kuzoongorora izvi zvakadzama, asi tinongotarisa paOUTPUT_DIR parameter:
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
Nekumisikidza, iyi paramende yakaenzana nekuvaka, kunova uko React inoisa izvo zvakaunganidzwa. Mamwe marongero anoshandisa nzira dzakasiyana, semuenzaniso, muEmber iri dist. Iko kuburitsa kwekutanga cluster basa redu richava mufananidzo une HTML, JavaScript, uye CSS yatakaunganidza.
Vaka mufananidzo wakavakirwa paNGINX
Kana iri basa redu rechipiri reboka, rinofanira kuvaka NGINX-based image kwatiri, tichishandisa zvinyorwa zvekushandiswa kwatakatovaka. Chaizvoizvo, ichi ndicho chikamu chechikamu chakapfuura apo takatarisa kune akasungwa anovaka.
Kuti tiite izvi, isu - zvakangofanana nepamusoro - tichagadzira cluster basa webapp-build-runtime:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/webapp-build-runtime-task.yaml
Kana iwe ukatarisa kodhi yeaya masumbu mabasa, unogona kuona kuti haina kutsanangura iyo Git repository yatiri kushanda nayo kana mazita emifananidzo yatiri kugadzira. Isu tinongotsanangura izvo chaizvo zvatiri kuendesa kuGit, kana imwe mufananidzo panofanira kubuda mufananidzo wekupedzisira. Ndokusaka aya mabasa emasumbu achigona kushandiswazve kana uchishanda nemamwe maapplication.
Uye pano isu tinoenda nenyasha kune inotevera pfungwa ...
Resources
Saka, sezvo, sezvatakangotaura, mabasa emasumbu anofanirwa kuve akajairwa sezvinobvira, isu tinofanirwa kugadzira zviwanikwa zvinozoshandiswa sekuisa (iyo Git repository) uye sekubuda (iyo yekupedzisira mifananidzo). Chekutanga sosi yatinoda iGit, panogara application yedu, chimwe chinhu chakadai:
# 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
Pano PipelineResource ndeyemhando git. Kiyi yeurl muchikamu cheparams inonongedza kune chaiyo repository uye inotsanangura iyo master bazi (izvi ndezvesarudzo, asi isu tinonyora kuti ikwane).
Iye zvino isu tinoda kugadzira sosi yemufananidzo uko mhedzisiro ye s2i-web-app basa ichachengetwa, izvi zvinoitwa seizvi:
# 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
Pano iyo PipelineResource ndeyemhando yemufananidzo, uye kukosha kweiyo url paramende kunongedza kune yemukati OpenShift Image Registry, kunyanya iyo iri mune webapp-pipeline namespace. Usakanganwe kushandura marongero aya kana uri kushandisa imwe nzvimbo yemazita.
Uye pakupedzisira, iyo yekupedzisira sosi yatinoda ichave zvakare yemhando yemufananidzo uye iyi ichave yekupedzisira NGINX mufananidzo unozoshandiswa panguva yekutumirwa:
# 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
Zvekare, cherechedza kuti iyi sosi inochengeta mufananidzo mune yemukati OpenShift registry mune webapp-pipeline namespace.
Kugadzira zvese izvi zviwanikwa kamwechete, isu tinoshandisa gadzira kuraira:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/resources/resource.yaml
Iwe unogona kuve nechokwadi chekuti zviwanikwa zvakagadzirwa seizvi:
$ tkn resource ls
Conveyor pipeline
Iye zvino zvatine zvese zvinodiwa, ngatiunganidze pombi kubva kwavari nekuigadzira nemurairo unotevera:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/pipelines/build-and-deploy-react.yaml
Asi tisati tamhanyisa murairo uyu, ngatitarisei zvikamu izvi. Chekutanga izita:
apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
name: build-and-deploy-react
Zvino muchikamu cheiyo tinoona chiratidzo chezviwanikwa zvatakagadzira kare:
spec:
resources:
- name: web-application-repo
type: git
- name: built-web-application-image
type: image
- name: runtime-web-application-image
type: image
Tinobva tagadzira mabasa ayo pombi yedu inoda kupedza. Chekutanga pane zvese, inofanirwa kuita iyo s2i-web-app basa ratakambogadzira:
tasks:
- name: build-web-application
taskRef:
name: s2i-web-app
kind: ClusterTask
Iri basa rinotora kupinza (gir resource) uye kubuda (yakavakwa-web-application-image resource) paramita. Isu tinoipfuudzawo yakakosha paramende kuti irege kuratidza TLS sezvo isu tiri kushandisa isu takazvisaina zvitupa:
resources:
inputs:
- name: source
resource: web-application-repo
outputs:
- name: image
resource: built-web-application-image
params:
- name: TLSVERIFY
value: "false"
Basa rinotevera rinenge rakafanana, chete pano iyo webapp-build-runtime cluster basa yatakatogadzira inonzi:
name: build-runtime-image
taskRef:
name: webapp-build-runtime
kind: ClusterTask
Sezvakaita nebasa rekare, isu tinopfuura mune sosi, asi ikozvino yakavakirwa-web-application-image (kubuda kwebasa redu rekare). Uye sekubuda isu zvakare takaisa mufananidzo. Sezvo basa iri richifanira kuitwa mushure mekare, tinowedzera iyo runAfter field:
resources:
inputs:
- name: image
resource: built-web-application-image
outputs:
- name: image
resource: runtime-web-application-image
params:
- name: TLSVERIFY
value: "false"
runAfter:
- build-web-application
Mabasa maviri anotevera ane basa rekushandisa sevhisi, nzira uye kuendesa YAML mafaera anogara mu k8s dhairekitori rewebhu application yedu, uye zvakare nekugadzirisa uku kutumirwa paunenge uchigadzira mifananidzo mitsva. Takatsanangura aya maviri masumbu mabasa pakutanga kwechinyorwa.
Kutanga conveyor
Saka, zvikamu zvese zvepombi yedu zvinogadzirwa, uye isu tichaimhanyisa nemurairo unotevera:
$ tkn pipeline start build-and-deploy-react
Panguva ino, mutsara wekuraira unoshandiswa zvinopindirana uye iwe unofanirwa kusarudza zviwanikwa zvakakodzera mukupindura kune chimwe nechimwe chezvikumbiro zvawo: yegit resource, sarudza webhu-application-repo, ipapo kune yekutanga mufananidzo sosi, yakavakirwa-web-application. -image, uye pakupedzisira, yechipiri mufananidzo sosi -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
Zvino ngatitarisei mamiriro epombi tichishandisa murairo unotevera:
$ tkn pipeline logs -f
Kana pombi yatanga uye application yaiswa, tinogona kukumbira nzira yakaburitswa nemurairo unotevera:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
Kuti utarise zvakanyanya, unogona kuona pombi yedu muDeveloper mode yewebhu console muchikamu Mapipi, sezvinoratidzwa muFig. 1.
Fig.1. Ongororo yekumhanya mapaipi.
Kudzvanya papombi inomhanya kunoratidza zvimwe, sezvakaratidzwa mumufananidzo 2.
Mupunga. 2. Rumwe ruzivo nezve pombi.
Mushure meruzivo rwakawanda, iwe unogona kuona kumhanya maapplication mukuona Topology, sezvinoratidzwa muFig.3.
Fig 3. Yakatangwa pod.
Kudzvanya padenderedzwa pakona yepamusoro yekurudyi kwechiratidzo kunovhura application yedu, sezvakaratidzwa muFig. 4.
Mupunga. 4. Running React application.
mhedziso
Saka, isu takaratidza maitiro ekumhanyisa sevha yekuvandudza yeapp yako paOpenShift uye kuiwiriranisa neyemuno faira system. Isu takatarisawo maitiro ekutevedzera akasungwa-kuvaka template uchishandisa OpenShift Pipelines. Yese makodhi makodhi kubva kuchinyorwa ichi anogona kuwanikwa
Zvimwe zvekushandisa (EN)
- E-bhuku remahara
"Kuvandudza paOpenShift: gwara kune vasina moyo murefu" Kuvaka mudziyo-centric Node.js maapplication uchishandisa Red Hat OpenShift Application Runtimes uye Istio Kugadzirisa zvirongwa zveNode.js paOpenShift uchishandisa Chrome DevTools Mirairo mitatu yekugona Express paOpenShift kubva kutanga Kuziviswa kweiyo inowanzo kuwanikwa vhezheni yeNode.js sechikamu cheRed Hat OpenShift Application Runtimes. Kutarisisa Node.js Zvishandiso paOpenShift nePrometheus - Zvimwe zvinyorwa pa
OpenShift uye Kubernetes pa Red Hat webhusaiti
Zviziviso zvemawebinars anotevera
Tiri kutanga nhevedzano yeChishanu webinars nezve chiitiko chemuno tichishandisa Red Hat OpenShift Container Platform uye Kubernetes:
Nyamavhuvhu 28, webinar Emperor "Operator": Vashandisi muOpenShift uye Kubernetes Gunyana 11, DeploymentConfig vs Deployment - OpenShift-chaiwo mashiripiti ekuvaka uye kutumira maapplication. Gunyana 25, Red Hat OpenShift uye Machine API Gumiguru 9, Maitiro ekutsungirira nekuwedzera kamwe kamwe kwemutoro webasa Gumiguru 23, Yakamisikidzwa Jenkins, Pipeline-inovaka, Tekton muRed Hat OpenShift Container Platform
Source: www.habr.com