Codsiyada casriga ah ee OpenShift, qaybta 2: dhismooyinka silsiladaysan

Salaamu caleykum Tani waa qoraalkii labaad ee taxanaheenna ah kaas oo aan ku muujineyno sida loo geeyo codsiyada shabakada casriga ah ee Koofiyada Cas OpenShift.

Codsiyada casriga ah ee OpenShift, qaybta 2: dhismooyinka silsiladaysan

Maqaalkii hore, waxaan wax yar taabtay awooda sawirka cusub ee S2I (source-to-image), kaas oo loogu talagalay in lagu dhiso oo la geeyo codsiyada shabakadaha casriga ah ee OpenShift. Ka dib waxaan xiisaynnay mawduuca ah in si degdeg ah loo diro codsi, maantana waxaan eegi doonaa sida loo isticmaalo sawirka S2I sida sawir dhise " saafi ah " oo aan ku daro shirarka OpenShift ee la xidhiidha.

Nadiifi sawirka wax dhisaha

Sida aan ku sheegnay Qaybta XNUMX, inta badan codsiyada shabakadaha casriga ah waxay leeyihiin waxa loogu yeero marxaladda dhisitaanka, taas oo sida caadiga ah fulisa hawlo ay ka mid yihiin kood-ku-gudbinta, isku xidhka faylalka badan, iyo yaraynta. Faylasha lagu helay natiijada hawlgalladan - oo kani waa HTML, JavaScript iyo CSS - waxa lagu kaydiyaa galka wax soo saarka. Goobta galkan inta badan waxa ay ku xidhan tahay waxa qalab dhis ee la isticmaalayo, iyo React ka tani waxa ay noqon doontaa ./build folder (waxaanu ku soo noqon doonaa si faahfaahsan hoos).

Isha-Sawirka (S2I)

Mawduucan "waa maxay S2I iyo sida loo isticmaalo" kuma taaban mawduuca (wax badan oo arrintan ku saabsan ayaad ka akhrisan kartaa halkan), laakiin waxaa muhiim ah in la caddeeyo labada tillaabo ee habkan si loo fahmo waxa uu sameeyo sawirka Web App Builder.

Marxaladda golaha

Marxaladda isu imaatinka waxay aad ula mid tahay dabeecadda waxa dhacaya marka aad wado dhisidda docker oo aad ku dhameysato sawir Docker cusub. Marka la eego, marxaladani waxay dhacdaa marka la bilaabayo dhismaha OpenShift platform.

Marka laga hadlayo sawirka Builder Web App, waxay mas'uul ka tahay rakibidda ku tiirsanaanta codsigaaga iyo socodsiinta dhismaha. ururin qoraalka. Sida caadiga ah, sawirka wax-dhisuhu wuxuu isticmaalaa dhismaha npm run dhis, laakiin tan waxaa lagaga gudbi karaa doorsoomiyaha deegaanka NPM_BUILD.

Sida aan horay u sheegnay, goobta la dhammeeyey, codsiga hore loo dhisay waxay kuxirantahay qalabka aad isticmaasho. Tusaale ahaan, marka laga hadlayo React tani waxay noqon doontaa ./build folder, iyo codsiyada Angular waxay noqon doontaa folder_name/dist folder. Iyo, sidii horeba loogu muujiyey boostadii hore, goobta hagaha wax-soo-saarka, ee loo dejiyay in si caadi ah loo dhiso, waxa lagaga gudbi karaa doorsoomiyaha deegaanka OUTPUT_DIR. Hagaag, maadaama meesha galka wax-soo-saarku uu ka duwan yahay qaab-dhismeedka ilaa qaab-dhismeedka, waxaad si fudud u koobiynaysaa wax-soo-saarka la soo saaray galka caadiga ah ee sawirka, kuwaas oo ah /opt/apt-root/output. Tani waxay muhiim u tahay fahamka inta ka hartay maqaalkan, laakiin hadda aan si dhakhso ah u eegno marxaladda xigta - marxaladda orodka.

marxaladda orod

