Mapulogalamu amakono pa OpenShift, gawo 2: kumanga unyolo

Moni nonse! Ili ndi positi yachiwiri pamndandanda wathu momwe tikuwonetsa momwe tingatumizire mapulogalamu amakono pa Red Hat OpenShift.

Mapulogalamu amakono pa OpenShift, gawo 2: kumanga unyolo

Mu positi yapitayi, tidakhudza pang'ono kuthekera kwa chithunzi chatsopano cha S2I (source-to-image), chomwe chapangidwira kumanga ndi kutumiza mapulogalamu amakono a intaneti pa nsanja ya OpenShift. Kenako tinali ndi chidwi ndi mutu wotumizira mwachangu pulogalamuyo, ndipo lero tiwona momwe tingagwiritsire ntchito chithunzi cha S2I ngati chithunzi "choyera" ndikuchiphatikiza ndi misonkhano ya OpenShift yogwirizana.

Yeretsani chithunzi cha omanga

Monga tanenera mu Gawo XNUMX, mapulogalamu amakono ambiri amakhala ndi zomwe zimatchedwa siteji yomanga, yomwe nthawi zambiri imagwira ntchito monga kumasulira ma code, kulumikiza mafayilo angapo, ndi minification. Mafayilo omwe adapezeka chifukwa cha izi - ndipo iyi ndi HTML, JavaScript ndi CSS - amasungidwa mufoda yotulutsa. Malo a fodayi nthawi zambiri zimatengera zida zomangira zomwe zikugwiritsidwa ntchito, ndipo kwa React iyi idzakhala ./build foda (tibwereranso ku izi mwatsatanetsatane pansipa).

Kuchokera-ku-Chithunzi (S2I)

Mu positi iyi sitikhudza mutu wakuti "S2I ndi chiyani komanso momwe mungagwiritsire ntchito" (mutha kuwerenga zambiri za izi apa), koma ndikofunikira kumveketsa bwino masitepe awiriwa kuti mumvetsetse zomwe chithunzi cha Web App Builder chimachita.

Gawo la Assembly

Gawo la msonkhano ndilofanana kwambiri m'chilengedwe ndi zomwe zimachitika mukayendetsa docker build ndikukhala ndi chithunzi chatsopano cha Docker. Chifukwa chake, gawo ili limachitika mukayamba kumanga pa nsanja ya OpenShift.

Pankhani ya chithunzi cha Web App Builder, ili ndi udindo woyika zodalira pa pulogalamu yanu ndikuyendetsa ntchito yomanga. kusonkhanitsa script. Mwachikhazikitso, chithunzi cha omanga chimagwiritsa ntchito npm run build build, koma izi zitha kupitilizidwa kudzera mukusintha kwachilengedwe kwa NPM_BUILD.

Monga tanena kale, malo omalizidwa, omangidwa kale amatengera zida zomwe mumagwiritsa ntchito. Mwachitsanzo, pankhani ya React iyi ikhala ./build foda, ndipo pamapulogalamu a Angular idzakhala chikwatu cha project_name/dist. Ndipo, monga momwe zasonyezedwera kale mu positi yapitayi, malo omwe amachokera, omwe akhazikitsidwa kuti apangidwe mwachisawawa, akhoza kuchotsedwa kupyolera mu kusintha kwa chilengedwe cha OUTPUT_DIR. Chabwino, popeza malo a chikwatucho amasiyana ndi chimango ndi chimango, mumangotengera zomwe zapangidwa ku chikwatu chomwe chili pachithunzichi, chomwe ndi /opt/apt-root/output. Izi ndizofunikira kuti timvetsetse nkhani yonseyi, koma pakadali pano tiyeni tiwone mwachangu gawo lotsatira - gawo lothamanga.

kuthamanga gawo

Gawoli limachitika pomwe kuyimba kwa docker kumapangidwa pa chithunzi chatsopano chomwe chapangidwa panthawi ya msonkhano. Zomwezo zimachitika mukayika pa nsanja ya OpenShift. Zosasintha yambitsani script amagwiritsa kutumikira module kuti mutumize zomwe zili m'ndandanda wazomwe zili pamwambapa.

Njirayi ndi yabwino kutumizira mwachangu mapulogalamu, koma nthawi zambiri sizovomerezeka kupereka zokhazikika motere. Chabwino, popeza kwenikweni timangogwiritsa ntchito zokhazikika, sitifunikira Node.js yoyikidwa mkati mwa chithunzi chathu - seva yapaintaneti ikwanira.

Mwa kuyankhula kwina, posonkhanitsa timafunikira chinthu chimodzi, pamene tikuchita timafunikira china. Munthawi imeneyi, kumanga unyolo kumakhala kothandiza.

Kumanga unyolo

Izi ndi zomwe akulemba kumanga unyolo muzolemba za OpenShift:

"Misonkhano iwiri ingalumikizidwe palimodzi, imodzi ikupanga gulu ndipo ina imapanga gululo pazithunzi zosiyana zomwe zimagwiritsidwa ntchito poyendetsa bungwelo."

