Ngwa ọgbara ọhụrụ dị na OpenShift, akụkụ 2: agbụ a na-ewu

Ndewo, unu niile! Nke a bụ ọkwa nke abụọ na usoro anyị nke anyị na-egosi otu esi etinye ngwa webụ ọgbara ọhụrụ na Red Hat OpenShift.

Ngwa ọgbara ọhụrụ dị na OpenShift, akụkụ 2: agbụ a na-ewu

Na post gara aga, anyị metụrụ aka na ikike nke ihe onyonyo ọhụrụ S2I (isi iyi-to-image), nke emebere maka iwulite na ibuga ngwa webụ ọgbara ọhụrụ na ikpo okwu OpenShift. Mgbe ahụ, anyị nwere mmasị na isiokwu nke ibuga ngwa ngwa ngwa, ma taa, anyị ga-eleba anya ka esi eji ihe oyiyi S2I dị ka ihe oyiyi "dị ọcha" na-ewu ụlọ ma jikọta ya na mgbakọ OpenShift yiri ya.

Oyiyi onye nrụpụta dị ọcha

Dịka anyị kwuru na akụkụ nke XNUMX, ọtụtụ ngwa webụsaịtị ọgbara ọhụrụ nwere ihe a na-akpọ ọkwa nrụpụta, nke na-arụkarị ọrụ dị ka ntụgharị koodu, nchikota faịlụ ọtụtụ, na mbelata. A na-echekwa faịlụ ndị enwetara n'ihi arụmọrụ ndị a - na nke a bụ HTML static, Javascript na CSS - echekwara na folda mmepụta. Ebe nchekwa a na-adaberekarị n'ihe eji arụ ọrụ a na-eji, maka React nke a ga-abụ folda ./build (anyị ga-alaghachi na nke a n'ụzọ zuru ezu n'okpuru).

Isi mmalite-na-Image (S2I)

Na post a, anyị anaghị emetụ isiokwu a "gịnị bụ S2I na otu esi eji ya" (ị nwere ike ịgụkwu gbasara nke a ebe a), ma ọ dị mkpa ka ị dokwuo anya na usoro abụọ a na usoro a iji ghọta ihe ihe oyiyi Web App Builder na-eme.

Usoro mgbakọ

Usoro mgbakọ ahụ yiri nnọọ ihe na-eme mgbe ị na-arụ ọrụ docker ma mechaa nwee ihe oyiyi Docker ọhụrụ. N'ihi ya, usoro a na-eme mgbe ịmalitere ụlọ n'elu ikpo okwu OpenShift.

N'ihe banyere onyonyo Nrụpụta Ngwa Weebụ, ọ bụ ọrụ maka ịwụnye ndabere ngwa gị yana ịrụ ọrụ ya. kpọkọta script. Na ndabara, onyonyo onye nrụpụta na-eji npm run build construct, mana nke a nwere ike mebie ya site na mgbanwe gburugburu NPM_BUILD.

Dị ka anyị kwuru na mbụ, ebe nke okokụre, ama wuru ngwa dabere na ihe ngwaọrụ ị na-eji. Dịka ọmụmaatụ, n'ihe banyere React nke a ga-abụ folda ./build, yana maka ngwa Angular ọ ga-abụ folda project_name/dist. Na, dị ka egosiri na post gara aga, ọnọdụ nke akwụkwọ ndekọ aha, nke atọrọ ka ọ rụọ ya na ndabara, nwere ike ịkagbu site na mgbanwe gburugburu OUTPUT_DIR. Ọfọn, ebe ọ bụ na ebe nke mmepụta nchekwa dị iche na framework na framework, ị na-edetu nnọọ mmepụta na ọkọlọtọ nchekwa na oyiyi, ya bụ /opt/apt-root/output. Nke a dị mkpa maka ịghọta nke ọzọ nke isiokwu a, ma ugbu a, ka anyị ngwa ngwa anya na-esote ogbo - agba ọsọ agba.

agba agba

