Lisebelisoa tsa sejoale-joale ho OpenShift, karolo ea 2: meaho ea liketane

Lumelang bohle! Ena ke poso ea bobeli letotong la rona leo ho lona re bonts'ang mokhoa oa ho kenya lits'ebetso tsa sejoale-joale tsa webo ho Red Hat OpenShift.

Lisebelisoa tsa sejoale-joale ho OpenShift, karolo ea 2: meaho ea liketane

Posong e fetileng, re amme hanyenyane ka bokhoni ba setšoantšo se secha sa S2I (mohloli-ho-setšoantšo), se etselitsoeng ho aha le ho tsamaisa lits'ebetso tsa sejoale-joale tsa webo sethaleng sa OpenShift. Joale re ne re thahasella sehlooho sa ho kenya kopo ka potlako, 'me kajeno re tla sheba mokhoa oa ho sebelisa setšoantšo sa S2I e le setšoantšo sa "sehahi" se hloekileng le ho se kopanya le likopano tse amanang le OpenShift.

Hloekisa setšoantšo sa sehahi

Joalo ka ha re boletse Karolong ea XNUMX, lits'ebetso tse ngata tsa sejoale-joale tsa marang-rang li na le seo ho thoeng ke sethala sa kaho, seo hangata se etsang ts'ebetso joalo ka transpilation ea khoutu, concatenation ea lifaele tse ngata, le minification. Lifaele tse fumanoeng ka lebaka la ts'ebetso ena - 'me ena ke HTML e tsitsitseng, JavaScript le CSS - li bolokiloe ka har'a foldara ea tlhahiso. Sebaka sa foldara ena hangata se ipapisitse le hore na ho sebelisoa lisebelisoa life tsa kaho, 'me bakeng sa React ena e tla ba ./build foldara (re tla khutlela ho sena ka botlalo ka tlase).

Mohloli-ho-Setšoantšo (S2I)

Ka poso ena ha re bue ka sehlooho se reng "S2I ke eng le hore na u ka e sebelisa joang" (o ka bala haholoanyane ka sena. mona), empa ho bohlokoa ho hlakisa mehato e 'meli ts'ebetsong ena ho utloisisa hore na setšoantšo sa Web App Builder se etsa eng.

Mokhahlelo oa kopano

Karolo ea kopano e ts'oana haholo ka tlhaho le se etsahalang ha o tsamaisa docker build mme o qetella o e-na le setšoantšo se secha sa Docker. Ka hona, sethala sena se etsahala ha ho qala moaho sethaleng sa OpenShift.

Tabeng ea setšoantšo sa Web App Builder, se na le boikarabello ba ho kenya litšepeho tsa sesebelisoa sa hau le ho tsamaisa moaho. kopanya script. Ka nako e sa lekanyetsoang, setšoantšo sa sehahi se sebelisa npm run build construct, empa sena se ka fetisoa ka ho feto-fetoha ha tikoloho ea NPM_BUILD.

Joalokaha re boletse pejana, sebaka sa kopo e felileng, e seng e hahiloe ho latela lisebelisoa tseo u li sebelisang. Mohlala, tabeng ea React ena e tla ba ./build foldara, 'me bakeng sa lits'ebetso tsa Angular e tla ba foldara ea project_name/dist. 'Me, joalokaha ho se ho bontšitsoe posong e fetileng, sebaka sa lenane la lihlahisoa, le behiloeng ho haha ​​ka ho sa feleng, le ka tlosoa ka ho feto-fetoha ha tikoloho ea OUTPUT_DIR. Ho joalo, kaha sebaka sa foldara se hlahisoang se fapana ho tloha ho moralo ho ea ho moralo, o kopitsa sephetho se hlahisitsoeng foleng e tloaelehileng ea setšoantšo, e leng /opt/apt-root/output. Sena ke sa bohlokoa bakeng sa ho utloisisa sengoloa sena kaofela, empa hajoale a re shebeng ka potlako mohato o latelang - mohato oa ho matha.

