Feidhmchláir nua-aimseartha ar OpenShift, cuid 2: tógálacha slabhraithe

Dia duit gach duine! Is é seo an dara post inár sraith ina léirímid conas feidhmchláir ghréasáin nua-aimseartha a imscaradh ar Red Hat OpenShift.

Feidhmchláir nua-aimseartha ar OpenShift, cuid 2: tógálacha slabhraithe

Sa phost roimhe seo, rinneamar teagmháil beagán le cumas íomhá tógálaí nua S2I (foinse go híomhá), atá deartha chun feidhmchláir ghréasáin nua-aimseartha a thógáil agus a imscaradh ar an ardán OpenShift. Ansin bhí suim againn san ábhar feidhmchlár a imscaradh go tapa, agus inniu beimid ag féachaint ar conas íomhá S2I a úsáid mar íomhá tógálaí “íon” agus é a chomhcheangal le tionóil OpenShift gaolmhara.

Íomhá tógálaí glan

Mar a luadh againn i gCuid XNUMX, tá céim tógála mar a thugtar air ag an gcuid is mó d'fheidhmchláir ghréasáin nua-aimseartha, a dhéanann oibríochtaí de ghnáth mar thras-sreabhadh cód, comh- chomhghathaithe iolrach, agus mionú. Stóráiltear na comhaid a fhaightear mar thoradh ar na hoibríochtaí seo - agus is HTML statach, JavaScript agus CSS é seo san fhillteán aschuir. Braitheann suíomh an fhillteáin seo de ghnáth ar na huirlisí tógála atá á n-úsáid, agus le haghaidh React is é seo an fillteán ./build (beidh muid ag teacht ar ais chuige seo níos mine thíos).

Foinse go hÍomhá (S2I)

Sa phost seo ní dhéanaimid teagmháil leis an ábhar “cad é S2I agus conas é a úsáid” (is féidir leat tuilleadh a léamh faoi seo anseo), ach tá sé tábhachtach a bheith soiléir faoin dá chéim sa phróiseas seo chun tuiscint a fháil ar cad a dhéanann íomhá Tógálaí App Gréasáin.

Céim an Tionóil

Tá an chéim tionóil an-chosúil i nádúr leis an méid a tharlaíonn nuair a ritheann tú tógáil docker agus deireadh suas le íomhá Docker nua. Dá réir sin, tarlaíonn an chéim seo nuair a chuirtear tús le tógáil ar an ardán OpenShift.

I gcás íomhá Web App Builder, tá sé freagrach as spleáchais d'fheidhmchláir a shuiteáil agus an tógáil a reáchtáil. script a bhailiú. De réir réamhshocraithe, úsáideann an íomhá tógálaí an tógáil npm run build, ach is féidir é seo a shárú tríd an athróg timpeallachta NPM_BUILD.

Mar a dúirt muid níos luaithe, braitheann suíomh an fheidhmchláir chríochnaithe atá tógtha cheana féin ar na huirlisí a úsáideann tú. Mar shampla, i gcás React is é seo an fillteán ./build, agus i gcás feidhmchláir Uillinneacha is é an fillteán project_name/dist a bheidh ann. Agus, mar a léiríodh cheana sa phost roimhe seo, is féidir suíomh an eolaire aschuir, atá socraithe le tógáil de réir réamhshocraithe, a shárú tríd an athróg timpeallachta OUTPUT_DIR. Bhuel, ós rud é go bhfuil suíomh an fhillteáin aschuir difriúil ó chreat go creat, ní dhéanann tú ach an t-aschur ginte a chóipeáil chuig an bhfillteán caighdeánach san íomhá, eadhon /opt/apt-root/output. Tá sé seo tábhachtach chun an chuid eile den alt seo a thuiscint, ach faoi láthair déanaimis breathnú go tapa ar an gcéad chéim eile - an chéim reatha.

rith chéim

Tarlaíonn an chéim seo nuair a dhéantar glao go rith duga ar an íomhá nua a cruthaíodh le linn na céime tionóil. Tarlaíonn an rud céanna nuair a imscartar ar an ardán OpenShift. Réamhshocrú rith script úsáidí freastal modúl chun freastal ar ábhar statach atá suite san eolaire aschuir chaighdeánach thuas.

Tá an modh seo go maith chun feidhmchláir a imscaradh go tapa, ach go ginearálta ní mholtar ábhar statach a sheirbheáil ar an mbealach seo. Bhuel, ós rud é i ndáiríre ní dhéanaimid freastal ach ar ábhar statach, ní gá Node.js a shuiteáil taobh istigh dár n-íomhá - is leor freastalaí gréasáin.

I bhfocail eile, agus muid ag cur le chéile teastaíonn rud amháin uainn, agus muid ag déanamh forghníomhaithe teastaíonn rud eile uainn. Sa chás seo, tá tógáil slabhraithe áisiúil.

Tógann slabhraithe

Is é seo a scríobhann siad faoi tógálacha chained i gcáipéisíocht OpenShift:

“Is féidir dhá chomhthionól a nascadh le chéile, ceann amháin ag giniúint aonán tiomsaithe agus an ceann eile ag óstáil an t-aonán sin in íomhá ar leith a úsáidtear chun an t-aonán sin a rith.”