Mwa kuyankhula kwina, tikhoza kugwiritsa ntchito chithunzi cha Web App Builder kuti tiyambe kumanga, ndiyeno tigwiritse ntchito chithunzi cha seva ya intaneti, NGINX yomweyo, kuti titumikire zomwe tili nazo.

Choncho, tikhoza kugwiritsa ntchito fano la Web App Builder ngati "woyera" womanga ndipo panthawi imodzimodziyo kukhala ndi chithunzi chaching'ono chothamanga.

Tsopano tiyeni tione izi ndi chitsanzo chenicheni.

Pa maphunziro tidzagwiritsa ntchito yosavuta React application, yopangidwa pogwiritsa ntchito chida cha mzere wa kupanga-react-app.

Zidzatithandiza kuyika zonse pamodzi OpenShift template file.

Tiyeni tiwone fayiloyi mwatsatanetsatane, ndikuyamba ndi gawo la magawo.

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

Chilichonse apa ndi chomveka bwino, koma ndikofunikira kulabadira gawo la OUTPUT_DIR. Kwa React application mu chitsanzo chathu, palibe chodetsa nkhawa, popeza React imagwiritsa ntchito mtengo wosasinthika ngati chikwatu chotuluka, koma pankhani ya Angular kapena china chake, parameter iyi iyenera kusinthidwa ngati pakufunika.

Tsopano tiyeni tiwone gawo la 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'

Yang'anani pa chithunzi chachitatu ndi chachinayi. Onsewa amafotokozedwa ngati zithunzi za Docker, ndipo mutha kuwona bwino lomwe akuchokera.

Chithunzi chachitatu ndi web-app-builder ndipo chimachokera ku nodeshift/ubi8-s2i-web-app yolembedwa 10.x pa Docker hub.

Chachinayi ndi chithunzi cha NGINX (mtundu 1.12) chokhala ndi tag yaposachedwa Docker hub.

Tsopano tiyeni tione zithunzi ziwiri zoyambirira. Zonse zilibe kanthu poyambira ndipo zimangopangidwa panthawi yomanga. Chithunzi choyamba, react-web-app-builder, chidzakhala chotsatira cha sitepe ya msonkhano yomwe idzaphatikiza chithunzi cha web-app-builder-runtime ndi code yathu yochokera. Ichi ndichifukwa chake tawonjezera "-builder" ku dzina la chithunzichi.

Chithunzi chachiwiri - react-web-app-runtime - chidzakhala chotsatira chophatikiza nginx-image-runtime ndi mafayilo ena kuchokera pa chithunzi cha react-web-app-builder. Chithunzichi chidzagwiritsidwanso ntchito panthawi yotumizidwa ndipo chidzangokhala ndi seva yapaintaneti komanso HTML, JavaScript, CSS ya pulogalamu yathu.

Zosokoneza? Tsopano tiyeni tiwone masinthidwe omanga ndipo zidzamveka bwino.

Template yathu ili ndi masinthidwe awiri omanga. Nayi yoyamba, ndipo ndiyabwino kwambiri:

  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

Monga mukuonera, mzere wokhala ndi chizindikiro 1 umanena kuti zotsatira za kumanga izi zidzayikidwa mu chithunzi chofanana cha react-app-builder chomwe tidachiwona kale mu gawo la ImageStreams.

Mzere wolembedwa 2 umakuuzani komwe mungapezeko code. Kwa ife, iyi ndi git repository, ndipo malo, ref ndi chikwatu cha nkhani zimatsimikiziridwa ndi magawo omwe tawona kale pamwambapa.

Mzere wolembedwa 3 ndi womwe tawona kale mu gawo la magawo. Imawonjezera kusintha kwa chilengedwe kwa OUTPUT_DIR, komwe mu chitsanzo chathu ndikumanga.
Mzere wolembedwa 4 umati kugwiritsa ntchito chithunzi cha web-app-builder-runtime, chomwe tidachiwona kale mu gawo la ImageStream.

Mzere wolembedwa 5 umanena kuti tikufuna kugwiritsa ntchito chomanga chowonjezera ngati chithunzi cha S2I chichirikiza, ndipo chithunzi cha Web App Builder chimatero. Pakutsegulira koyamba, gawo la msonkhano likamalizidwa, chithunzicho chidzasunga foda ya node_modules mu fayilo yosungidwa. Kenako, pamayendedwe otsatirawa, chithunzicho chimangotsegula chikwatu ichi kuti muchepetse nthawi yomanga.

Ndipo potsiriza, mzere wolembedwa 6 ndi zoyambitsa zochepa chabe kuti zomangamanga ziziyenda zokha, popanda kuchitapo kanthu pamanja, pamene chinachake chikusintha.

Pazonse, iyi ndi kasinthidwe kokongola kokhazikika.

Tsopano tiyeni tione kasinthidwe kachiwiri kamangidwe. Ndi yofanana kwambiri ndi yoyamba, koma pali kusiyana kumodzi kofunikira.

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

Chifukwa chake kasinthidwe kachiwiri komanga ndi react-web-app-runtime, ndipo imayamba bwino kwambiri.

