Talosaga fa'aonaponei i luga o OpenShift, vaega 2: fausia filifili

Talofa uma! Ole fa'ailoga lona lua lea ile matou fa'asologa o lo'o fa'aalia ai le fa'aogaina o upegatafa'ilagi fa'aonaponei ile Red Hat OpenShift.

Talosaga fa'aonaponei i luga o OpenShift, vaega 2: fausia filifili

I le pou muamua, matou te paʻi atu i le gafatia o le S2I fou (source-to-image) ata faufale, lea ua mamanuina mo le fausiaina ma le faʻaogaina o talosaga i luga o le initaneti i luga o le OpenShift platform. Ona matou fiafia lea i le autu o le vave faʻapipiʻiina o se talosaga, ma o aso nei o le a matou vaʻavaʻai i le faʻaogaina o se ata S2I o se ata faufale "mama" ma tuʻufaʻatasia ma faʻatasi ma faʻalapotopotoga OpenShift.

Ata faumama mama

E pei ona matou taʻua i le Vaega XNUMX, o le tele o talosaga i luga o le upega tafaʻilagi faʻaonapo nei o loʻo i ai se tulaga e taʻua o le fausiaina, lea e masani ona faʻatinoina galuega e pei o le faʻaliliuina o code, tele faʻapipiʻi faila, ma le faʻaitiitia. O faila na maua ona o nei faʻagaioiga - ma o le HTML static, JavaScript ma CSS - o loʻo teuina i totonu o le pusa o galuega. O le nofoaga o lenei faila e masani lava ona faʻalagolago i mea faufale o loʻo faʻaaogaina, ma mo React o le ./build lea (o le a tatou toe foʻi mai i lenei mea ile auiliiliga i lalo).

Puna-i-Ata (S2I)

I lenei pou matou te le paʻi atu i le autu "o le a le S2I ma le faʻaogaina" (e mafai ona e faitau atili e uiga i lenei mea iinei), ae taua le manino e uiga i laasaga e lua i lenei faagasologa e malamalama ai i le mea e fai e le Upega Tafaʻilagi ata.

Vaega fono

O le vaega faʻapotopotoga e talitutusa lava i le natura i le mea e tupu pe a e faʻatautaia le fausiaina o le fale ma faʻauʻu i se ata fou Docker. E tusa ai, o lenei laasaga e tupu pe a amata se fausiaina i luga o le OpenShift platform.

I le tulaga o le Web App Builder ata, e nafa ma le faʻapipiʻiina o faʻalagolago i lau talosaga ma faʻatautaia le fausiaina. fa'apipi'i tusitusiga. Ona o le faaletonu, o le ata faufale e faʻaaogaina le npm run build construct, ae e mafai ona faʻaogaina e ala i le NPM_BUILD environment variable.

E pei ona matou fai atu muamua, o le nofoaga o le maeʻa, ua uma ona fausia le talosaga e faʻalagolago i mea faigaluega e te faʻaaogaina. Mo se faʻataʻitaʻiga, i le tulaga o React o le a avea lea ma ./build folder, ma mo talosaga Angular o le a avea ma project_name/dist folder. Ma, e pei ona uma ona faʻaalia i le pou muamua, o le nofoaga o le lisi o galuega, lea e faʻatulagaina e fausia e ala i le le mafai, e mafai ona faʻaaogaina e ala i le fesuiaiga o le siosiomaga OUTPUT_DIR. Ia, talu ai ona o le tulaga o le faila faila e ese mai le faʻavaa i lea faʻavae, e te kopiina le mea na gaosia i le faila masani i le ata, e pei o / opt / apt-root / output. E taua tele lenei mea mo le malamalama i le vaega o totoe o lenei tusiga, ae mo le taimi nei seʻi o tatou vaʻavaʻai vave i le isi laʻasaga - o le taʻavale.

vaega tamo'e