Nke a na-eme mgbe a na-akpọ oku na-agba ọsọ docker na onyonyo ọhụrụ emepụtara n'oge mgbakọ. Otu ihe ahụ na-eme mgbe ị na-ebuga na ikpo okwu OpenShift. Ọdabara agba script na -eji ije ozi modul ijere ọdịnaya kwụ ọtọ dị na ndekọ mmepụta ọkọlọtọ dị n'elu.

Usoro a dị mma maka ibuga ngwa ngwa ngwa, mana anaghị atụ aro ka ịnye ọdịnaya kwụ ọtọ otu a. Ọ dị mma, ebe ọ bụ na n'eziokwu anyị na-eje ozi naanị ọdịnaya kwụ ọtọ, anyị achọghị itinye Node.js n'ime onyonyo anyị - sava weebụ ga-ezuru.

N'ikwu ya n'ụzọ ọzọ, mgbe anyị na-ezukọ, anyị chọrọ otu ihe, mgbe anyị na-eme ihe, anyị chọrọ ihe ọzọ. N'ọnọdụ dị otú a, a na-eji ígwè arụ ọrụ eme ihe.

Ejiri eriri na-ewuli elu

Nke a bụ ihe ha na-ede banyere ya agbụ na-ewu na akwụkwọ OpenShift:

"Enwere ike jikọta mgbakọ abụọ ọnụ, otu na-emepụta ụlọ ọrụ achịkọtara na nke ọzọ na-akwado ụlọ ọrụ ahụ na foto dị iche nke a na-eji na-arụ ọrụ ahụ."

N'ikwu ya n'ụzọ ọzọ, anyị nwere ike iji ihe oyiyi Web App Builder rụọ ọrụ anyị, wee jiri ihe nkesa weebụ, otu NGINX, na-eje ozi ọdịnaya anyị.

Ya mere, anyị nwere ike iji ihe oyiyi Web App Builder dị ka onye na-ewu "dị ọcha" ma n'otu oge ahụ nwere obere ihe oyiyi oge.

Ugbu a, ka anyị jiri otu ihe atụ leba anya na nke a.

Maka ọzụzụ anyị ga-eji mfe React ngwa, emepụtara site na iji ngwa ahịrị iwu create-react-app.

Ọ ga-enyere anyị aka itinye ihe niile ọnụ OpenShift template faịlụ.

Ka anyị lelee faịlụ a n'ụzọ zuru ezu, wee malite na ngalaba parampat.

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

Ihe niile ebe a doro anya, mana ọ bara uru ịṅa ntị na oke OUTPUT_DIR. Maka ngwa React na ihe atụ anyị, ọ nweghị ihe ga-echegbu onwe ya, ebe ọ bụ na React na-eji uru ndabara dị ka folda mmepụta, mana n'ihe gbasara Angular ma ọ bụ ihe ọzọ, ọ ga-adị mkpa ka ịgbanwee paramita a dị ka ọ dị mkpa.

Ugbu a, ka anyị leba anya na ngalaba 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'

Lelee onyonyo nke atọ na nke anọ. A kọwapụtara ha abụọ dị ka onyonyo Docker, ị ga-ahụ nke ọma ebe ha si bịa.

Onyonyo nke atọ bụ web-app-builder na ọ na-abịa na nodeshift/ubi8-s2i-web-app mkpado 10.x na Docker hub.

Nke anọ bụ onyonyo NGINX (ụdị 1.12) nwere mkpado kacha ọhụrụ Docker hub.

Ugbu a, ka anyị leba anya na foto abụọ mbụ. Ha abụọ bụ ihe efu na mmalite ma na-emepụta naanị n'oge a na-ewu ụlọ. Onyonyo nke mbụ, react-web-app-builder, ga-abụ nsonaazụ nke usoro mgbakọ ga-ejikọta onyonyo-ngwa-builder-oyi oge yana koodu isi mmalite anyị. Ọ bụ ya mere anyị ji gbakwunye "-builder" na aha ihe oyiyi a.