Mzere wolembedwa 1 si wachilendo - umangonena kuti zotsatira zake zimayikidwa mu react-web-app-runtime image.

Mzere wolembedwa 2, monga momwe zimakhalira kale, umasonyeza komwe mungapezeko code source. Koma taonani kuti apa tikunena kuti yatengedwa pa chithunzicho. Komanso, kuchokera pachithunzi chomwe tangopanga kumene - kuchokera ku react-web-app-builder (yomwe ili pamzere wolembedwa 3). Mafayilo omwe tikufuna kugwiritsa ntchito ali mkati mwa chithunzicho ndipo malo awo pamenepo amaikidwa pamzere wolembedwa 4, kwa ife ndi /opt/app-root/output/. Ngati mukukumbukira, apa ndipamene mafayilo opangidwa kutengera zotsatira zomanga pulogalamu yathu amasungidwa.

Foda yomwe ikupita yomwe yatchulidwa m'mawu omwe ali ndi chizindikiro 5 ndi chikwatu chomwe chilipo (izi ndi zonse, kumbukirani, kuthamanga mkati mwa chinthu chamatsenga chotchedwa OpenShift, osati pa kompyuta yanu).

Gawo la ndondomeko - mzere wolembedwa 6 - ulinso wofanana ndi kamangidwe koyambirira komanga. Ndi nthawi ino yokha yomwe tigwiritsa ntchito nginx-image-runtime, yomwe tidawona kale gawo la ImageStream.

Pomaliza, mzere wolembedwa 7 ndi gawo la zoyambitsa zomwe zidzayambitsa izi nthawi iliyonse pomwe chithunzi cha react-web-app-builder chikusintha.

Kupanda kutero, template iyi ili ndi kasinthidwe koyenera koyambira, komanso zinthu zokhudzana ndi mautumiki ndi njira, koma sitingafotokozere zambiri. Chonde dziwani kuti chithunzi chomwe chidzagwiritsidwe ndi chithunzi cha react-web-app-runtime.

Kutumiza Ntchito

Ndiye popeza tayang'ana pa template, tiyeni tiwone momwe tingaigwiritsire ntchito kuti tigwiritse ntchito.

Titha kugwiritsa ntchito chida cha kasitomala cha OpenShift chotchedwa oc kutumiza template yathu:

$ 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

Lamulo loyamba pachithunzi pamwambapa ndi njira yopangira dala yopezera template./openshiftio/application.yaml.

Lamulo lachiwiri limangopanga pulogalamu yatsopano kutengera template iyi.

Pambuyo pa ntchito ya malamulo awa, tiwona kuti tili ndi misonkhano iwiri:

Mapulogalamu amakono pa OpenShift, gawo 2: kumanga unyolo

Ndipo kubwerera ku Chiwonetsero Chowonekera, tiwona pod yomwe idakhazikitsidwa:

Mapulogalamu amakono pa OpenShift, gawo 2: kumanga unyolo

Dinani ulalo ndipo tidzatengedwera ku pulogalamu yathu, yomwe ndi tsamba losakhazikika la React App:

Mapulogalamu amakono pa OpenShift, gawo 2: kumanga unyolo

Zowonjezera 1

Kwa okonda Angular tili nawonso chitsanzo ntchito.

Chitsanzo apa ndi chofanana, kupatulapo OUTPUT_DIR.

Zowonjezera 2

M'nkhaniyi tidagwiritsa ntchito NGINX ngati seva yapaintaneti, koma ndiyosavuta kuyisintha ndi Apache, ingosintha template mufayilo. Chithunzi cha NGINX pa Chithunzi cha Apache.

Pomaliza

Mu gawo loyamba la mndandandawu, tidawonetsa momwe mungatumizire mwachangu mapulogalamu amakono awebusayiti papulatifomu ya OpenShift. Lero tidayang'ana zomwe chithunzi cha Web App chimachita komanso momwe chingaphatikizire ndi seva yoyera yapaintaneti monga NGINX pogwiritsa ntchito maunyolo omangika kuti apange pulogalamu yokonzekera kupanga. M'nkhani yotsatira komanso yomaliza pamndandanda uno, tikuwonetsa momwe mungayendetsere seva yachitukuko ya pulogalamu yanu pa OpenShift ndikuwonetsetsa kuti mafayilo akumaloko ndi akutali alumikizidwa.

Zomwe zili m'nkhani ino

  • Gawo 1: momwe mungatumizire mapulogalamu amakono apaintaneti pamasitepe ochepa chabe;
  • Gawo 2: Momwe mungagwiritsire ntchito chithunzi chatsopano cha S2I chokhala ndi chithunzi cha seva ya HTTP chomwe chilipo, monga NGINX, pogwiritsa ntchito misonkhano yogwirizana ya OpenShift yopangira kupanga;
  • Gawo 3: momwe mungayendetsere seva yachitukuko ya pulogalamu yanu papulatifomu ya OpenShift ndikuyigwirizanitsa ndi fayilo yakomweko.

Zowonjezera Zowonjezera

Source: www.habr.com

Kuwonjezera ndemanga