Marxaladani waxay dhacdaa marka wacitaanka docker-ka lagu sameeyo sawirka cusub ee la sameeyay inta lagu guda jiro marxaladda kulanka. Isla sidaas oo kale ayaa dhacda marka la geynayo madal OpenShift. Asal ahaan orod qoraalka adeegsadaa adeega module si loogu adeego nuxurka taagan ee ku yaal tusaha wax soo saarka caadiga ah ee sare.

Habkani waxa uu u fiican yahay in si degdeg ah loo geeyo codsiyada, laakiin guud ahaan laguma talinayo in sidan loogu adeego nuxurka taagan. Hagaag, maadaama xaqiiqda aan u adeegno kaliya nuxurka taagan, uma baahnid Node.js lagu rakibo gudaha sawirkayaga - server-ka shabakada ayaa ku filan.

Si kale haddii loo dhigo, marka la isu keeno waxaan u baahanahay hal shay, marka la fulinayo waxaan u baahanahay mid kale. Xaaladdan oo kale, dhismooyinka silsiladda ah ayaa ku anfacaya.

Silsiladeysan wax u dhistaa

Tani waa waxa ay qoraan silsilado dhisan dukumeentiyada OpenShift:

"Laba shir ayaa la isku xiri karaa, iyadoo mid uu soo saarayo koox la soo ururiyey, kan kalena uu martigelinayo hay'addaas muuqaal gaar ah oo loo isticmaalo in lagu maamulo hay'addaas."

Si kale haddii loo dhigo, waxaan u isticmaali karnaa sawirka Web App Builder si aan u wadno dhismeheena, ka dibna isticmaalno sawirka server-ka shabakadda, isla NGINX, si aan ugu adeegno nuxurkayaga.

Sidaa darteed, waxaan u isticmaali karnaa sawirka Web App Builder sida dhise "saafi ah" isla mar ahaantaana aan haysano sawir yar oo runtime ah.

Haddaba aan ku eegno arrintan tusaale gaar ah.

Tababarka waxaan u isticmaali doonaa codsi React fudud, la sameeyay iyadoo la adeegsanayo aaladda khadka taliska ee create-react-app.

Waxay naga caawin doontaa inaan wax walba isu geyno OpenShift qaabka faylka.

Aynu si faahfaahsan u eegno faylkan, oo aan ku bilowno qaybta cabbiraadaha.

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

Wax walba halkan aad bay u cad yihiin, laakiin waxaa mudan in fiiro gaar ah loo yeesho cabbirka OUTPUT_DIR. Codsiga React ee tusaalaheena, ma jiraan wax laga walwalo, maadaama React uu u isticmaalo qiimaha caadiga ah sida faylka wax soo saarka, laakiin kiiska Angular ama wax kale, cabbirkan wuxuu u baahan doonaa in la beddelo sida loogu baahdo.

Hadda aan eegno qaybta 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'

Bal u fiirso sawirka saddexaad iyo kan afraad. Labaduba waxaa lagu qeexay sawirada Docker, oo waxaad si cad u arki kartaa halka ay ka yimaadeen.

Sawirka saddexaad waa web-app-builder wuxuuna ka yimid nodeshift/ubi8-s2i-web-app ku calaamadsan 10.x on Docker hub.

Midka afraad waa sawirka NGINX (nooca 1.12) oo leh summada ugu dambeysa Docker hub.

Haddaba aan eegno labada sawir ee hore. Labaduba way madhan yihiin bilawga waxaana la abuuray kaliya inta lagu jiro marxaladda dhismaha. Sawirka ugu horreeya, react-web-app-builder, waxa uu noqon doonaa natiijada tallabada shirka oo isku dari doonta sawirka web-app-builder-runtime iyo koodka ishayada. Taasi waa sababta aan ugu darnay "-dhise" magaca sawirkan.