I bhfocail eile, is féidir linn íomhá Web App Builder a úsáid chun ár dtógáil a reáchtáil, agus ansin an íomhá freastalaí gréasáin, an NGINX céanna, a úsáid chun ár n-ábhar a sheirbheáil.

Mar sin, is féidir linn íomhá Web App Builder a úsáid mar thógálaí “íon” agus ag an am céanna íomhá bheag ama rite a bheith againn.

Anois, déanaimis breathnú ar seo le sampla ar leith.

Le haghaidh oiliúna úsáidfimid feidhmchlár React simplí, cruthaithe ag baint úsáide as an uirlis líne ordaithe create-react-app.

Cabhróidh sé linn gach rud a chur le chéile Comhad teimpléad OpenShift.

Breathnaímid ar an gcomhad seo níos mine, agus cuirimis tús leis an gcuid paraiméadair.

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

Tá gach rud anseo soiléir go leor, ach is fiú aird a thabhairt ar an bparaiméadar OUTPUT_DIR. Maidir leis an iarratas React inár sampla, níl aon rud imní ort, ós rud é go n-úsáideann React an luach réamhshocraithe mar an fillteán aschuir, ach i gcás uilleach nó rud éigin eile, beidh gá an paraiméadar seo a athrú de réir mar is gá.

Anois, déanaimis féachaint ar an rannóg 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'

Féach ar an tríú agus an ceathrú híomhá. Sainmhínítear iad araon mar íomhánna Docker, agus is féidir leat a fheiceáil go soiléir cén áit a dtagann siad.

Is é an tríú híomhá ná web-app-tógálaí agus tagann sé ó nodeshift/ubi8-s2i-web-app clibáilte 10.x ar Mol docker.

Is é an ceathrú íomhá NGINX (leagan 1.12) leis an gclib is déanaí ar Mol docker.

Anois féachaimis ar an gcéad dá íomhá. Tá siad araon folamh ó thús agus ní chruthaítear iad ach le linn na céime tógála. Beidh an chéad íomhá, react-web-app-builder, mar thoradh ar chéim tionóil a chomhcheangail íomhá gréasáin-app-tógálaí-runtime agus ár gcód foinse. Sin é an fáth gur chuireamar “-builder” le hainm na híomhá seo.

Beidh an dara íomhá - react-web-app-runtime - mar thoradh ar nginx-image-runtime agus roinnt comhaid ón íomhá react-web-app-builder a chomhcheangal. Bainfear úsáid as an íomhá seo freisin le linn imlonnaithe agus ní bheidh inti ach an freastalaí gréasáin agus HTML statach, JavaScript, CSS ár bhfeidhmchlár.

Mearbhall? Anois, déanaimis féachaint ar na cumraíochtaí tógála agus beidh sé beagán níos soiléire.

Tá dhá chumraíocht tógála ag ár dteimpléad. Seo an chéad cheann, agus tá sé caighdeánach go leor:

  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 fheiceann tú, deir an líne le lipéad 1 go gcuirfear toradh an tógáil seo san íomhá tógálaí react-web-app-app céanna a chonaic muid beagán níos luaithe sa chuid ImageStreams.

Insíonn an líne lipéadaithe 2 duit cá háit ar féidir leat an cód a fháil. Is é ár gcás, is stór git é seo, agus déantar an suíomh, an tagairt agus an fillteán comhthéacs a chinneadh ag na paraiméadair a chonaic muid thuas cheana féin.

Is é an líne lipéadaithe 3 an méid a chonaic muid cheana féin sa chuid paraiméadair. Cuireann sé leis an athróg timpeallachta OUTPUT_DIR, atá inár shampla a thógáil.
Deir an líne lipéadaithe 4 úsáid a bhaint as an íomhá gréasáin-app-builder-runtime, a chonaic muid cheana féin sa rannóg ImageStream.

Deir Líne lipéadaithe 5 gur mhaith linn tógáil incriminteach a úsáid má thacaíonn íomhá S2I leis, agus má dhéanann an íomhá Web App Builder. Ag an gcéad seoladh, tar éis an chéim tionóil a chríochnú, sábhálfaidh an íomhá an fillteán node_modules isteach i gcomhad cartlainne. Ansin, nuair a ritheann sé ina dhiaidh sin, ní dhéanfaidh an íomhá ach an fillteán seo a dhízipeáil chun am tógála a laghdú.

Agus ar deireadh, níl sa líne lipéadaithe 6 ach cúpla truicear chun an tógáil a dhéanamh go huathoibríoch, gan idirghabháil láimhe, nuair a athraíonn rud éigin.

Tríd is tríd is cumraíocht tógála caighdeánach go leor é seo.

Anois, déanaimis féachaint ar chumraíocht an dara tógáil. Tá sé an-chosúil leis an gcéad cheann, ach tá difríocht thábhachtach amháin 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 é an dara cumraíocht tógáil ná react-web-app-runtime, agus tosaíonn sé go leor caighdeánach.