matha mohato

Mokhahlelo ona o etsahala ha pitso ea docker e etsoa setšoantšong se secha se entsoeng nakong ea kopano. Hoa tšoana le ha u tsamaisa sethaleng sa OpenShift. Ea kamehla tsamaisa script sebedisa sebeletsa mojule ho fana ka litaba tse sa fetoheng tse fumanehang bukeng e kaholimo ea tlhahiso e tloaelehileng.

Mokhoa ona o molemo bakeng sa ho tsamaisa lits'ebetso ka potlako, empa hangata ha o khothaletsoe ho sebeletsa litaba tse tsitsitseng ka tsela ena. Ha e le hantle, kaha ha e le hantle re sebeletsa feela litaba tse tsitsitseng, ha re hloke Node.js e kentsoeng ka har'a setšoantšo sa rona - seva sa marang-rang se tla lekana.

Ka mantsoe a mang, ha re kopanya re hloka ntho e le 'ngoe, ha re e phethahatsa re hloka e' ngoe. Boemong bona, ho hahoa ka liketane hoa thusa.

Meaho ea liketane

Sena ke seo ba ngolang ka sona diketane di aha litokomaneng tsa OpenShift:

"Likopano tse peli li ka hokahanngoa, 'me e 'ngoe e hlahisa mokhatlo o hlophisitsoeng 'me e 'ngoe e tšoare mokhatlo oo ka setšoantšo se fapaneng se sebelisetsoang ho tsamaisa setheo seo."

Ka mantsoe a mang, re ka sebelisa setšoantšo sa Web App Builder ho tsamaisa moaho oa rona, ebe re sebelisa setšoantšo sa seva sa webo, NGINX e tšoanang, ho sebeletsa litaba tsa rona.

Kahoo, re ka sebelisa setšoantšo sa Web App Builder e le sehahi se "hloekileng" 'me ka nako e ts'oanang re na le setšoantšo se senyenyane sa nako ea ho sebetsa.

Joale ha re shebeng sena ka mohlala o ikhethileng.

Bakeng sa koetliso re tla sebelisa sesebelisoa se bonolo sa React, e entsoeng ka ho sebelisa sesebelisoa sa line-taelo sa ho etsa-react-app.

E tla re thusa ho kopanya lintho tsohle OpenShift template file.

Ha re shebeng faele ena ka botlalo, 'me re qale ka karolo ea li-parameter.

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

Ntho e 'ngoe le e' ngoe mona e hlakile, empa ho bohlokoa ho ela hloko parameter ea OUTPUT_DIR. Bakeng sa ts'ebeliso ea React mohlaleng oa rona, ha ho na letho leo u ka tšoenyehang ka lona, ​​kaha React e sebelisa boleng ba kamehla e le foldara ea tlhahiso, empa tabeng ea Angular kapa ntho e 'ngoe, parameter ena e tla hloka ho fetoloa ha ho hlokahala.

Joale ha re shebeng karolo ea 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'

Sheba setšoantšo sa boraro le sa bone. Ka bobeli li hlalosoa e le litšoantšo tsa Docker, 'me u ka bona hantle hore na li tsoa hokae.

Setšoantšo sa boraro ke web-app-builder 'me se tsoa ho nodeshift/ubi8-s2i-web-app e tšoailoeng 10.x ho Sebaka sa marang-rang.

Ea bone ke setšoantšo sa NGINX (mofuta oa 1.12) se nang le tag ea morao-rao Sebaka sa marang-rang.

Joale a re shebeng litšoantšo tse peli tsa pele. Ka bobeli ha li na letho qalong 'me li bōptjoa feela nakong ea ho haha. Setšoantšo sa pele, react-web-app-builder, e tla ba sephetho sa mohato oa kopano o tla kopanya setšoantšo sa web-app-builder-runtime le khoutu ea rona ea mohloli. Ke kahoo re kentseng "-builder" lebitsong la setšoantšo sena.

