Zvishandiso zvemazuva ano paOpenShift, chikamu 2: akasungwa anovaka

Mhoroi mose! Iyi ndiyo yechipiri positi munhevedzano yedu yatinoratidza maitiro ekutumira mawebhu emazuva ano paRed Hat OpenShift.

Zvishandiso zvemazuva ano paOpenShift, chikamu 2: akasungwa anovaka

Muchinyorwa chakapfuura, takabata zvishoma nezve kugona kweiyo S2I nyowani (source-to-image) muvaki mufananidzo, wakagadzirirwa kuvaka uye kutumira mawebhusaiti emazuva ano papuratifomu yeOpenShift. Ipapo takanga tichifarira nyaya yekukurumidza kutumira application, uye nhasi tichatarisa mashandisiro emufananidzo weS2I se "wakachena" muvaki mufananidzo uye wousanganisa nemagungano ane hukama neOpenShift.

Yakachena muvaki mufananidzo

Sezvatakataura muChikamu XNUMX, mazhinji emazuva ano mawebhu application ane inonzi nhanho yekuvaka, iyo inowanzoita mashandiro akadai sekududzira kodhi, akawanda faira concatenation, uye minification. Iwo mafaera akawanikwa nekuda kwekuita uku - uye iyi static HTML, JavaScript uye CSS - inochengetwa mune inobuda folda. Nzvimbo yeiyi folda inowanzoenderana nekuti zvii zvekuvaka zviri kushandiswa, uye zveReact iyi ichave iyo ./build folda (tichadzoka kune izvi zvakadzama pazasi).

Kunobva-ku-Mufananidzo (S2I)

Mune ino positi isu hatibati pamusoro pemusoro wekuti "chii chinonzi S2I uye mashandisiro acho" (unogona kuverenga zvakawanda nezve izvi. pano), asi zvakakosha kujekesa nezvematanho maviri mukuita uku kuti unzwisise zvinoitwa neWeb App Builder mufananidzo.

Gungano chikamu

Chikamu chegungano chakafanana chaizvo muchisikirwo kune zvinoitika kana iwe uchimhanya docker kuvaka uye kupedzisira uine Docker mufananidzo mutsva. Saizvozvo, iyi nhanho inoitika kana uchitanga kuvaka pane OpenShift papuratifomu.

Panyaya yemufananidzo weWebhu App Builder, ine basa rekuisa zvinomirirwa nechishandiso chako uye nekumhanyisa kuvaka. unganidza script. Nekutadza, muvaki mufananidzo anoshandisa npm run kuvaka kuvaka, asi izvi zvinogona kudhindwa kuburikidza neNPM_BUILD nharaunda inosiyana.

Sezvatakambotaura, nzvimbo yekupedza, yakatovakwa application zvinoenderana nekuti ndeapi maturusi aunoshandisa. Semuenzaniso, mune iyo React iyi ichave iyo ./build folda, uye yeAngular application ichave iyo project_name/dist folda. Uye, sezvakatoratidzwa mune yapfuura positi, nzvimbo yekubuda dhairekitori, iyo yakagadzirirwa kuvaka neyakagadzika, inogona kudhindwa kuburikidza neOUTPUT_DIR nharaunda inosiyana. Zvakanaka, sezvo nzvimbo yeforodha yekubuda ichisiyana kubva kune dhizaini kuenda kune dhizaini, iwe unongokopa iyo inoburitswa kune yakajairwa folda mumufananidzo, iyo /opt/apt-root/output. Izvi zvakakosha kuti tinzwisise zvimwe zvechinyorwa ichi, asi ikozvino ngatitarisei padanho rinotevera - chikamu chekumhanya.

run phase

Iyi nhanho inoitika kana kufona kune docker run kunoitwa pamufananidzo mutsva wakagadzirwa panguva yegungano. Izvo zvakafanana zvinoitika kana uchitumira pane OpenShift papuratifomu. Default run script anoshandisa shandisa module kuti ushumire static content iri pamusoro apa yakajairika yakabuda dhairekitori.

Iyi nzira yakanakira kukurumidza kutumira maapplication, asi kazhinji haina kukurudzirwa kushandira static zvirimo nenzira iyi. Zvakanaka, sezvo muchokwadi isu tinongoshandira static zvemukati, hatidi Node.js yakaiswa mukati memufananidzo wedu - sevha yewebhu inokwana.