Sawirka labaad - react-web-app-runtime - wuxuu noqon doonaa natiijada isku darka nginx-image-runtime iyo faylalka qaar ka mid ah sawirka react-web-app-builder. Sawirkan waxa kale oo la isticmaali doonaa inta lagu jiro hawlgalinta waxana uu ka koobnaan doonaa oo kaliya server-ka webka iyo HTML-ka taagan, JavaScript, CSS ee codsigayaga.

Ma wareersan tahay? Hadda aan eegno qaabeynta dhismaha waxayna noqon doontaa wax yar oo cad.

Qaab-dhismeedkayagu waxa uu leeyahay laba habayn oo dhisme ah. Waa kan tii ugu horreysay, waana heer aad u qurux badan:

  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

Sida aad arki karto, xariiqda summada 1 ku qorani waxay sheegaysaa in natiijada dhismahan lagu meelayn doono isla sawirka fal-celinta-web-app-builder ee aan ku aragnay wax yar ka hor qaybta ImageStreams.

Sadarka ku calaamadsan 2 ayaa kuu sheegaya meesha aad ka heli karto koodka. Xaaladeena, tani waa kaydka git, iyo goobta, ref iyo galka macnaha guud waxaa lagu go'aamiyaa cabirrada aan horay u aragnay kor.

Xariiqda lagu calaamadiyay 3 waa waxa aan horay ugu aragnay qaybta cabbiraadda. Waxay ku darsataa doorsoomiyaha deegaanka OUTPUT_DIR, kaas oo tusaalaheena ku jira dhis.
Xariiqda lagu calaamadiyay 4 ayaa sheegaysa in la isticmaalo sawirka web-app-builder-runtime, kaas oo aan horay ugu aragnay qaybta ImageStream.

Sadarka lagu calaamadiyay 5 ayaa sheegaysa in aan rabno in aan isticmaalno dhismo kororsi ah haddii sawirka S2I uu taageero, iyo sawirka Web App Builder uu sameeyo. Daahfurka ugu horreeya, ka dib marka la dhammeeyo marxaladda kulanka, sawirku wuxuu kaydin doonaa galka node_modules galka kaydka. Kadib, socodka xiga, sawirku wuxuu si fudud u furi doonaa galkan si loo yareeyo wakhtiga dhismaha.

Ugu dambayntiina, xariiqda lagu calaamadiyay 6 waa dhawr kiciye oo ka dhigaya in dhismuhu si toos ah u shaqeeyo, iyada oo aan la faragelin gacanta, marka wax isbeddelaan.

Guud ahaan kani waa qaabayn dhisme caadi ah oo qurux badan.

Hadda aan eegno qaabeynta labaad ee dhismaha. Waxay aad ugu egtahay kii hore, laakiin waxaa jira hal farqi oo muhiim ah.

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

Markaa qaabeynta labaad ee dhismuhu waa react-web-app-runtime, waxayna ku bilaabataa heer aad u qurux badan.

Xariiqda lagu calaamadiyay 1 maahan wax cusub - waxay si fudud u sheegaysaa in natiijada dhismaha la geliyo sawirka react-web-app-runtime.

Xariiqda lagu calaamadiyay 2, sida qaabayntii hore, waxay tusinaysaa halka laga helayo koodka isha. Laakin u fiirso halkan waxaan ku leenahay waa laga soo qaatay sawirka. Waxaa intaa dheer, laga soo bilaabo sawirka aan hadda abuurnay - laga bilaabo react-web-app-builder (oo lagu tilmaamay xariiqda 3). Faylasha aan rabno inaan isticmaalno waxay ku yaalliin gudaha sawirka, halka ay ku yaalliinna waxay ku taal safka 4, xaaladdeenna waa /opt/app-root/output/. Haddii aad xasuusato, tani waa meesha faylasha la soo saaray ee ku saleysan natiijooyinka dhisitaanka codsigeena lagu keydiyo.

Galka meesha lagu cayimay ee ku qoran calaamadda 5 waa si fudud hagaha hadda (tani waa dhan, xusuusnow, oo ku dhex socda shay sixir ah oo loo yaqaan OpenShift, oo aan ku jirin kombayutarka deegaankaaga).

