Sanibonani nonke! Lokhu okuthunyelwe kwesibili ochungechungeni lwethu lapho sibonisa khona ukuthi zifakwa kanjani izinhlelo zokusebenza zewebhu zesimanje ku-Red Hat OpenShift.
Kokuthunyelwe kwangaphambilini, sithinte kancane amandla esithombe somakhi esisha se-S2I (umthombo-kuya-isithombe), esidizayinelwe ukwakha nokuphakela izinhlelo zokusebenza zewebhu zesimanje endaweni yesikhulumi se-OpenShift. Khona-ke saba nesithakazelo esihlokweni sokuthumela ngokushesha isicelo, futhi namuhla sizobheka indlela yokusebenzisa isithombe se-S2I njengesithombe somakhi "esihlanzekile" futhi sihlanganise nemihlangano ye-OpenShift ehlobene.
Hlanza isithombe sikamakhi
Njengoba sishilo Engxenyeni XNUMX, iningi lezinhlelo zokusebenza zewebhu zesimanje zinalokho okubizwa ngesiteji sokwakha, ngokuvamile esenza imisebenzi efana nokuhumusha ikhodi, ukuhlanganisa amafayela amaningi, kanye nokuncishiswa. Amafayela atholwe ngenxa yale misebenzi - futhi lena i-HTML emile, i-JavaScript ne-CSS - agcinwa kufolda yokuphumayo. Indawo yale folda ngokuvamile incike ekutheni yimaphi amathuluzi okwakha asetshenziswayo, futhi ku-React lena kuzoba ifolda ethi ./build (sizobuyela kulokhu ngemininingwane eyengeziwe ngezansi).
Umthombo-kuya-Isithombe (S2I)
Kulokhu okuthunyelwe asithinti isihloko esithi "yini i-S2I nokuthi isetshenziswa kanjani" (ungafunda kabanzi ngalokhu
Isigaba somhlangano
Isigaba somhlangano sifana kakhulu ngokwemvelo nalokho okwenzekayo lapho usebenzisa i-docker build futhi ugcina ngesithombe esisha se-Docker. Ngakho-ke, lesi sigaba senzeka lapho uqala ukwakha endaweni yesikhulumi se-OpenShift.
Esimeni sesithombe se-Web App Builder, sinesibopho sokufaka okuncikile kohlelo lwakho lokusebenza nokusebenzisa isakhiwo.
Njengoba sishilo ekuqaleni, indawo yohlelo oluqediwe, oseluvele lwakhiwe incike ekutheni usebenzisa maphi amathuluzi. Isibonelo, esimweni se-React lena kuzoba ifolda ethi ./build, futhi ezinhlelweni zokusebenza ze-Angular kuzoba ifolda ye-project_name/dist. Futhi, njengoba sekuvele kubonisiwe kokuthunyelwe kwangaphambilini, indawo yohla lwemibhalo ephumayo, ehlelelwe ukuba yakheke ngokuzenzakalelayo, ingakhishwa ngokushintshashintsha kwemvelo kwe-OUTPUT_DIR. Hhayi-ke, njengoba indawo yefolda yokukhipha ihluka kusukela kuhlaka kuya kohlaka, umane ukopishe okukhiqizwayo kufolda evamile esesithombeni, okungukuthi /opt/apt-root/output. Lokhu kubalulekile ekuqondeni konke kwalesi sihloko, kodwa okwamanje ake sibheke ngokushesha isigaba esilandelayo - isigaba sokugijima.
isigaba sokugijima
Lesi sigaba senzeka lapho ucingo lokuya kudocker lwenziwa esithombeni esisha esidalwe ngesikhathi sesiteji somhlangano. Okufanayo kwenzeka uma usebenzisa ku-OpenShift yesikhulumi. Okuzenzakalelayo
Le ndlela ilungele ukuthunyelwa ngokushesha kwezinhlelo zokusebenza, kodwa ngokuvamile ayinconywa ukunikeza okuqukethwe okumile ngale ndlela. Nokho, njengoba empeleni sisebenzisa okuqukethwe okumile kuphela, asidingi i-Node.js efakwe ngaphakathi kwesithombe sethu - iseva yewebhu izokwanela.
Ngamanye amazwi, lapho sihlanganisa sidinga into eyodwa, lapho siqhuba sidinga enye. Kulesi simo, ukwakha ngamaketanga kuyasiza.
Izakhiwo eziboshwe ngamaketanga
Yilokhu ababhala ngakho
βImihlangano emibili ingahlanganiswa, enye ikhiqize inhlangano ehlanganisiwe bese enye isingathe lelo bhizinisi ngesithombe esihlukile esisetshenziselwa ukuqhuba lelo bhizinisi.β
Ngamanye amazwi, singasebenzisa isithombe se-Web App Builder ukuze siqalise isakhiwo sethu, bese sisebenzisa isithombe seseva yewebhu, i-NGINX efanayo, ukuze sinikeze okuqukethwe kwethu.
Ngakho-ke, singasebenzisa isithombe se-Web App Builder njengomakhi "ohlanzekile" futhi ngesikhathi esifanayo sibe nesithombe esincane sesikhathi sokusebenza.
Manje ake sibheke lokhu ngesibonelo esithile.
Ukuqeqeshwa sizokusebenzisa
Kuzosisiza ukuthi sihlanganise konke
Ake sibheke leli fayela ngemininingwane eyengeziwe, futhi siqale ngesigaba samapharamitha.
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
Konke lapha kucace kahle, kodwa kufanelekile ukunaka ipharamitha ye-OUTPUT_DIR. Kuhlelo lokusebenza lwe-React esibonelweni sethu, akukho okufanele sikhathazeke ngakho, njengoba i-React isebenzisa inani elizenzakalelayo njengefolda yokukhipha, kodwa esimweni se-Angular noma enye into, le parameter izodinga ukushintshwa njengoba kudingeka.
Manje ake sibheke isigaba se-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'
Bheka isithombe sesithathu nesesine. Zombili zichazwa njengezithombe ze-Docker, futhi ungabona kahle ukuthi zivelaphi.
Isithombe sesithathu esakhi sohlelo lokusebenza lwewebhu futhi sivela kuhlelo lokusebenza lwe-nodeshift/ubi8-s2i-web olumakwe 10.x ku-
Okwesine yisithombe se-NGINX (inguqulo 1.12) esinomaka wakamuva ovuliwe
Manje ake sibheke izithombe ezimbili zokuqala. Zombili azinalutho ekuqaleni futhi zidalwe kuphela phakathi nesigaba sokwakha. Isithombe sokuqala, i-react-web-app-builder, sizoba umphumela wesinyathelo sokuhlanganiswa esizohlanganisa isithombe se-web-app-builder-runtime kanye nekhodi yethu yomthombo. Yingakho sengeze u-β-builderβ egameni lalesi sithombe.
Isithombe sesibili - i-react-web-app-runtime - sizoba umphumela wokuhlanganisa i-nginx-image-runtime namanye amafayela asuka kusithombe se-react-web-app-builder. Lesi sithombe sizophinda sisetshenziswe ngesikhathi sokuthunyelwa futhi sizoqukatha kuphela iseva yewebhu kanye ne-HTML emile, i-JavaScript, i-CSS yohlelo lwethu lokusebenza.
Udidekile? Manje ake sibheke ukucushwa kokwakha futhi kuzocaca kancane.
Isifanekiso sethu sinokucushwa okubili kokwakha. Nansi eyokuqala, futhi isezingeni elihle:
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
Njengoba ubona, umugqa onelebula 1 uthi umphumela walesi sakhiwo uzobekwa esithombeni esifanayo se-react-web-app-builder esisibone ngaphambili kancane esigabeni se-ImageStreams.
Umugqa olebulwe ngokuthi 2 ukutshela ukuthi ikhodi ungayithola kuphi. Esimweni sethu, lena inqolobane ye-git, futhi indawo, ifolda ye-ref kanye nefolda yokuqukethwe kunqunywa imingcele esesivele siyibonile ngenhla.
Ulayini obhalwe 3 yilokho esesivele sikubonile esigabeni samapharamitha. Yengeza i-OUTPUT_DIR imvelo eguquguqukayo, okuyinto esibonelweni sethu yokwakha.
Ulayini obhalwe ukuthi 4 uthi sebenzisa isithombe se-web-app-builder-runtime, esesivele sisibonile esigabeni se-ImageStream.
Ulayini obhalwe ukuthi 5 uthi sifuna ukusebenzisa isakhiwo esikhuphukayo uma isithombe se-S2I sisisekela, kanye nesithombe se-Web App Builder. Ekuqalisweni kokuqala, ngemva kokuqedwa kwesiteji somhlangano, isithombe sizogcina ifolda ye-node_modules efayeleni lengobo yomlando. Bese, ekugijimeni okulandelayo, isithombe sizomane sivule le folda ukuze kuncishiswe isikhathi sokwakha.
Futhi ekugcineni, umugqa obhalwe ukuthi 6 uyizisusa ezimbalwa zokwenza ukwakhiwa kusebenze ngokuzenzakalela, ngaphandle kokungenelela okwenziwa ngesandla, uma okuthile kushintsha.
Sekukonke lokhu kuwukucushwa okuhle okujwayelekile kokwakha.
Manje ake sibheke ukucushwa kokwakha kwesibili. Ifana kakhulu neyokuqala, kodwa kunomehluko owodwa obalulekile.
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
Ngakho-ke ukucushwa kwesibili kokwakha yi-react-web-app-runtime, futhi kuqala ngendlela evamile.
Ulayini obhalwe 1 awuyona into entsha - uvele uthi umphumela wokwakha ufakwe esithombeni se-react-web-app-runtime.
Umugqa olebulwe ngokuthi 2, njengasekucushweni kwangaphambilini, ubonisa ukuthi ikhodi yomthombo ingayithola kuphi. Kodwa qaphela ukuthi lapha sithi ithathwe esithombeni. Ngaphezu kwalokho, kusukela esithombeni esisanda kusidala - kusuka ku-react-web-app-builder (ekhonjiswe emugqeni onelebula 3). Amafayela esifuna ukuwasebenzisa angaphakathi kwesithombe futhi indawo yawo lapho isethwe emgqeni obhalwe ukuthi 4, esimweni sethu ngu/opt/app-root/output/. Uma ukhumbula, kulapho amafayela akhiqizwe ngokusekelwe emiphumeleni yokwakha uhlelo lwethu lokusebenza agcinwa khona.
Ifolda okuyiwa kuyo eshiwo ethemini enelebula 5 imane nje iyinkomba yamanje (yilokhu kuphela, khumbula, isebenza ngaphakathi kwento ethile engumlingo ebizwa ngokuthi i-OpenShift, hhayi kukhompyutha yangakini).
Isigaba samasu - umugqa obhalwe ukuthi 6 - ubuye ufane nokucushwa kokwakha kokuqala. Kulokhu kuphela lapho sizosebenzisa i-nginx-image-runtime, esesivele siyibonile esigabeni se-ImageStream.
Okokugcina, umugqa olebulwe ngokuthi 7 uyisigaba sezibangeli ezizokwenza kusebenze lesi sakhiwo ngaso sonke isikhathi uma isithombe se-react-web-app-builder sishintsha.
Uma kungenjalo, lesi sifanekiso siqukethe ukucushwa okujwayelekile okujwayelekile okuhle, kanye nezinto ezihlobene namasevisi nemizila, kodwa ngeke singene kuleyo mininingwane eminingi kakhulu. Sicela wazi ukuthi isithombe esizosetshenziswa yisithombe se-react-web-app-runtime.
Ukuthunyelwa Kohlelo
Ngakho-ke njengoba sesibheke isifanekiso, ake sibone ukuthi singasisebenzisa kanjani ukuze sikhiphe uhlelo lokusebenza.
Singasebenzisa ithuluzi leklayenti le-OpenShift elibizwa ngokuthi oc ukuze sikhiphe isifanekiso sethu:
$ 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
Umyalo wokuqala kusithombe-skrini esingenhla uyindlela yobunjiniyela ngamabomu yokuthola isifanekiso./openshiftio/application.yaml.
Umyalo wesibili umane udale uhlelo olusha olusekelwe kulesi sifanekiso.
Ngemva kokusebenza kwale miyalo, sizobona ukuthi sinemihlangano emibili:
Futhi ukubuyela esikrinini sokubuka konke, sizobona i-pod yethuliwe:
Chofoza isixhumanisi futhi sizoyiswa kuhlelo lwethu lokusebenza, okuyikhasi elizenzakalelayo le-React App:
Isengezo sango-1
Kubathandi be-Angular nathi sinabo
Iphethini lapha iyafana, ngaphandle kokuhluka kwe-OUTPUT_DIR.
Isengezo sango-2
Kulesi sihloko sisebenzise i-NGINX njengeseva yewebhu, kodwa kulula kakhulu ukuyifaka esikhundleni se-Apache, vele ushintshe ithempulethi efayeleni.
isiphetho
Engxenyeni yokuqala yalolu chungechunge, sibonise ukuthi zifakwa kanjani ngokushesha izinhlelo zokusebenza zewebhu zesimanje endaweni yesikhulumi se-OpenShift. Namuhla sibheke ukuthi isithombe se-Web App senzani nokuthi singahlanganiswa kanjani nesiphakeli sewebhu esihlanzekile njenge-NGINX kusetshenziswa ukwakhiwa okuboshiwe ukuze kwakhiwe uhlelo lokusebenza olulungele ukukhiqiza. Esihlokweni esilandelayo nesokugcina kulolu chungechunge, sizobonisa indlela yokusebenzisa iseva yokuthuthukisa yohlelo lwakho lokusebenza ku-OpenShift futhi siqinisekise ukuvumelanisa kwamafayela endawo nakude.
Okuqukethwe kwalolu chungechunge lwezihloko
- Ingxenye 1:
uzisebenzisa kanjani izinhlelo zokusebenza zewebhu zesimanje ngezinyathelo ezimbalwa nje ; - Ingxenye 2: Indlela yokusebenzisa isithombe esisha se-S2I esinesithombe seseva ye-HTTP esikhona, njenge-NGINX, kusetshenziswa imihlangano ye-OpenShift ehlotshaniswayo yokuthunyelwa kokukhiqiza;
- Ingxenye 3: uyisebenzisa kanjani iseva yokuthuthukisa yohlelo lwakho lokusebenza endaweni ye-OpenShift futhi uyivumelanise nohlelo lwamafayela wendawo.
Izinsiza Ezengeziwe
- I-e-book yamahhala
Ithumela ku-OpenShift . - Ulwazi luvuliwe
I-OpenShift ne-Kubernetes .
Source: www.habr.com