O lenei laasaga e tupu pe a faia se valaau i le docker run i luga o le ata fou na faia i le taimi o le faʻapotopotoga. E tutusa lava le mea e tupu pe a faʻapipiʻi i luga o le OpenShift platform. Default tamo'e tusitusiga faʻaaoga tautua module e tu'uina atu mea fa'apitoa o lo'o i totonu o le fa'atonuga o galuega fa'atino o lo'o i luga.

O lenei metotia e lelei mo le faʻapipiʻiina vave o talosaga, ae e masani lava e le fautuaina e tuʻuina atu mea faʻapitoa i lenei auala. Ia, talu ai o le mea moni e naʻo mea e tuʻuina atu, matou te le manaʻomia le Node.js faʻapipiʻi i totonu o la matou ata - o le a lava le upega tafaʻilagi.

I se isi faaupuga, pe a faʻapipiʻi matou te manaʻomia se mea se tasi, pe a faʻatinoina matou te manaʻomia se isi. I lenei tulaga, o le fausia o filifili e aoga.

Fausia filifili

O le mea lea ua latou tusia ai fausia filifili i totonu o pepa OpenShift:

"E lua faʻapotopotoga e mafai ona fesoʻotaʻi faʻatasi, ma le tasi e faʻatupuina se faʻalapotopotoga tuʻufaʻatasia ma le isi faʻafeiloaʻi lena faʻalapotopotoga i se ata ese e faʻaaogaina e faʻatautaia ai lena faalapotopotoga."

I se isi faaupuga, e mafai ona tatou faʻaogaina le Web App Builder image e faʻatautaia ai la tatou fale, ona faʻaaoga lea o le ata o le upega tafaʻilagi, le NGINX tutusa, e tautua ai a tatou mea.

O le mea lea, e mafai ona tatou faʻaogaina le Upega Tafaʻilagi Faʻapipiʻi ata e avea o se faufale "mama" ma i le taimi lava e tasi e iai se ata laʻititi.

Se'i o tatou va'ava'ai i lenei mea ma se fa'ata'ita'iga fa'apitoa.

Mo toleniga o le a matou faʻaaogaina faigofie React talosaga, faia e fa'aaoga ai le mea faigaluega laina fa'atonu-react-app.

O le a fesoasoani ia i tatou e tuufaatasia mea uma OpenShift faila faila.

Se'i o tatou va'ava'ai atili i le faila lea, ma amata i le vaega fa'ata'oto.

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

O mea uma iinei e matua manino lava, ae e aoga le faʻalogo i le OUTPUT_DIR parameter. Mo le React application i la tatou faʻataʻitaʻiga, e leai se mea e popole ai, talu ai e faʻaaogaina e React le tau le aoga e pei o le faila faila, ae i le tulaga o Angular poʻo se isi mea, e manaʻomia le suia o lenei parakalafa pe a manaʻomia.

Se'i o tatou va'ai i le vaega o 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'

Va'ai i ata lona tolu ma le fa. O loʻo faʻamatalaina uma e pei o ata Docker, ma e mafai ona e vaʻaia lelei le mea e sau ai.

O le ata lona tolu o le web-app-builder ma e sau mai le nodeshift/ubi8-s2i-web-app tagged 10.x on Docker nofoaga.

O le lona fa o se ata NGINX (version 1.12) faʻatasi ai ma le pine fou i luga Docker nofoaga.

Se'i o tatou tilotilo la i ata muamua e lua. O lo'o gaogao uma i le amataga ma e na'o le taimi o le fausiaina o le vaega e faia. O le ata muamua, react-web-app-builder, o le a avea ma taunuuga o se laʻasaga faʻapotopotoga o le a tuʻufaʻatasia ai le ata web-app-builder-runtime image ma le tatou code source. O le mea lena na matou faʻaopoopoina ai le "-builder" i le igoa o lenei ata.

O le ata lona lua - react-web-app-runtime - o le a avea ma taunuuga o le tuʻufaʻatasia o le nginx-image-runtime ma nisi faila mai le react-web-app-builder image. O lenei ata o le a faʻaaogaina i le taimi o le faʻapipiʻiina ma o le a naʻo le upega tafaʻilagi ma le HTML static, JavaScript, CSS o la matou talosaga.