Qaybta istiraatijiyadda - xariiqda lagu calaamadiyay 6 - waxay sidoo kale la mid tahay qaabeynta ugu horreysa ee dhismaha. Kaliya markan waxaan isticmaaleynaa nginx-image-runtime, kaas oo aan horay ugu aragnay qaybta ImageStream.

Ugu dambeyntii, xariiqda lagu calaamadiyay 7 waa qayb ka mid ah kiciyeyaasha kuwaas oo kicin doona dhismahan mar kasta oo fal-celinta-web-app-builder image isbedelo.

Haddii kale, template kani waxa uu ka kooban yahay qaabaynta hawlgelinta caadiga ah ee quruxda badan, iyo sidoo kale waxyaabaha la xidhiidha adeegyada iyo waddooyinka, laakiin ma geli doono faahfaahin intaas ka badan. Fadlan ogow in sawirka la geyn doono uu yahay react-web-app-runtime sawirka.

Soo Dejinta Codsiga

Haddaba markaan eegnay templateka, aan aragno sida loo isticmaalo si loo geeyo codsi.

Waxaan isticmaali karnaa qalabka macmiilka OpenShift ee loo yaqaan oc si aan u geyno template:

$ 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

Amarka ugu horreeya ee shaashadda kore waa qaab injineernimo ula kac ah oo lagu helo template./openshiftio/application.yaml.

Amarka labaad wuxuu si fudud u abuuraa codsi cusub oo ku salaysan template.

Ka dib markii amarradan ay shaqeeyaan, waxaan arki doonaa inaan leenahay laba kulan:

Codsiyada casriga ah ee OpenShift, qaybta 2: dhismooyinka silsiladaysan

Oo ku soo noqoshada shaashadda Guud, waxaan arki doonaa boodhka la bilaabay:

Codsiyada casriga ah ee OpenShift, qaybta 2: dhismooyinka silsiladaysan

Guji xiriirka waxaana nala geyn doonaa abkayaga, kaas oo ah bogga React App-ka caadiga ah:

Codsiyada casriga ah ee OpenShift, qaybta 2: dhismooyinka silsiladaysan

Kaabista 1

Kuwa jecel Angular waxaan sidoo kale leenahay tusaale ahaan codsi.

Habka halkan waa isku mid, marka laga reebo doorsoomiyaha OUTPUT_DIR.

Kaabista 2

Maqaalkan waxaan u isticmaalnay NGINX sidii shabakad shabakad, laakiin way fududahay in lagu beddelo Apache, kaliya beddel templateka faylka Sawirka NGINX on Sawirka Apache.

gunaanad

Qaybtii hore ee taxanahan, waxaan ku tusnay sida degdega ah loogu geynayo codsiyada shabakadaha casriga ah ee madal OpenShift. Maanta waxaan eegnay waxa uu sameeyo sawirka App-ka Webka iyo sida loogu dari karo server-ka saafiga ah sida NGINX iyadoo la adeegsanayo dhismooyin silsilado ah si loo abuuro wax soo saar badan oo codsi dhismo ah. Maqaalka xiga iyo kan ugu dambeeya ee taxanahan, waxaan ku tusi doonaa sida loogu socodsiiyo server-ka horumarinta codsigaaga ee OpenShift oo aan hubinno isku-duubnida faylalka maxalliga ah iyo kuwa fog.

Nuxurka maqaalladan taxanaha ah

  • Qaybta 1: sida loo geeyo codsiyada webka casriga ah dhowr tillaabo;
  • Qaybta 2: Sida loo isticmaalo sawirka S2I cusub oo leh sawirka server HTTP jira, sida NGINX, iyadoo la adeegsanayo shirarka OpenShift ee la xidhiidha geynta wax soo saarka;
  • Qaybta 3: sida loo socodsiiyo server-ka horumarinta ee codsigaaga goobta OpenShift oo aad la jaanqaadi karto nidaamka faylalka maxalliga ah.

ΠžΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы

Source: www.habr.com

Add a comment