Tagraidhean ùr-nodha air OpenShift, pàirt 2: togalaichean slabhraidh

Hi uile! Is e seo an dàrna post san t-sreath againn anns a bheil sinn a’ sealltainn mar a chleachdas tu tagraidhean lìn ùr-nodha air Red Hat OpenShift.

Tagraidhean ùr-nodha air OpenShift, pàirt 2: togalaichean slabhraidh

Anns an dreuchd roimhe, thug sinn beagan suathadh air comasan ìomhaigh neach-togail ùr S2I (tobar-gu-image), a tha air a dhealbhadh airson a bhith a’ togail agus a’ cleachdadh thagraidhean lìn ùr-nodha air an àrd-ùrlar OpenShift. An uairsin bha ùidh againn anns a’ chuspair mu bhith a’ cleachdadh tagradh gu sgiobalta, agus an-diugh seallaidh sinn air mar a chleachdas sinn ìomhaigh S2I mar ìomhaigh neach-togail “fìor-ghlan” agus ga chur còmhla ri co-chruinneachaidhean OpenShift co-cheangailte.

Dealbh neach-togail glan

Mar a thuirt sinn ann am Pàirt XNUMX, tha ìre togail ris an canar a’ mhòr-chuid de thagraidhean lìn ùr-nodha, a bhios mar as trice a’ coileanadh obrachaidhean leithid tar-chuir còd, co-chruinneachadh ioma-fhaidhlichean, agus mionachadh. Tha na faidhlichean a gheibhear mar thoradh air na h-obraichean sin - agus is e HTML statach, JavaScript agus CSS a tha seo - air an stòradh sa phasgan toraidh. Mar as trice bidh suidheachadh a’ phasgan seo an urra ri dè na h-innealan togail a thathas a’ cleachdadh, agus airson React is e seo am pasgan ./build (thig sinn air ais thuige seo nas mionaidiche gu h-ìosal).

Stòr-gu-Ìomhaigh (S2I)

Anns an dreuchd seo cha bhith sinn a’ bruidhinn air a’ chuspair “dè a th’ ann an S2I agus mar a chleachdas tu e” (faodaidh tu barrachd a leughadh mu dheidhinn seo an seo), ach tha e cudromach a bhith soilleir mun dà cheum sa phròiseas seo gus tuigsinn dè a bhios ìomhaigh Web App Builder a’ dèanamh.

Ìre cruinneachaidh

Tha an ìre cruinneachaidh glè choltach ann an nàdar ris na thachras nuair a ruitheas tu togail docker agus a thig gu crìch le ìomhaigh Docker ùr. Mar sin, bidh an ìre seo a’ tachairt nuair a thòisicheas tu air togail air an àrd-ùrlar OpenShift.

A thaobh ìomhaigh Web App Builder, tha e an urra ri eisimeileachd an tagraidh agad a chuir a-steach agus an togail a ruith. sgriobt a chruinneachadh. Gu gnàthach, bidh ìomhaigh an neach-togail a’ cleachdadh an togail togail ruith npm, ach faodar seo a thoirt thairis tro chaochladair àrainneachd NPM_BUILD.

Mar a thuirt sinn na bu thràithe, tha suidheachadh an tagraidh deiseil, a chaidh a thogail mar-thà an urra ri dè na h-innealan a chleachdas tu. Mar eisimpleir, a thaobh React is e seo am pasgan ./build, agus airson tagraidhean Angular is e am pasgan project_name/dist a bhios ann. Agus, mar a chithear sa phost roimhe, faodar suidheachadh an eòlaire toraidh, a thathar an dùil a thogail gu bunaiteach, a chuir thairis tro chaochladair àrainneachd OUTPUT_DIR. Uill, leis gu bheil suidheachadh a’ phasgan toraidh eadar-dhealaichte bho fhrèam gu frèam, dìreach dèan lethbhreac den toradh a chaidh a ghineadh chun phasgan àbhaisteach san ìomhaigh, is e sin / opt/apt-root/output. Tha seo cudromach airson an còrr den artaigil seo a thuigsinn, ach airson a-nis leig dhuinn sùil a thoirt gu sgiobalta air an ath ìre - an ìre ruith.

ruith ìre