Le mautonu? Se'i o tatou va'ava'ai i le fa'atulagaina o faufale ma o le a fa'amanino teisi.

O la matou mamanu e lua fau faufale. O le mea muamua lea, ma e matua masani lava:

  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

E pei ona mafai ona e vaʻaia, o le laina ma le igoa 1 o loʻo faʻapea o le taunuuga o lenei fausiaina o le a tuʻuina i le tutusa tali-web-app-builder ata na matou vaʻaia muamua i le vaega ImageStreams.

O le laina fa'ailoga 2 e ta'u atu ia te oe le mea e maua mai ai le code. I la matou tulaga, o le git repository, ma o le nofoaga, ref ma le faʻasologa o faʻamaumauga e faʻamoemoeina e faʻamaufaʻailoga ua uma ona matou vaʻaia i luga.

O le laina faʻailoga 3 o le mea lea ua uma ona matou vaʻaia i le vaega faʻamau. E faʻaopoopoina le suiga ole siosiomaga OUTPUT_DIR, lea i la tatou faʻataʻitaʻiga o le fausiaina.
O le laina faʻailoga 4 fai mai e faʻaoga le ata web-app-builder-runtime, lea ua uma ona matou vaʻaia i le vaega ImageStream.

Laina fa'ailoga 5 fai mai matou te manana'o e fa'aoga se fa'atupu fa'aopoopo pe afai e lagolagoina e le ata S2I, ma e fa'apea fo'i le ata o le Faufale Fa'asalalauga. I le faʻalauiloaina muamua, pe a maeʻa le faʻapotopotoga, o le ata o le a faʻasaoina le faila node_modules i se faila faila. Ona, i luga o taʻaloga mulimuli ane, o le ata o le a naʻo le tatalaina o lenei faila e faʻaitiitia ai le taimi o le fausiaina.

Ma le mea mulimuli, o le laina o loʻo faʻaigoaina 6 ua na o ni nai faʻaosoina e faʻaogaina ai le fausiaina otometi, e aunoa ma le faʻaogaina o le tusi, pe a suia se mea.

Ile aotelega, o se fa'atulagaga fau masani lelei lea.

Se'i o tatou va'ai i le fa'atulagaina o le faufale lona lua. E talitutusa lava ma le muamua, ae e tasi le eseesega taua.

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

O le faʻatulagaga lona lua o le faʻatulagaina o le tali-web-app-runtime, ma e amata i se tulaga masani.

Ole laina fa'ailoga 1 e le o se mea fou - e na'o le fa'apea o le fa'ai'uga e tu'u i totonu ole ata tali-web-app-runtime.

O le laina fa'ailoga 2, pei o le fa'asologa muamua, o lo'o ta'u mai ai le mea e maua mai ai le fa'ailoga puna. Ae maitau o iinei tatou te fai atu na aveesea mai le ata. E le gata i lea, mai le ata na matou fatuina - mai le react-web-app-builder (faʻaalia i le laina faʻailoga 3). O faila matou te mananaʻo e faʻaoga o loʻo i totonu o le ata ma o latou nofoaga o loʻo tuʻuina i le laina faʻailoga 4, i la matou tulaga o /opt/app-root/output/. Afai e te manatua, o le mea lea e teu ai faila e faʻavae i luga o taunuuga o le fausiaina o la matou talosaga.

O le faʻailoga o loʻo faʻamaonia i le faaupuga ma le igoa 5 e naʻo le lisi o loʻo i ai nei (o mea uma, manatua, o loʻo tamoe i totonu o se mea faʻapitoa e taʻua o OpenShift, ae le o luga o lau komepiuta i le lotoifale).

O le vaega o fuafuaga - laina faʻailoga 6 - e tutusa foi ma le faʻatulagaina muamua o le fausiaina. Naʻo le taimi lenei o le a matou faʻaogaina le nginx-image-runtime, lea ua uma ona matou vaʻaia i le vaega ImageStream.