Onyonyo nke abụọ - react-web-app-runtime - ga-abụ nsonaazụ nke ijikọ oge nginx-image-runtime yana ụfọdụ faịlụ sitere na onyonyo react-web-app-builder. A ga-ejikwa onyonyo a n'oge mbugharị, ọ ga-enwe naanị sava weebụ yana HTML, Javascript, CSS nke ngwa anyị.

Ọ gbagwojuru anya? Ugbu a, ka anyị leba anya na nhazi nhazi na ọ ga-aghọwanye nke ọma.

template anyị nwere nhazi ihe nrụpụta abụọ. Nke a bụ nke mbụ, na ọ mara mma ọkọlọtọ:

  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

Dị ka ị na-ahụ, ahịrị ahụ nwere akara 1 na-ekwu na a ga-etinye nsonaazụ nke ihe owuwu a n'otu ihe oyiyi-web-app-builder nke anyị hụrụ ntakịrị oge na ngalaba ImageStreams.

Ahịrị akpọrọ 2 na-agwa gị ebe ị ga-esi nweta koodu ahụ. N'ọnọdụ anyị, nke a bụ ebe nchekwa git, yana ebe, ref na nchekwa ihe na-ekpebi site na paramita anyị hụburu n'elu.

Ahịrị akpọrọ 3 bụ ihe anyị hụburu na ngalaba paramita. Ọ na-agbakwunye mgbanwe gburugburu OUTPUT_DIR, nke n'ihe atụ anyị na-ewu.
Ahịrị akpọrọ 4 na-ekwu iji web-app-builder-runtime image, nke anyị hụburu na ngalaba ImageStream.

Ahịrị akpọrọ 5 na-ekwu na anyị chọrọ iji ihe nrụpụta agbakwunyere ma ọ bụrụ na onyonyo S2I na-akwado ya, yana onyonyo Nrụpụta Ngwa Weebụ na-eme. Na mbido mbụ, mgbe emechara ọkwa mgbakọ ahụ, onyonyo a ga-echekwa folda node_modules n'ime faịlụ ebe nchekwa. Mgbe ahụ, na agba ọsọ na-esote, onyonyo a ga-ebupụ folda a iji belata oge nrụpụta.

Na n'ikpeazụ, ahịrị a na-akpọ 6 bụ nanị ihe ole na ole na-eme ka ụlọ ahụ na-arụ ọrụ na-akpaghị aka, na-enweghị enyemaka aka, mgbe ihe gbanwere.

N'ozuzu nke a bụ ezigbo nhazi ihe nrụpụta ọkọlọtọ.

Ugbu a, ka anyị lelee nhazi ihe owuwu nke abụọ. O yiri nnọọ nke mbụ, ma e nwere otu ọdịiche dị mkpa.

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

Ya mere nhazi ihe nrụpụta nke abụọ bụ react-web-app-runtime, ọ na-amalitekwa ọmarịcha ọkọlọtọ.

Ahịrị akpọrọ 1 abụghị ihe ọhụrụ - ọ na-ekwu naanị na etinye nsonaazụ nrụpụta n'ime onyonyo react-web-app-runtime.

Ahịrị akpọrọ 2, dị ka ọ dị na nhazi gara aga, na-egosi ebe ị ga-esi nweta koodu isi mmalite. Ma rịba ama na ebe a anyị na-ekwu na e si na foto a wepụta ya. Ọzọkwa, site na onyonyo nke anyị mebere - site na react-web-app-builder (gosiri na ahịrị akpọrọ 3). Faịlụ anyị chọrọ iji dị n'ime onyonyo a ma edobere ebe ha nọ n'ahịrị akpọrọ 4, n'ọnọdụ anyị ọ bụ /opt/app-root/output/. Ọ bụrụ na ị chetara, nke a bụ ebe a na-echekwa faịlụ ndị emepụtara dabere na nsonaazụ nrụpụta ngwa anyị.

Ebe nchekwa ebe akọwapụtara n'okwu ahụ nwere akara 5 bụ naanị akwụkwọ ndekọ aha ugbu a (nke a bụ ihe niile, cheta, na-agba ọsọ n'ime ihe anwansi akpọrọ OpenShift, ọ bụghị na kọmputa mpaghara gị).