Níl aon rud nua ag baint leis an líne lipéadaithe 1 - deir sé go simplí go gcuirtear an toradh tógála isteach san íomhá react-web-app-runtime.

Léiríonn an líne lipéadaithe 2, mar a bhí sa chumraíocht roimhe seo, cá háit ar féidir an cód foinse a fháil. Ach faoi deara go bhfuil anseo táimid ag rá go bhfuil sé tógtha as an íomhá. Thairis sin, ón íomhá a chruthaigh muid díreach - ó react-web-app-builder (léirithe i líne lipéadaithe 3). Tá na comhaid ba mhaith linn a úsáid taobh istigh den íomhá agus tá a suíomh ansin socraithe i líne lipéadaithe 4, inár gcás is é /opt/app-root/output/ é. Más cuimhin leat, is é seo an áit a stóráiltear na comhaid a ghintear bunaithe ar thorthaí ár n-iarratas a thógáil.

Níl sa fhillteán ceann scríbe atá sonraithe sa téarma le lipéad 5 ach an t-eolaire reatha (is é seo go léir, cuimhnigh, ag rith taobh istigh de rud draíochta éigin ar a dtugtar OpenShift, agus ní ar do ríomhaire áitiúil).

Tá cuid na straitéise – líne lipéadaithe 6 – cosúil leis an gcumraíocht chéad thógáil freisin. Is é an uair seo amháin atáimid chun nginx-image-runtime a úsáid, rud a chonaic muid cheana féin sa rannóg ImageStream.

Ar deireadh, tá an líne lipéadaithe 7 ina chuid de thriogairí a ghníomhóidh an tógáil seo gach uair a athraíonn an íomhá tógálaí react-web-app-.

Seachas sin, tá cumraíocht imlonnaithe chaighdeánach go leor sa teimpléad seo, chomh maith le rudaí a bhaineann le seirbhísí agus bealaí, ach ní thabharfaimid an iomarca sonraí sin. Tabhair faoi deara le do thoil gurb é an íomhá react-web-app-runtime an íomhá a imlonnófar.

Imscaradh Feidhmchláir

Mar sin anois agus muid tar éis féachaint ar an teimpléad, féachaimis conas é a úsáid chun feidhmchlár a imscaradh.

Is féidir linn an uirlis cliant OpenShift ar a dtugtar oc a úsáid chun ár teimpléad a úsáid:

$ 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

Is bealach innealtóireachta d’aon ghnó é an chéad ordú sa screenshot thuas chun teimpléad a aimsiú./openshiftio/application.yaml.

Cruthaíonn an dara ordú feidhmchlár nua bunaithe ar an teimpléad seo.

Tar éis na horduithe seo a bheith ag obair, feicfidh muid go bhfuil dhá chomhthionól againn:

Feidhmchláir nua-aimseartha ar OpenShift, cuid 2: tógálacha slabhraithe

Agus ag filleadh ar an scáileán Forbhreathnú, feicfimid an pod seolta:

Feidhmchláir nua-aimseartha ar OpenShift, cuid 2: tógálacha slabhraithe

Cliceáil ar an nasc agus tógfar chuig ár n-aip sinn, arb é an leathanach réamhshocraithe React App:

Feidhmchláir nua-aimseartha ar OpenShift, cuid 2: tógálacha slabhraithe

Forlíonadh 1

Do lovers Angular ní mór dúinn freisin iarratas sampla.

Is mar a chéile an patrún anseo, seachas an athróg OUTPUT_DIR.

Forlíonadh 2

San Airteagal seo d'úsáideamar NGINX mar fhreastalaí gréasáin, ach tá sé éasca go leor é a chur ina ionad le Apache, níl le déanamh ach an teimpléad sa chomhad a athrú Íomhá NGINX ar Grianghraf Apache.

Conclúid

Sa chéad chuid den tsraith seo, léirigh muid conas feidhmchláir ghréasáin nua-aimseartha a imscaradh go tapa ar an ardán OpenShift. Sa lá atá inniu d'fhéachamar ar cad a dhéanann íomhá App Gréasáin agus conas is féidir é a chomhcheangal le freastalaí gréasáin íon mar NGINX ag baint úsáide as tógálacha slabhraithe chun tógáil feidhmchláir níos réidh le táirgeadh a chruthú. Sa chéad alt eile agus an t-alt deiridh sa tsraith seo, taispeánfaimid conas freastalaí forbartha a reáchtáil d'iarratas ar OpenShift agus sioncrónú comhaid áitiúla agus iargúlta a chinntiú.

Ábhar na sraithe alt seo

  • Cuid 1: conas feidhmchláir ghréasáin nua-aimseartha a imscaradh i roinnt céimeanna;
  • Cuid 2: Conas íomhá S2I nua a úsáid le híomhá freastalaí HTTP atá ann cheana féin, mar shampla NGINX, ag baint úsáide as tionóil OpenShift gaolmhara le haghaidh imscaradh táirgeachta;
  • Cuid 3: conas freastalaí forbartha a reáchtáil d’iarratas ar an ardán OpenShift agus é a shioncrónú leis an gcóras comhad áitiúil.

Acmhainní Breise

Foinse: will.com

Add a comment