Bidh an ìre seo a’ tachairt nuair a thèid gairm gu ruith docker a dhèanamh air an ìomhaigh ùr a chaidh a chruthachadh aig ìre an t-seanaidh. Bidh an aon rud a’ tachairt nuair a thèid a chleachdadh air an àrd-ùrlar OpenShift. Deònach ruith sgriobt cleachdaidhean modal seirbheis gus susbaint statach a tha suidhichte anns an eòlaire toraidh àbhaisteach gu h-àrd a fhrithealadh.

Tha an dòigh seo math airson a bhith a’ cleachdadh thagraidhean gu sgiobalta, ach sa chumantas chan eilear a’ moladh susbaint statach a fhrithealadh san dòigh seo. Uill, leis nach eil sinn a’ toirt seirbheis ach do shusbaint statach, chan fheum sinn Node.js a chuir a-steach san ìomhaigh againn - bidh frithealaiche lìn gu leòr.

Ann am faclan eile, nuair a bhios sinn a 'cruinneachadh feumaidh sinn aon rud, nuair a bhios sinn a' coileanadh feumaidh sinn rud eile. Anns an t-suidheachadh seo, thig togalaichean slabhraidh gu feum.

Togail slabhraidh

Seo na tha iad a’ sgrìobhadh mu dheidhinn togail slabhraidhean anns na sgrìobhainnean OpenShift:

“Faodar dà cho-chruinneachadh a cheangal ri chèile, le aon a’ gineadh eintiteas cruinnichte agus am fear eile a ’toirt aoigheachd don eintiteas sin ann an ìomhaigh air leth a thathas a’ cleachdadh gus an eintiteas sin a ruith. ”

Ann am faclan eile, is urrainn dhuinn an ìomhaigh Web App Builder a chleachdadh gus ar togail a ruith, agus an uairsin ìomhaigh an fhrithealaiche lìn, an aon NGINX, a chleachdadh gus ar susbaint a fhrithealadh.

Mar sin, is urrainn dhuinn an ìomhaigh Web App Builder a chleachdadh mar neach-togail “fìor-ghlan” agus aig an aon àm bidh ìomhaigh bheag runtime againn.

A-nis leig dhuinn sùil a thoirt air seo le eisimpleir sònraichte.

Airson trèanadh bidh sinn a 'cleachdadh tagradh sìmplidh React, air a chruthachadh a’ cleachdadh an inneal loidhne-àithne create-react-app.

Cuidichidh e sinn gus a h-uile càil a chuir ri chèile Am faidhle teamplaid OpenShift.

Nach toir sinn sùil nas mionaidiche air an fhaidhle seo, agus tòisichidh sinn leis an roinn paramadairean.

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

Tha a h-uile dad an seo gu math soilleir, ach is fhiach aire a thoirt don pharamadair OUTPUT_DIR. Airson an tagradh React san eisimpleir againn, chan eil dad ri dragh mu dheidhinn, leis gu bheil React a’ cleachdadh an luach bunaiteach mar am pasgan toraidh, ach a thaobh Angular no rudeigin eile, feumar am paramadair seo atharrachadh mar a dh’ fheumar.

A-nis leig dhuinn sùil a thoirt air an roinn 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'

Thoir sùil air an treas agus an ceathramh dealbh. Tha iad le chèile air am mìneachadh mar ìomhaighean Docker, agus chì thu gu soilleir cò às a tha iad.

Is e an treas ìomhaigh neach-togail app-lìn agus tha e a’ tighinn bho nodeshift/ubi8-s2i-web-app tagged 10.x air Ionad docker.

Is e an ceathramh ìomhaigh NGINX (dreach 1.12) leis an taga as ùire air Ionad docker.

A-nis leig dhuinn sùil a thoirt air a 'chiad dà ìomhaigh. Tha iad le chèile falamh aig an toiseach agus air an cruthachadh dìreach aig ìre togail. Bidh a’ chiad ìomhaigh, react-web-app-builder, mar thoradh air ceum cruinneachaidh a cheanglas an ìomhaigh web-app-builder-runtime agus an còd stòr againn. Sin as coireach gun do chuir sinn “-builder” ri ainm na h-ìomhaigh seo.