Mulimuli ane, o le laina faʻailoga 7 o se vaega o faʻaosoina o le a faʻagaoioia lenei fale i taimi uma e suia ai le ata-web-app-builder image.

A leai, o lenei faʻataʻitaʻiga o loʻo i ai se faʻatulagaga masani faʻapipiʻi, faʻapea foʻi ma mea e fesoʻotaʻi ma auʻaunaga ma auala, ae matou te le oʻo atu i na auiliiliga. Faamolemole ia matau o le ata o le a faʻapipiʻiina o le react-web-app-runtime image.

Talosaga Fa'atonu

O lea la ua tatou vaʻavaʻai i le faʻataʻitaʻiga, seʻi o tatou vaʻai pe faʻapefea ona faʻaogaina e faʻapipiʻi ai se talosaga.

E mafai ona matou faʻaogaina le meafaigaluega OpenShift client e taʻua oc e faʻapipiʻi ai la matou mamanu:

$ 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

O le poloaiga muamua i le faʻamalama o loʻo i luga o se auala faʻainisinia ma le iloa e suʻe ai se faʻataʻitaʻiga./openshiftio/application.yaml.

O le poloaiga lona lua na o le fatuina o se talosaga fou e faʻavae i luga o lenei mamanu.

A maeʻa ona galue nei poloaiga, o le a tatou vaʻai e lua a tatou faʻapotopotoga:

Talosaga fa'aonaponei i luga o OpenShift, vaega 2: fausia filifili

Ma toe foʻi i le Vaʻaiga lautele, o le a matou vaʻai i le faʻalauiloaina o pod:

Talosaga fa'aonaponei i luga o OpenShift, vaega 2: fausia filifili

Kiliki le feso'ota'iga ma o le a ave i matou i la matou app, o le itulau fa'aletonu React App:

Talosaga fa'aonaponei i luga o OpenShift, vaega 2: fausia filifili

Fa'aopoopo 1

Mo tagata alofa Angular matou te maua foi fa'ata'ita'iga fa'aoga.

O le mamanu iinei e tutusa, vagana ai le fesuiaiga OUTPUT_DIR.

Fa'aopoopo 2

I lenei tusiga na matou faʻaogaina le NGINX o se 'upega tafaʻilagi, ae e faigofie lava ona sui i Apache, naʻo le suia o le mamanu i le faila. ata NGINX i Ata Apache.

iʻuga

I le vaega muamua o lenei faasologa, na matou faʻaalia ai le faʻaogaina vave o talosaga i luga ole laiga i luga ole OpenShift platform. O aso nei na matou vaʻavaʻai i le mea e fai e le Upega Tafaʻilagi ata ma pe faʻafefea ona tuʻufaʻatasia ma se 'upega tafaʻilagi mama e pei o le NGINX e faʻaogaina ai le faʻaogaina o mea e fausia ai se faʻapipiʻi faʻapipiʻi saunia. I le isi mataupu mulimuli ma le mulimuli i lenei faasologa, o le a matou faʻaalia pe faʻafefea ona faʻatautaia se atinaʻe server mo lau talosaga ile OpenShift ma faʻamautinoa le tuʻufaʻatasia o faila i le lotoifale ma mamao.

Anotusi o lenei faasologa o tala

  • Vaega 1: fa'afefea ona fa'apipi'i 'upega tafa'ilagi fa'aonaponei i ni nai la'asaga;
  • Vaega 2: Faʻafefea ona faʻaogaina se ata fou S2I faʻatasi ai ma se ata HTTP server o loʻo i ai nei, e pei ole NGINX, faʻaaogaina faʻatasi OpenShift assemblies mo le faʻapipiʻiina o gaosiga;
  • Vaega 3: faʻafefea ona faʻatautaia se faʻaumau atinaʻe mo lau talosaga i luga o le OpenShift platform ma faʻafetaui ma le faila faila i le lotoifale.

Punaoa Faaopoopo

puna: www.habr.com

Faaopoopo i ai se faamatalaga