Setšoantšo sa bobeli - react-web-app-runtime - e tla ba sephetho sa ho kopanya nginx-image-runtime le lifaele tse ling ho tsoa setšoantšong sa react-web-app-builder. Setšoantšo sena se tla boela se sebelisoe nakong ea ho romelloa 'me se tla ba le seva sa marang-rang feela le HTML e sa fetoheng, JavaScript, CSS ea ts'ebeliso ea rona.

U ferekane? Joale ha re shebeng meralo ea moaho mme e tla hlaka haholoanyane.

Template ea rona e na le litlhophiso tse peli tsa kaho. Ea pele ke ena, 'me e maemong a matle haholo:

  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

Joalokaha u bona, mohala o nang le label 1 o re sephetho sa moaho ona se tla beoa setšoantšong se tšoanang sa react-web-app-builder seo re se boneng pejana ho karolo ea ImageStreams.

Mohala o ngotsoeng 2 o u bolella hore na u ka fumana khoutu hokae. Tabeng ea rona, ena ke polokelo ea git, 'me sebaka, ref le foldara ea litaba li khethoa ke liparamente tseo re seng re li bone ka holimo.

Mohala o ngotsoeng 3 ke oo re seng re o bone karolong ea li-parameter. E eketsa phetoho ea tikoloho ea OUTPUT_DIR, eo mohlaleng oa rona e leng ho haha.
Mohala o ngotsoeng 4 o re o sebelise setšoantšo sa web-app-builder-runtime, seo re seng re se bone karolong ea ImageStream.

Mola o ngoliloeng 5 o re re batla ho sebelisa moaho oa tlatsetso haeba setšoantšo sa S2I se e tšehetsa, le setšoantšo sa Web App Builder. Ka lekhetlo la pele, kamora hore sethala sa kopano se phetheloe, setšoantšo se tla boloka foldara ea node_modules faeleng ea polokelo. Ebe, lits'ebetsong tse latelang, setšoantšo se tla notlolla foldara ena ho fokotsa nako ea kaho.

'Me qetellong, mohala o ngotsoeng 6 ke lisosa tse' maloa feela tsa ho etsa hore mohaho o sebetse ka mokhoa o ikemetseng, ntle le ho kenella ka letsoho, ha ntho e fetoha.

Ka kakaretso ena ke tlhophiso e ntle e tloaelehileng ea kaho.

Joale ha re shebeng tlhophiso ea bobeli ea kaho. E tšoana haholo le ea pele, empa ho na le phapang e le 'ngoe ea bohlokoa.

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

Kahoo tlhophiso ea bobeli ea ho haha ​​ke react-web-app-runtime, 'me e qala ka mokhoa o motle haholo.

Mohala o ngotsoeng 1 ha se ntho e ncha - o re feela sephetho sa moaho se kentsoe setšoantšong sa react-web-app-runtime.

Mohala o ngotsoeng 2, joalo ka tlhophiso e fetileng, o bonts'a hore na o ka fumana khoutu ea mohloli hokae. Empa hlokomela hore mona re re e nkiloe setšoantšong. Ho feta moo, ho tloha setšoantšong seo re sa tsoa se etsa - ho tloha ho react-web-app-builder (e bontšitsoeng moleng o ngotsoeng 3). Lifaele tseo re batlang ho li sebelisa li ka har'a setšoantšo 'me sebaka sa bona sa moo se behiloe moleng o ngotsoeng 4, molemong oa rona ke /opt/app-root/output/. Haeba u hopola, mona ke moo lifaele tse hlahisitsoeng ho latela liphetho tsa ho aha sesebelisoa sa rona li bolokiloeng.