Bidh an dàrna ìomhaigh - react-web-app-runtime - mar thoradh air a bhith a’ cothlamadh nginx-image-runtime agus cuid de fhaidhlichean bhon ìomhaigh react-web-app-builder. Thèid an ìomhaigh seo a chleachdadh cuideachd aig àm cleachdadh agus cha bhi ann ach am frithealaiche lìn agus HTML statach, JavaScript, CSS den tagradh againn.

Troimhe? A-nis leig dhuinn sùil a thoirt air na rèiteachaidhean togail agus fàsaidh e beagan nas soilleire.

Tha dà rèiteachadh togail aig an teamplaid againn. Seo a’ chiad fhear, agus tha e gu math àbhaisteach:

  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

Mar a chì thu, tha an loidhne le leubail 1 ag ràdh gun tèid toradh an togail seo a chuir anns an aon ìomhaigh react-web-app-builder a chunnaic sinn beagan na bu thràithe san roinn ImageStreams.

Tha an loidhne le bileag 2 ag innse dhut cò às a gheibh thu an còd. Anns a ’chùis againn, is e stòr git a tha seo, agus tha an suidheachadh, an ref agus am pasgan co-theacsa air an suidheachadh leis na paramadairean a chunnaic sinn gu h-àrd mu thràth.

Is e an loidhne le bileag 3 na chunnaic sinn mu thràth anns an roinn paramadairean. Bidh e a’ cur ris an caochladair àrainneachd OUTPUT_DIR, a tha san eisimpleir againn a’ togail.
Tha an loidhne le bileag 4 ag ràdh gun cleachd thu an ìomhaigh web-app-builder-runtime, a chunnaic sinn mu thràth anns an roinn ImageStream.

Tha loidhne le bileag 5 ag ràdh gu bheil sinn airson togail mean air mhean a chleachdadh ma tha ìomhaigh S2I a’ toirt taic dha, agus tha ìomhaigh Web App Builder a’ dèanamh sin. Aig a’ chiad fhoillseachadh, às deidh an ìre cruinneachaidh a chrìochnachadh, sàbhalaidh an ìomhaigh am pasgan node_modules ann am faidhle tasglann. An uairsin, air ruith às deidh sin, bidh an ìomhaigh dìreach a’ unzip am pasgan seo gus an ùine togail a lughdachadh.

Agus mu dheireadh, chan eil anns an loidhne le bileag 6 ach beagan brosnachaidhean gus toirt air an togalach ruith gu fèin-ghluasadach, gun eadar-theachd làimhe, nuair a dh’ atharraicheas rudeigin.

Gu h-iomlan, is e rèiteachadh togail àbhaisteach a tha seo.

A-nis leig dhuinn sùil a thoirt air an dàrna rèiteachadh togail. Tha e glè choltach ris a 'chiad fhear, ach tha aon eadar-dhealachadh cudromach ann.

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

Mar sin is e an dàrna rèiteachadh togail react-web-app-runtime, agus bidh e a’ tòiseachadh gu math àbhaisteach.

Chan eil an loidhne le bileag 1 dad ùr - tha e dìreach ag ràdh gu bheil toradh an togail air a chuir a-steach don ìomhaigh react-web-app-runtime.

Tha an loidhne le bileag 2, mar a bha san rèiteachadh roimhe, a’ sealltainn cò às a gheibh thu an còd tùsail. Ach mothaich gur ann an seo a tha sinn ag ràdh gu bheil e air a thoirt bhon ìomhaigh. A bharrachd air an sin, bhon ìomhaigh a chruthaich sinn - bho react-web-app-builder (air a chomharrachadh ann an loidhne le bileag 3). Tha na faidhlichean a tha sinn airson a chleachdadh taobh a-staigh na h-ìomhaigh agus tha an suidheachadh an sin air a shuidheachadh ann an loidhne le bileag 4, anns a’ chùis againn is e /opt/app-root/output/ a th’ ann. Ma chuimhnicheas tu, seo far a bheil na faidhlichean a chaidh a chruthachadh stèidhichte air toraidhean togail an tagraidh againn air an stòradh.

Is e am pasgan ceann-uidhe a tha air a shònrachadh san teirm le leubail 5 dìreach an eòlaire gnàthach (tha seo uile, cuimhnich, a’ ruith taobh a-staigh rud draoidheil ris an canar OpenShift, agus chan ann air a’ choimpiutair ionadail agad).