Mune mamwe mazwi, pakuunganidza tinoda chinhu chimwe, kana tichiita tinoda chimwe. Mumamiriro ezvinhu aya, maketani anovaka anouya anobatsira.

Akasungwa anovaka

Izvi ndizvo zvavanonyora nezvazvo maketani anovaka mune OpenShift zvinyorwa:

"Magungano maviri anogona kubatanidzwa pamwe chete, imwe ichigadzira mubatanidzwa uye imwe ichitambira icho mumufananidzo wakasiyana unoshandiswa kufambisa icho."

Mune mamwe mazwi, isu tinogona kushandisa iyo Webhu App Builder mufananidzo kumhanya yedu kuvaka, uye toshandisa iyo web server mufananidzo, iyo yakafanana NGINX, kushandira zvirimo zvedu.

Nokudaro, tinogona kushandisa mufananidzo weWeb App Builder se "pure" muvaki uye panguva imwechete tine mufananidzo muduku wekumhanya.

Zvino ngatitarisei izvi nemuenzaniso chaiwo.

Pakudzidzisa tichashandisa simple React application, yakagadzirwa uchishandisa gadzira-react-app command line tool.

Zvichatibatsira kubatanidza zvinhu zvose OpenShift template file.

Ngatitarisei faira iri mune zvakadzama, uye tanga nechikamu cheparamita.

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

Zvose pano zvakajeka, asi zvakakodzera kubhadhara kune OUTPUT_DIR parameter. Kune iyo React application mumuenzaniso wedu, hapana chekunetsekana nazvo, sezvo React inoshandisa iyo yakasarudzika kukosha seyakabuda folda, asi mune yeAngular kana chimwe chinhu, iyi parameter inoda kuchinjwa sezvinodiwa.

Zvino ngatitarisei chikamu che ImageStreams.

- apiVersion: v1
  kind: ImageStream
  metadata:
    name: react-web-app-builder  // 1 
  spec: {}
- apiVersion: v1
  kind: ImageStream
  metadata:
    name: react-web-app-runtime  // 2 
  spec: {}
- apiVersion: v1
  kind: ImageStream
  metadata:
    name: web-app-builder-runtime // 3
  spec:
    tags:
    - name: latest
      from:
        kind: DockerImage
        name: nodeshift/ubi8-s2i-web-app:10.x
- apiVersion: v1
  kind: ImageStream
  metadata:
    name: nginx-image-runtime // 4
  spec:
    tags:
    - name: latest
      from:
        kind: DockerImage
        name: 'centos/nginx-112-centos7:latest'

Tarisa pamufananidzo wechitatu nechina. Iwo ese ari maviri anotsanangurwa seDocker mifananidzo, uye unogona kuona zvakajeka kwavanobva.

Mufananidzo wechitatu ndewewebhu-app-muvaki uye unobva ku nodeshift/ubi8-s2i-web-app yakamaka 10.x pa Docker hub.

Yechina mufananidzo weNGINX (vhezheni 1.12) ine tag yazvino Docker hub.

Zvino ngatitarisei pamifananidzo miviri yekutanga. Iwo ose haana chinhu pakutanga uye anogadzirwa chete panguva yekuvaka chikamu. Mufananidzo wekutanga, react-web-app-builder, uchave mugumisiro wenhanho yegungano iyo ichabatanidza iyo web-app-builder-runtime image uye yedu source code. Ndosaka takawedzera "-muvaki" kuzita remufananidzo uyu.

Mufananidzo wechipiri - react-web-app-runtime - ichave mhedzisiro yekubatanidza nginx-image-runtime uye mamwe mafaera kubva kune react-web-app-muvaki mufananidzo. Ichi chifananidzo chichashandiswawo panguva yekuendesa uye chinongova newebhu server uye static HTML, JavaScript, CSS yechishandiso chedu.

Kuvhiringika? Zvino ngatitarisei magadzirirwo ekuvaka uye zvichava zvishoma kujeka.