Akụkụ atụmatụ - ahịrị akpọrọ 6 - dịkwa ka nhazi ihe nrụpụta mbụ. Naanị oge a anyị ga-eji nginx-image-runtime, nke anyị hụburu na ngalaba ImageStream.

N'ikpeazụ, ahịrị akpọrọ 7 bụ akụkụ nke ihe na-akpalite ga-eme ka ihe owuwu a rụọ ọrụ oge ọ bụla ihe onyonyo-web-app-builder gbanwere.

Ma ọ bụghị ya, ndebiri a nwere ezigbo nhazi nhazi ọkwa, yana ihe ndị metụtara ọrụ na ụzọ, mana anyị agaghị abanye n'ime oke nkọwa ahụ. Biko mara na onyonyo a ga-ebunye bụ onyonyo react-web-app-oyi oge.

Nkwanye ngwa

Yabụ ugbu a ka anyị lere anya na template, ka anyị hụ ka esi eji ya wepụta ngwa.

Anyị nwere ike iji ngwa ahịa OpenShift a na-akpọ oc iji wepụta template anyị:

$ 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

Iwu mbụ dị na nseta ihuenyo dị n'elu bụ ụzọ injinịa kpachara anya chọta template./openshiftio/application.yaml.

Iwu nke abụọ na-emepụta ngwa ọhụrụ dabere na ndebiri a.

Mgbe iwu ndị a gachara, anyị ga-ahụ na anyị nwere mgbakọ abụọ:

Ngwa ọgbara ọhụrụ dị na OpenShift, akụkụ 2: agbụ a na-ewu

Na ịlaghachi na ihuenyo Overview, anyị ga-ahụ pọd ewepụtara:

Ngwa ọgbara ọhụrụ dị na OpenShift, akụkụ 2: agbụ a na-ewu

Pịa njikọ a, a ga-akpọrọ anyị gaa na ngwa anyị, nke bụ ibe ngwa React ndabara:

Ngwa ọgbara ọhụrụ dị na OpenShift, akụkụ 2: agbụ a na-ewu

Mgbakwunye 1

Maka ndị hụrụ Angular n'anya anyị nwekwara ngwa ihe atụ.

Ụkpụrụ ebe a bụ otu, ma e wezụga maka mgbanwe OUTPUT_DIR.

Mgbakwunye 2

N'isiokwu a, anyị na-eji NGINX dị ka sava weebụ, ma ọ dị mfe iji Apache dochie ya, gbanwee template na faịlụ ahụ. Foto NGINX on Foto Apache.

nkwubi

N'akụkụ mbụ nke usoro isiokwu a, anyị gosiri otu esi etinye ngwa ngwa webụ ọgbara ọhụrụ na ikpo okwu OpenShift. Taa, anyị lere anya ihe onyonyo ngwa weebụ na-eme yana otu esi ejikọta ya na sava weebụ dị ọcha dị ka NGINX na-eji agbụ ígwè arụ ọrụ iji mepụta mmepụta ngwa ngwa ngwa ngwa. N'isiokwu na-esote na nke ikpeazụ n'usoro isiokwu a, anyị ga-egosi otu esi eme ihe nkesa mmepe maka ngwa gị na OpenShift ma hụ na mmekọrịta nke faịlụ mpaghara na nke dịpụrụ adịpụ.

Ọdịnaya nke usoro isiokwu a

  • Akụkụ 1: otu esi etinye ngwa webụ ọgbara ọhụrụ n'ime obere usoro ole na ole;
  • Nkebi 2: Otu esi eji onyonyo S2I ọhụrụ nwere onyonyo ihe nkesa HTTP dị ugbu a, dị ka NGINX, na-eji ọgbakọ OpenShift metụtara maka mbugharị mmepụta;
  • Nkebi 3: otu esi agba ọsọ nkesa mmepe maka ngwa gị n'elu ikpo okwu OpenShift wee mekọrịta ya na sistemụ faịlụ mpaghara.

Ngwa ndị ọzọ

isi: www.habr.com

Tinye a comment