Sephutheloana sa sebaka se boletsoeng ka nako e nang le label 5 ke feela bukana ea hajoale (sena ke sohle, hopola, ho sebetsa ka har'a ntho e itseng ea boselamose e bitsoang OpenShift, eseng komporong ea hau ea lehae).

Karolo ea leano - line e ngotsoeng 6 - e boetse e tšoana le tlhophiso ea pele ea mohaho. Ke lekhetlong lena feela re tla sebelisa nginx-image-runtime, eo re seng re e bone karolong ea ImageStream.

Qetellong, mohala o ngotsoeng 7 ke karolo ea lintho tse susumetsang tse tla etsa hore mohaho ona o be teng nako le nako ha setšoantšo sa react-web-app-builder se fetoha.

Ho seng joalo, template ena e na le tlhophiso e ntle e tloaelehileng ea phepelo, hammoho le lintho tse amanang le lits'ebeletso le litsela, empa re ke ke ra kena lintlha tse ngata haholo. Ka kopo hlokomela hore setšoantšo se tla sebelisoa ke setšoantšo sa react-web-app-runtime.

Phetiso ea Kopo

Joale kaha re se re shebile template, ha re boneng hore na re ka e sebelisa joang ho kenya kopo.

Re ka sebelisa sesebelisoa sa bareki sa OpenShift se bitsoang oc ho tsamaisa template ea rona:

$ 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

Taelo ea pele setšoantšong se kaholimo ke mokhoa oa ka boomo oa ho fumana template./openshiftio/application.yaml.

Taelo ea bobeli e theha sesebelisoa se secha se ipapisitseng le template ena.

Ka mor'a hore litaelo tsena li sebetse, re tla bona hore re na le likopano tse peli:

Lisebelisoa tsa sejoale-joale ho OpenShift, karolo ea 2: meaho ea liketane

'Me ha re khutlela skrineng sa Overview, re tla bona pod e qalileng:

Lisebelisoa tsa sejoale-joale ho OpenShift, karolo ea 2: meaho ea liketane

Tobetsa sehokelo 'me re tla isoa sesebelisoa sa rona, e leng leqephe la kamehla la React App:

Lisebelisoa tsa sejoale-joale ho OpenShift, karolo ea 2: meaho ea liketane

Tlatsetso ea 1

Bakeng sa barati ba Angular re boetse re na le mohlala oa kopo.

Mohlala mona oa tšoana, ntle le OUTPUT_DIR e fapaneng.

Tlatsetso ea 2

Sehloohong sena re sebelisitse NGINX joalo ka seva sa marang-rang, empa ho bonolo haholo ho e nkela sebaka ka Apache, fetola feela template faeleng. NGINX setšoantšo mabapi le Setšoantšo sa Apache.

fihlela qeto e

Karolong ea pele ea letoto lena, re bonts'itse mokhoa oa ho kenya kapele lits'ebetso tsa sejoale-joale tsa webo sethaleng sa OpenShift. Kajeno re shebile hore na setšoantšo sa Web App se etsa eng le hore na se ka kopanngoa joang le seva sa marang-rang se hloekileng joaloka NGINX se sebelisa li-chain builds ho etsa mohaho o hlophisitsoeng oa tlhahiso ea tlhahiso. Sehloohong se latelang le sa ho qetela letotong lena, re tla bonts'a mokhoa oa ho tsamaisa seva ea nts'etsopele bakeng sa ts'ebeliso ea hau ho OpenShift le ho netefatsa ho hokahanya lifaele tsa lehae le tse hole.

Likahare tsa letoto lena la lihlooho

  • Karolo ea 1: mokhoa oa ho kenya lits'ebetso tsa sejoale-joale tsa webo ka mehato e seng mekae;
  • Karolo ea 2: Mokhoa oa ho sebelisa setšoantšo se secha sa S2I se nang le setšoantšo sa seva sa HTTP se teng, joalo ka NGINX, ho sebelisa likopano tse amanang le OpenShift bakeng sa tlhahiso ea tlhahiso;
  • Karolo ea 3: mokhoa oa ho tsamaisa seva sa nts'etsopele bakeng sa ts'ebeliso ea hau sethaleng sa OpenShift le ho se hokahanya le sistimi ea faele ea lehae.

Lisebelisoa tse Eketsehileng

Source: www.habr.com

Eketsa ka tlhaloso