Yedu template ine maviri ekuvaka masisitimu. Heino yekutanga, uye yakanaka mwero:

  apiVersion: v1
  kind: BuildConfig
  metadata:
    name: react-web-app-builder
  spec:
    output:
      to:
        kind: ImageStreamTag
        name: react-web-app-builder:latest // 1
    source:   // 2 
      git:
        uri: ${SOURCE_REPOSITORY_URL}
        ref: ${SOURCE_REPOSITORY_REF}
      contextDir: ${SOURCE_REPOSITORY_DIR}
      type: Git
    strategy:
      sourceStrategy:
        env:
          - name: OUTPUT_DIR // 3 
            value: ${OUTPUT_DIR}
        from:
          kind: ImageStreamTag
          name: web-app-builder-runtime:latest // 4
        incremental: true // 5
      type: Source
    triggers: // 6
    - github:
        secret: ${GITHUB_WEBHOOK_SECRET}
      type: GitHub
    - type: ConfigChange
    - imageChange: {}
      type: ImageChange

Sezvauri kuona, mutsara une label 1 unotaura kuti mhedzisiro yekuvaka iyi ichaiswa mune imwecheteyo react-web-app-muvaki mufananidzo watakaona zvishoma kare muchikamu che ImageStreams.

Mutsetse wakanyorwa 2 unokuudza kwaunowana iyo code kubva. Kwatiri, iyi git repository, uye nzvimbo, ref uye dhairekitori folda inotemerwa nemaparamita atatoona pamusoro.

Mutsetse wakanyorwa kuti 3 ndiwo watakatoona muchikamu cheparameter. Iyo inowedzera iyo OUTPUT_DIR nharaunda shanduko, iyo mumuenzaniso wedu inovaka.
Mutsetse wakanyorwa 4 unoti shandisa iyo web-app-builder-runtime image, yatakatoona muchikamu che ImageStream.

Mutsetse wakanyorwa 5 unoti isu tinoda kushandisa yakawedzera kuvaka kana iyo S2I mufananidzo ichitsigira, uye iyo Webhu App Builder mufananidzo unodaro. Pakuvhurwa kwekutanga, mushure mekupedza nhanho yegungano, mufananidzo unochengetedza node_modules folda mufaira rekuchengetedza. Zvadaro, pane zvinotevera zvinomhanya, mufananidzo wacho unongosunungura iyi folda kuderedza nguva yekuvaka.

Uye pakupedzisira, mutsara wakanyorwa 6 ungori mashoma ezvinokonzeresa kuti kuvaka kumhanye otomatiki, pasina kupindira kwemanyorero, kana chimwe chinhu chachinja.

Pakazara iyi yakanaka standard kuvaka gadziriso.

Zvino ngatitarisei yechipiri kuvaka gadziriso. Yakafanana chaizvo neyekutanga, asi pane musiyano umwechete unokosha.

apiVersion: v1
  kind: BuildConfig
  metadata:
    name: react-web-app-runtime
  spec:
    output:
      to:
        kind: ImageStreamTag
        name: react-web-app-runtime:latest // 1
    source: // 2
      type: Image
      images:                              
        - from:
            kind: ImageStreamTag
            name: react-web-app-builder:latest // 3
          paths:
            - sourcePath: /opt/app-root/output/.  // 4
              destinationDir: .  // 5
             
    strategy: // 6
      sourceStrategy:
        from:
          kind: ImageStreamTag
          name: nginx-image-runtime:latest
        incremental: true
      type: Source
    triggers:
    - github:
        secret: ${GITHUB_WEBHOOK_SECRET}
      type: GitHub
    - type: ConfigChange
    - type: ImageChange
      imageChange: {}
    - type: ImageChange
      imageChange:
        from:
          kind: ImageStreamTag
          name: react-web-app-builder:latest // 7

Saka chechipiri kuvaka gadziriso ndeye react-web-app-runtime, uye inotanga kunze kwakanaka.

Mutsetse wakanyorwa 1 hachisi chinhu chitsva - chinongotaura kuti mhedzisiro inoiswa mune react-web-app-runtime mufananidzo.

Mutsetse wakanyorwa 2, semagadzirirwo apfuura, unoratidza kwaunowana iyo source code kubva. Asi cherechedza kuti pano tiri kutaura kuti yakatorwa pamufananidzo. Uyezve, kubva pamufananidzo watichangobva kugadzira - kubva react-web-app-builder (inoratidzwa mumutsetse wakanyorwa 3). Mafaira atinoda kushandisa ari mukati memufananidzo uye nzvimbo yavo iripo yakaiswa mumutsara wakanyorwa 4, kwatiri isu ndeye /opt/app-root/output/. Kana iwe uchirangarira, apa ndipo panochengetwa mafaera akagadzirwa zvichienderana nemhedzisiro yekuvaka application yedu.