Tha an roinn ro-innleachd - loidhne le bileag 6 - cuideachd coltach ris a’ chiad rèiteachadh togail. Is ann dìreach an turas seo a tha sinn gu bhith a’ cleachdadh nginx-image-runtime, a chunnaic sinn mu thràth anns an roinn ImageStream.

Mu dheireadh, tha an loidhne le bileag 7 na roinn de luchd-brosnachaidh a chuireas an togail seo an gnìomh a h-uile uair a dh’ atharraicheas ìomhaigh neach-togail react-web-app-builder.

Rud eile, tha rèiteachadh cleachdaidh gu math àbhaisteach anns an teamplaid seo, a bharrachd air rudan co-cheangailte ri seirbheisean agus slighean, ach cha tèid sinn a-steach don mhion-fhiosrachadh sin. Thoir an aire gur e an ìomhaigh a thèid a chleachdadh an ìomhaigh react-web-app-runtime.

Cleachdadh Iarrtais

Mar sin a-nis gu bheil sinn air sùil a thoirt air an teamplaid, chì sinn mar a chleachdas tu e gus tagradh a chleachdadh.

Is urrainn dhuinn an inneal teachdaiche OpenShift ris an canar oc a chleachdadh gus an teamplaid againn a chleachdadh:

$ 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

Tha a’ chiad àithne san dealbh gu h-àrd na dhòigh innleadaireachd a dh’aona ghnothach airson teamplaid a lorg./openshiftio/application.yaml.

Tha an dàrna àithne dìreach a’ cruthachadh tagradh ùr stèidhichte air an teamplaid seo.

Às deidh na h-àitheantan seo obrachadh, chì sinn gu bheil dà cho-chruinneachadh againn:

Tagraidhean ùr-nodha air OpenShift, pàirt 2: togalaichean slabhraidh

Agus a’ tilleadh chun sgrion Ath-shealladh, chì sinn am pod a chaidh a chuir air bhog:

Tagraidhean ùr-nodha air OpenShift, pàirt 2: togalaichean slabhraidh

Cliog air a’ cheangal agus thèid ar toirt chun app againn, is e sin an duilleag àbhaisteach React App:

Tagraidhean ùr-nodha air OpenShift, pàirt 2: togalaichean slabhraidh

Pàipear-taice 1

Airson leannanan Angular tha againn cuideachd tagradh eisimpleir.

Tha am pàtran an seo mar an ceudna, ach a-mhàin an caochladair OUTPUT_DIR.

Pàipear-taice 2

San artaigil seo chleachd sinn NGINX mar fhrithealaiche lìn, ach tha e gu math furasta Apache a chuir na àite, dìreach atharraich an teamplaid san fhaidhle Dealbh NGINX air Dealbh apache.

co-dhùnadh

Anns a’ chiad phàirt den t-sreath seo, sheall sinn mar as urrainn dhuinn tagraidhean lìn ùr-nodha a chuir an sàs gu sgiobalta air an àrd-ùrlar OpenShift. An-diugh thug sinn sùil air na bhios ìomhaigh Web App a’ dèanamh agus mar a ghabhas a chur còmhla ri frithealaiche lìn fìor mar NGINX a’ cleachdadh slabhraidhean togail gus togail tagraidh nas deiseil airson cinneasachadh a chruthachadh. Anns an ath artaigil agus an artaigil mu dheireadh san t-sreath seo, seallaidh sinn mar a ruitheas tu frithealaiche leasachaidh airson an tagradh agad air OpenShift agus dèan cinnteach gu bheil faidhlichean ionadail is iomallach air an sioncronadh.

Susbaint an t-sreath artaigilean seo

  • Pàirt de 1: mar a chleachdas tu tagraidhean lìn ùr-nodha ann am beagan cheumannan;
  • Pàirt 2: Mar a chleachdas tu ìomhaigh S2I ùr le ìomhaigh frithealaiche HTTP a tha ann mar-thà, leithid NGINX, a’ cleachdadh co-chruinneachaidhean OpenShift co-cheangailte airson cleachdadh cinneasachaidh;
  • Pàirt 3: mar a ruith frithealaiche leasachaidh airson an tagradh agad air an àrd-ùrlar OpenShift agus sioncronaich e leis an t-siostam faidhle ionadail.

Goireasan a bharrachd

Source: www.habr.com

Cuir beachd ann