Kia ora katoa! Koinei te pou tuarua i roto i ta maatau raupapa e whakaatu ana me pehea te tuku tono tukutuku hou i runga i te Red Hat OpenShift.

I roto i te pou o mua, i pa atu matou ki nga kaha o te ahua hou o te S2I (puna-ki-ahua) i hangaia mo te hanga me te whakamahi i nga tono tukutuku hou i runga i te papaaho OpenShift. Na ka aro atu matou ki te kaupapa o te tuku tere i tetahi tono, a i tenei ra ka tirohia me pehea te whakamahi i te ahua S2I hei ahua hanga "parakore" me te whakakotahi me nga huihuinga OpenShift e pa ana.
Atahanga hanga ma
I korerohia e matou i te Wāhanga XNUMX, ko te nuinga o nga tono tukutuku hou he waahi e kiia nei ko te hanga, e mahi ana i nga mahi penei i te whakawhiti waehere, te whakakotahi i nga konae maha, me te whakaiti. Ko nga konae i puta mai i enei mahi - he HTML pateko tenei, JavaScript me CSS - ka rongoa ki te kōpaki putanga. Ko te waahi o tenei kōpaki ka whakawhirinaki ki nga taputapu hanga e whakamahia ana, a, mo React ko te kōpaki ./build tenei (ka hoki mai ano ki tenei korero i raro nei).
Puna-ki-Whakaahua (S2I)
I tenei pou kaore matou e pa ki te kaupapa "he aha te S2I me pehea te whakamahi" (ka taea e koe te panui atu mo tenei ), engari he mea nui kia marama mo nga kaupae e rua i roto i tenei mahi kia mohio ai koe he aha te ahua o te Kaihanga Taupānga Tukutuku.
Wāhanga Huihuinga
He rite tonu te ahua o te wahanga huihuinga ki nga mea e pa ana ina whakahaere koe i te hanga docker ka mutu ki tetahi ahua Docker hou. No reira, ka puta tenei waahanga i te tiimata o te hanga i runga i te papaaho OpenShift.
Mo te ahua o te Kaihanga Taupānga Tukutuku, kei a ia te kawenga mo te whakauru i nga whakawhirinakitanga o to tono me te whakahaere i te hanga. . Ma te taunoa, ka whakamahi te ahua hangahanga i te hangahanga hanga npm run, engari ka taea te whakakore i tenei ma te taurangi taiao NPM_BUILD.
Ka rite ki ta matou korero i mua, ko te waahi o te tono kua oti, kua oti te hanga i runga i nga taputapu e whakamahia ana e koe. Hei tauira, mo te React ko te kōpaki ./build tenei, mo nga tono Angular ko te kaupapa_name/dist folder. Na, kua whakaatuhia i roto i te pou o mua, ko te waahi o te whaiaronga whakaputa, kua tautuhia ki te hanga ma te taunoa, ka taea te whakakore i roto i te taurangi taiao OUTPUT_DIR. Ana, i te mea he rereke te waahi o te kōpaki putanga mai i te anga ki tera anga, ka kape noa koe i te putanga i hangaia ki te kōpaki paerewa o te ahua, ara / opt/apt-root/output. He mea nui tenei mo te maarama ki te toenga o tenei tuhinga, engari mo tenei wa ka titiro wawe ki te waahanga e whai ake nei - te wahanga oma.
wahanga oma
Ka puta tenei wahanga ka puta he waea ki te oma docker ki runga i te ahua hou i hangaia i te wahanga huihuinga. Ka pera ano i te wa e tukuna ana i runga i te papaaho OpenShift. Taunoa whakamahinga ki te mahi i nga ihirangi pateko kei roto i te raarangi putanga paerewa o runga ake nei.
He pai tenei tikanga mo te tuku tere i nga tono, engari ko te tikanga karekau i te tūtohu kia tukuna nga ihirangi pateko penei. Ae, i te mea ka mahi noa matou i nga ihirangi pateko, kaore matou e hiahia kia whakauruhia a Node.js ki roto i to maatau ahua - ka rato te tūmau tukutuku.
I etahi atu kupu, i te wa e huihui ana ka hiahia tetahi mea, i te wa e mahia ana ka hiahia tetahi atu. I tenei ahuatanga, ka uru mai nga hanga mekameka.
Hanga mekameka
Koinei ta ratou e tuhi ana i roto i te tuhinga OpenShift:
"E rua nga huihuinga ka taea te hono tahi, me te whakaputa i tetahi hinonga whakahiato me tetahi atu e manaaki ana i taua hinonga ki tetahi ahua motuhake e whakamahia ana hei whakahaere i taua hinonga."
I etahi atu kupu, ka taea e tatou te whakamahi i te ahua o te Kaihanga Tukutuku Tukutuku hei whakahaere i ta tatou hanga, katahi ka whakamahi i te ahua o te tūmau tukutuku, te NGINX ano, ki te mahi i o tatou ihirangi.
Na, ka taea e tatou te whakamahi i te ahua o te Kaihanga Tukutuku Tukutuku hei kaihanga "parakore" me te wa ano he ahua iti o te waa whakahaere.
Inaianei kia tirohia tenei me tetahi tauira motuhake.
Mo te whakangungu ka whakamahia e matou , i hangaia ma te whakamahi i te hanga-react-app taputapu raina whakahau.
Ka awhina i a maatau ki te whakakotahi i nga mea katoa .
Kia ata tirohia tenei konae, ka tiimata me te waahanga tawhā.
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
Ko nga mea katoa kei konei he tino marama, engari he pai ki te aro ki te tawhā OUTPUT_DIR. Mo te tono React i roto i ta maatau tauira, kaore he mea hei awangawanga, na te mea ka whakamahia e React te uara taunoa hei kōpaki putanga, engari mo te Angular tetahi atu mea ranei, me whakarereke tenei tawhā i te mea e tika ana.
Inaianei me titiro ki te waahanga 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'
Tirohia nga whakaahua tuatoru me te tuawha. Ko enei e rua kua tautuhia hei whakaahua Docker, a ka tino kitea e koe no hea mai.
Ko te whakaahua tuatoru ko te kaihanga-tukutuku-taupānga-a ka puta mai i te nodeshift/ubi8-s2i-web-app kua tohua 10.x i runga .
Ko te tuawha he ahua NGINX (putanga 1.12) me te tohu hou kei runga .
Inaianei ka titiro tatou ki nga whakaahua tuatahi e rua. Kei te noho kau raua i te timatanga, ka hangaia i te wa o te hangahanga. Ko te ahua tuatahi, ko te react-web-app-builder, ko te hua o te huinga huihuinga ka whakakotahi i te ahua tukutuku-app-builder-runtime me to tatou waehere puna. Koia i taapirihia e matou te "-kaihanga" ki te ingoa o tenei ahua.
Ko te ahua tuarua - react-web-app-runtime - ko te hua o te whakakotahi i te nginx-image-runtime me etahi konae mai i te react-web-app-builder image. Ka whakamahia ano tenei ahua i te wa e horahia ana, ka mau anake te tūmau tukutuku me te HTML pateko, JavaScript, CSS o ta maatau tono.
Poauau? Inaianei me titiro ki nga whirihoranga hanga ka marama ake.
E rua nga whirihoranga hanga o ta maatau tauira. Anei te mea tuatahi, he tino paerewa:
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
Ka taea e koe te kite, ko te raina me te tapanga 1 e kii ana ko te hua o tenei hanga ka tuu ki roto i te ahua react-web-app-builder i kitehia e matou i mua i te waahanga ImageStreams.
Ko te rarangi tapanga 2 e whakaatu ana ki a koe te wahi hei tiki mai i te waehere. I roto i to maatau, he putunga git tenei, a ko te waahi, te ref me te kōpaki horopaki e whakatauhia ana e nga tawhā kua kitea e matou i runga ake nei.
Ko te raina e tapaina ana ko te 3 te mea i kitea e matou i nga waahanga tawhā. Ka taapirihia te taurangi taiao OUTPUT_DIR, kei roto i a maatau tauira te hanga.
Ko te rarangi tapanga 4 e kii ana ki te whakamahi i te ahua o te paetukutuku-app-builder-runtime, kua kitea e matou i te waahanga ImageStream.
Raina tapanga 5 e kii ana kei te pirangi matou ki te whakamahi i te hanga taapiri mena ka tautokohia e te ahua S2I, me te ahua o te Kaihanga Taupānga Tukutuku. I te whakarewatanga tuatahi, i muri i te otinga o te wahanga huihuinga, ka tiakina e te ahua te kōpaki node_modules ki roto i te konae purongo. Na, i nga oma ka whai ake, ka wetewete noa te ahua o tenei kōpaki hei whakaiti i te wa hanga.
Ka mutu, ko te raina e tapaina ana ko te 6 he iti noa nga kaikorero kia rere aunoa te hanga, kaore he wawaotanga a-ringa, ina huri tetahi mea.
I te katoa he whirihoranga hanga paerewa pai tenei.
Inaianei me titiro ki te whirihoranga hanga tuarua. He tino rite ki te tuatahi, engari kotahi ano te rereketanga nui.
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
Na ko te whirihoranga hanga tuarua ko te react-web-app-runtime, a ka tiimata te tino paerewa.
Ko te raina kua tapaina 1 ehara i te mea hou - e kii ana ka tukuna te hua hanga ki te ahua react-web-app-runtime.
Ko te raina kua tapaina ki te 2, penei i te whirihoranga o mua, e tohu ana i hea ka puta mai te waehere puna. Engari kia mahara kei konei e kii ana i tangohia mai i te ahua. I tua atu, mai i te ahua i hangaia e matou - mai i te react-web-app-builder (kua tohuhia ki te rarangi tapanga 3). Ko nga konae e hiahia ana matou ki te whakamahi kei roto i te ahua me to raatau waahi kei te rarangi tapanga 4, i roto i ta maatau ko /opt/app-root/output/. Mena ka maumahara koe, koinei te waahi ka penapena nga konae i hangaia i runga i nga hua o te hanga i a maatau tono.
Ko te kōpaki ūnga kua tohua i roto i te kupu me te tapanga 5 ko te whaiaronga o naianei (koinei, kia mahara, ka rere ki roto i etahi mea makutu e kiia nei ko OpenShift, kaua ki to rorohiko o to rohe).
Ko te waahanga rautaki - rarangi tapanga 6 - he rite ano ki te whirihoranga hanga tuatahi. Ko tenei wa anake ka whakamahia e matou te nginx-image-runtime, kua kitea e matou i te waahanga ImageStream.
Ka mutu, ko te raina e tapaina ana ko te 7 he wahanga o nga keu ka whakahohe i tenei hanga i nga wa katoa ka huri te ahua o te react-web-app-builder.
Ki te kore, kei roto i tenei tauira te whirihoranga whakatakotoranga paerewa tino pai, me nga mea e pa ana ki nga ratonga me nga huarahi, engari kare matou e uru ki nga korero nui rawa atu. Kia mahara ko te ahua ka tukuna ko te react-web-app-runtime image.
Taupānga Tukunga
Na inaianei kua titiro tatou ki te tauira, me pehea te whakamahi hei whakatakoto tono.
Ka taea e matou te whakamahi i te taputapu kiritaki OpenShift e kiia nei ko oc hei tuku i ta maatau tauira:
$ 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
Ko te whakahau tuatahi i roto i te Whakaahuamata i runga ake nei he huarahi hangai ki te kimi tauira./openshiftio/application.yaml.
Ko te whakahau tuarua he hanga tono hou i runga i tenei tauira.
Ka mutu enei whakahau, ka kite tatou e rua nga huihuinga:

Na ka hoki ki te mata Tirohanga, ka kite tatou i te putunga kua whakarewahia:

Patohia te hono ka kawea matou ki to maatau taupānga, ko te wharangi React App taunoa:

Tāpiritanga 1
Mo te hunga aroha Angular kei a matou ano .
He rite tonu te tauira i konei, haunga te taurangi OUTPUT_DIR.
Tāpiritanga 2
I roto i tenei tuhinga i whakamahia e matou te NGINX hei tūmau tukutuku, engari he mea ngawari ki te whakakapi ki a Apache, huri noa i te tauira i roto i te konae. i runga i .
mutunga
I te wahanga tuatahi o tenei raupapa, i whakaatu matou me pehea te tuku tere i nga tono tukutuku hou i runga i te papaaho OpenShift. I tenei ra i titiro matou he aha te ahua o te Tukutuku Tukutuku me te pehea e honoa ai ki te tūmau tukutuku parakore penei i te NGINX ma te whakamahi i nga hanga mekameka hei hanga i tetahi hanga tono kua rite. I roto i te tuhinga e whai ake nei me te whakamutunga o tenei raupapa, ka whakaatu matou me pehea te whakahaere i tetahi tūmau whanaketanga mo to tono i runga i OpenShift me te whakarite i te tukutahi o nga konae rohe me te mamao.
Nga korero o tenei raupapa tuhinga
- Wahanga 1: ;
- Wāhanga 2: Me pehea te whakamahi i te ahua S2I hou me te ahua o te tūmau HTTP, penei i te NGINX, ma te whakamahi i nga huihuinga OpenShift e hono ana mo te tuku whakangao;
- Wāhanga 3: me pehea te whakahaere i tetahi tūmau whanaketanga mo to tono i runga i te papaaho OpenShift me te tukutahi me te punaha konae a rohe.
Rauemi Tāpiri
- ī-pukapuka kore utu .
- Nga korero mo .
Source: will.com