Iyo folda yekuenda inotsanangurwa muizwi ine label 5 ingori dhairekitori razvino (izvi ndizvo zvese, rangarira, kumhanya mukati mechimwe chinhu chemashiripiti chinonzi OpenShift, uye kwete pakombuta yako yemuno).

Chikamu chezano - mutsara wakanyorwa 6 - wakafananawo nekutanga kuvaka gadziriro. Chete nguva ino yatichashandisa nginx-image-runtime, yatakatoona muchikamu che ImageStream.

Chekupedzisira, mutsara wakanyorwa 7 chikamu chezvinokonzeresa icho chinomutsa ichi chivakwa pese apo react-web-app-builder mufananidzo unochinja.

Zvikasadaro, iyi template ine yakanaka yakajairwa deployment kumisikidzwa, pamwe nezvinhu zvine chekuita nemasevhisi uye nzira, asi isu hatipinde mune izvo zvakawandisa. Ndapota cherechedza kuti mufananidzo uchashandiswa ndeye react-web-app-runtime image.

Application Deployment

Saka zvino zvatatarisa template, ngationei kuti tingaishandisa sei kuendesa application.

Tinogona kushandisa OpenShift mutengi chishandiso chinonzi oc kuendesa template yedu:

$ find . | grep openshiftio | grep application | xargs -n 1 oc apply -f

$ oc new-app --template react-web-app -p SOURCE_REPOSITORY_URL=https://github.com/lholmquist/react-web-app

Murairo wekutanga pamufananidzo uri pamusoro inzira yemauenjiniya yekutsvaga template./openshiftio/application.yaml.

Wechipiri murairo unongogadzira chishandiso chitsva chakavakirwa pane iyi template.

Mushure mekushanda kwemirairo iyi, tichaona kuti tine magungano maviri:

Zvishandiso zvemazuva ano paOpenShift, chikamu 2: akasungwa anovaka

Uye kudzokera kuChiratidziro chidzitiro, tichaona iyo yakatangwa pod:

Zvishandiso zvemazuva ano paOpenShift, chikamu 2: akasungwa anovaka

Dzvanya chinongedzo uye isu tichaendeswa kuapp yedu, inova peji reReact App peji:

Zvishandiso zvemazuva ano paOpenShift, chikamu 2: akasungwa anovaka

Kuwedzera 1

Kune vanoda Angular tinewo muenzaniso application.

Patani iri pano yakafanana, kunze kwekusiyana kweOUTPUT_DIR.

Kuwedzera 2

Muchikamu chino takashandisa NGINX sevhavha yewebhu, asi zviri nyore kuitsiva neApache, ingoshandura template mufaira. NGINX mufananidzo pamusoro Apache mufananidzo.

mhedziso

Muchikamu chekutanga cheiyi nhevedzano, takaratidza nzira yekukurumidza kuendesa mawebhusaiti emazuva ano papuratifomu yeOpenShift. Nhasi takatarisa zvinoitwa nemufananidzo weWebhu App uye kuti ungasanganiswa sei newebhu savha yakachena senge NGINX uchishandisa maketani anovaka kugadzira imwe yekugadzira-yakagadzirira application kuvaka. Muchinyorwa chinotevera uye chekupedzisira mune ino nhevedzano, isu ticharatidza maitiro ekumhanyisa sevha yekuvandudza yeapp yako paOpenShift uye nekuona kuwiriraniswa kwemafaira emunharaunda uye kure.

Zviri mukati meiyi nhevedzano yezvinyorwa

  • Chikamu 1: nzira yekuendesa maapplication emazuva ano ewebhu mumatanho mashoma;
  • Chikamu 2: Mashandisiro echifananidzo cheS2I chitsva chine mufananidzo uripo weHTTP server, senge NGINX, uchishandisa magungano eOpenShift anosanganisirwa ekutumira kugadzirwa;
  • Chikamu 3: maitiro ekumhanyisa sevha yekuvandudza yeako application paOpenShift papuratifomu uye kuiwiriranisa neyemuno faira system.

Zvimwe Zvishandiso

Source: www.habr.com

Voeg