Zvishandiso zvemazuva ano paOpenShift, chikamu 3: OpenShift senzvimbo yekusimudzira uye OpenShift Pipelines

Mhoroi mose pane ino blog! Iyi ndiyo positi yechitatu munhevedzano yatinoratidza maitiro ekutumira mawebhu emazuva ano paRed Hat OpenShift.

Zvishandiso zvemazuva ano paOpenShift, chikamu 3: OpenShift senzvimbo yekusimudzira uye OpenShift Pipelines

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 yekutanga post, iyo yakajairwa yekuvandudza maitiro emazuva ano ewebhu maapplication ingori imwe mhando ye "development server" inoteedzera shanduko kumafaira emunharaunda. Pazvinoitika, iyo application kuvaka inokonzereswa uye yobva yagadziridzwa kubrowser.

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 Taura kubva muzvinyorwa zvakapfuura, kunyangwe pfungwa dzakafanana dzekufamba kwebasa dzinoshanda mune mamwe ese azvino masisitimu.
Saka, kutanga iyo "dev server" mune yedu React muenzaniso, isu tinoisa unotevera rairo:

$ npm run start

Zvadaro muhwindo rekupedzisira tichaona chimwe chinhu chakadai:

Zvishandiso zvemazuva ano paOpenShift, chikamu 3: OpenShift senzvimbo yekusimudzira uye OpenShift Pipelines

Uye application yedu ichavhura mune default browser:

Zvishandiso zvemazuva ano paOpenShift, chikamu 3: OpenShift senzvimbo yekusimudzira uye OpenShift Pipelines

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 yapfuura post, takatarisa iyo inonzi run phase yemufananidzo weS2I uye takaona kuti nekusarudzika, iyo server module ine basa rekushandira webhu application yedu.

Zvisinei, kana iwe ukanyatsotarisisa run script kubva pamuenzaniso iwoyo, ine iyo $ NPM_RUN nharaunda inosiyana, iyo inokutendera iwe kuita kuraira kwako.

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:

Zvishandiso zvemazuva ano paOpenShift, chikamu 3: OpenShift senzvimbo yekusimudzira uye OpenShift Pipelines

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 pano.

Uyu waive muenzaniso weReact, asi iyo chaiyo nzira inogona kushandiswa nemamwe masisitimu, ingoisa iyo NPM_RUN nharaunda inosiyana sezvinodiwa.
 

Openshift Pipelines

Zvishandiso zvemazuva ano paOpenShift, chikamu 3: OpenShift senzvimbo yekusimudzira uye 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 bhuku repamutemo.

Kugadzirisa nzvimbo yako yebasa

Kutamba nemienzaniso mune ino chinyorwa, iwe unofanirwa kutanga wagadzirira nzvimbo yako yekushanda:

  1. Isa uye gadzirisa sumbu reOpenShift 4. Mienzaniso yedu inoshandisa CodeReady Containers (CRD) yeizvi, mirairo yekuisa iyo inogona kuwanikwa. pano.
  2. Mushure mokunge boka racho ragadzirira, unoda kuisa Pipeline Operator pairi. Usatya, zviri nyore, mirayiridzo yekuisa pano.
  3. Download Tekton CLI (tkn) pano.
  4. Mhanya iyo gadzira-react-app yekuraira mutsara chishandiso kugadzira application yauchazoisa (ichi chiri nyore application Taura).
  5. (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 repositories.

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 vhezheni yepamutemo yeNode.js, takangokopa uye kuzvigadziridza isu pachedu.

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.

Zvishandiso zvemazuva ano paOpenShift, chikamu 3: OpenShift senzvimbo yekusimudzira uye OpenShift Pipelines

Fig.1. Ongororo yekumhanya mapaipi.

Kudzvanya papombi inomhanya kunoratidza zvimwe, sezvakaratidzwa mumufananidzo 2.

Zvishandiso zvemazuva ano paOpenShift, chikamu 3: OpenShift senzvimbo yekusimudzira uye OpenShift Pipelines

Mupunga. 2. Rumwe ruzivo nezve pombi.

Mushure meruzivo rwakawanda, iwe unogona kuona kumhanya maapplication mukuona Topology, sezvinoratidzwa muFig.3.

Zvishandiso zvemazuva ano paOpenShift, chikamu 3: OpenShift senzvimbo yekusimudzira uye OpenShift Pipelines

Fig 3. Yakatangwa pod.

Kudzvanya padenderedzwa pakona yepamusoro yekurudyi kwechiratidzo kunovhura application yedu, sezvakaratidzwa muFig. 4.

Zvishandiso zvemazuva ano paOpenShift, chikamu 3: OpenShift senzvimbo yekusimudzira uye OpenShift Pipelines

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 pano.

Zvimwe zvekushandisa (EN)

Zviziviso zvemawebinars anotevera

Tiri kutanga nhevedzano yeChishanu webinars nezve chiitiko chemuno tichishandisa Red Hat OpenShift Container Platform uye Kubernetes:

Source: www.habr.com

Voeg