ProHoster > Блог > Whakahaerenga > Nga tono hou mo OpenShift, wahanga 3: OpenShift hei taiao whanaketanga me OpenShift Pipelines
Nga tono hou mo OpenShift, wahanga 3: OpenShift hei taiao whanaketanga me OpenShift Pipelines
Kia ora koutou katoa i runga i tenei blog! Koinei te tuatoru o nga pou i roto i te raupapa e whakaatu ana me pehea te tuku tono tukutuku hou i runga i te Red Hat OpenShift.
I nga pou e rua o mua, i whakaatu matou me pehea te tuku tono tukutuku hou i roto i nga waahanga iti noa me te whakamahi i tetahi ahua S2I hou me te ahua o te tūmau HTTP kei waho o te papa, penei i te NGINX, ma te whakamahi i nga hanga mekameka hei whakarite i nga mahi whakaputa. .
I tenei ra ka whakaatu matou 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 o te rohe, me te korero ano mo te aha OpenShift Pipelines me pehea e taea ai te whakamahi hei rereke ki nga huihuinga hono.
OpenShift hei taiao whanaketanga
Reremahi whanaketanga
Ka rite ki te korero i mua pou tuatahi, ko te tukanga whanaketanga angamaheni mo nga tono tukutuku hou he momo "tumau whanaketanga" e whai ana i nga huringa ki nga konae aa-rohe. Ka puta, ka puta te hanga tono katahi ka whakahoutia ki te tirotiro.
I roto i te nuinga o nga anga hou, ka hangaia he "tumau whanaketanga" ki roto i nga taputapu raina whakahau.
Tauira rohe
Tuatahi, kia kite tatou me pehea te mahi i te wa e whakahaere ana i nga tono a rohe. Me tango te tono hei tauira tauhohe mai i nga tuhinga o mua, ahakoa he rite tonu nga aria rerengamahi e pa ana ki era atu anga hou katoa.
Na, ki te tiimata i te "dev server" i roto i ta maatau tauira React, ka whakauruhia e matou te whakahau e whai ake nei:
$ npm run start
Na i roto i te matapihi kāpeka ka kite tatou i tetahi mea penei:
A ka whakatuwherahia ta maatau tono ki te tirotiro taunoa:
Inaianei, mena ka huri taatau ki te konae, me whakahou te tono ki te tirotiro.
OK, he maamaa nga mea katoa me te whanaketanga i roto i te aratau rohe, engari me pehea e tutuki ai i runga i OpenShift?
Tūmau whanaketanga i runga i OpenShift
Ki te mahara koe, in Tuhinga o mua, i titiro matou ki te waahanga oma o te ahua S2I ka kite na te taunoa, ko te waahanga mahi te kawenga mo te mahi i to maatau tono paetukutuku.
Heoi, ki te ata titiro koe rere hōtuhi mai i taua tauira, kei roto te $NPM_RUN taurangi taiao, e taea ai e koe te whakahaere i to whakahau.
Hei tauira, ka taea e tatou te whakamahi i te kōwae nodeshift ki te tuku i ta tatou tono:
Tuhipoka: Ko te tauira i runga ake nei ka whakapotohia hei whakaatu i te whakaaro whanui.
I konei kua taapirihia e matou te taurangi taiao NPM_RUN ki ta matou tukunga, e kii ana i te wa whakahaere ki te whakahaere i te whakahau tiimata miro, ka tiimata te tūmau whanaketanga React i roto i to maatau OpenShift pod.
Mena ka titiro koe ki te raarangi o te putea rere, ka penei te ahua:
Ko te tikanga, ka kore noa iho enei mea kia taea ra ano e tatou te tukutahi i te waehere rohe me te waehere, ka tirotirohia ano mo nga huringa, engari kei te noho i runga i te tūmau mamao.
Te tukutahi waehere mamao me te rohe
Waimarie, ka taea e te nodeshift te awhina ngawari ki te tukutahi, ka taea e koe te whakamahi i te whakahau mataara ki te whai i nga huringa.
Na i muri i to maatau whakahaere i te whakahau ki te tuku i te tūmau whanaketanga mo ta maatau tono, ka taea e taatau te whakamahi i te whakahau e whai ake nei:
$ npx nodeshift watch
Ko te hua o tenei, ka hono atu ki te putunga rere i hangaia e matou i mua tata ake nei, ka whakahohehia te tukutahitanga o nga konae aa-rohe me te kahui mamao, ka tiimata te tirotirohia nga konae kei runga i ta maatau punaha rohe mo nga huringa.
No reira, ki te whakahouhia e tatou te konae src/App.js, ka tauhohe te punaha ki enei huringa, ka kape ki te kahui mamao ka tiimata te tūmau whanaketanga, ka whakahou i ta maatau tono ki te tirotiro.
Hei whakaoti i te pikitia, me whakaatu te ahua o enei whakahau katoa:
Ko te whakahau mataara he tangohanga i runga ake o te whakahau oc rsync, ka taea e koe te ako ake mo te mahi konei.
He tauira tenei mo React, engari ka taea te whakamahi i te tikanga rite tonu me etahi atu angamahi, me whakarite noa te taurangi taiao NPM_RUN e tika ana.
Nga Pipeline Openhift
I muri mai ka korero tatou mo tetahi taputapu penei i te OpenShift Pipelines me pehea e taea ai te whakamahi hei whakakapi mo nga hanga mekameka.
He aha nga OpenShift Pipelines
Ko OpenShift Pipelines he CI/CD taketake-kapua te whakauru tonu me te punaha tuku i hangaia mo te whakarite paipa ma te whakamahi i a Tekton. Ko Tekton he anga-tuwhera-tuwhera-puna-tuwhera CI/CD e taea ai e koe te whakaaunoa i te tukunga ki runga i nga momo papaaho (Kubernetes, serverless, miihini mariko, me etahi atu) ma te tango mai i te paparanga o raro.
Kia mohio koe ki tenei tuhinga me mohio koe ki nga Pipelines, na reira ka tino taunaki matou kia panui tuatahi koe pukapuka whaimana.
Te whakarite i to taiao mahi
Hei takaro ki nga tauira o tenei tuhinga, me whakarite e koe to taiao mahi:
Tāutahia, whirihorahia he kāhui OpenShift 4. Ka whakamahia e a maatau tauira nga Waea CodeReady (CRD) mo tenei, ka kitea nga tohutohu whakaurunga. konei.
I muri i te reri o te tautau, me whakauru e koe te Pipeline Operator ki runga. Kaua e wehi, he ngawari, nga tohutohu whakauru konei.
Whakahaerehia te hanga-react-taupānga taputapu raina whakahau hei hanga tono ka tukuna e koe (he tono ngawari tenei tauhohe).
(Kōwhiringa) Korohia te putunga hei whakahaere i te tono tauira ki te rohe me te whakauru npm katahi ka timata te npm.
Ka whai kōpaki k8s te putunga tono, kei roto nga Kubernetes/OpenShift YAML i whakamahia hei tuku i te tono. Ka puta nga Mahi, Taumahi Huihuinga, Rauemi me nga Pipeline ka mahia e matou i roto i tenei whare putunga.
Kia timata tatou
Ko te mahi tuatahi mo ta maatau tauira ko te hanga kaupapa hou ki te roopu OpenShift. Karangahia tenei kaupapa webapp-pipeline ka waihangahia me te whakahau e whai ake nei:
$ oc new-project webapp-pipeline
Ka puta tenei ingoa kaupapa i roto i te waehere a muri ake nei, na ki te whakatau koe ki te whakaingoa i tetahi atu mea, kaua e wareware ki te whakatika i te tauira tauira. Ka timata mai i tenei waahi, kaore matou e haere ki runga-iho, engari ki raro-ki runga: ara, ka hangaia e matou nga waahanga katoa o te kaikawe, katahi ano ko te kaikawe.
Na, tuatahi ...
Nga Mahi
Me hanga etahi mahi e rua, ka awhina i te tuku i te tono ki roto i a maatau paipa. Ko te mahi tuatahi - apply_manifests_task - he kawenga mo te tono YAML o aua rauemi Kubernetes (ratonga, tuku me te huarahi) kei roto i te kōpaki k8s o ta maatau tono. Ko te mahi tuarua - update_deployment_task - he kawenga mo te whakahou i tetahi ahua kua tukuna ki te ahua i hangaia e to maatau paipa.
Kaua e awangawanga mena kaore ano kia tino marama. Ko te tikanga, he rite enei mahi ki nga taputapu, a ka ata tirohia e matou i muri tata nei. Inaianei, me hanga noa e tatou:
Na, ma te whakamahi i te whakahau tkn CLI, ka tirohia kua hangahia nga mahi:
$ tkn task ls
NAME AGE
apply-manifests 1 minute ago
update-deployment 1 minute ago
Tuhipoka: He mahi a rohe enei mo to kaupapa o naianei.
Nga mahi roopu
He rite tonu nga mahi roopu ki nga mahi ngawari. Arā, he kohinga hikoi ka taea te whakamahi ka whakakotahihia i tetahi huarahi, i tetahi atu ranei i te wa e whakahaere ana i tetahi mahi motuhake. Ko te rerekee ko te mahi kapoi kei nga waahi katoa i roto i te roopu. Hei kite i te rarangi o nga mahi tautau ka hanga aunoa ina taapirihia te Kaiwhakahaere Pipeline, ka whakamahi ano matou i te tono tkn CLI:
$ tkn clustertask ls
NAME AGE
buildah 1 day ago
buildah-v0-10-0 1 day ago
jib-maven 1 day ago
kn 1 day ago
maven 1 day ago
openshift-client 1 day ago
openshift-client-v0-10-0 1 day ago
s2i 1 day ago
s2i-go 1 day ago
s2i-go-v0-10-0 1 day ago
s2i-java-11 1 day ago
s2i-java-11-v0-10-0 1 day ago
s2i-java-8 1 day ago
s2i-java-8-v0-10-0 1 day ago
s2i-nodejs 1 day ago
s2i-nodejs-v0-10-0 1 day ago
s2i-perl 1 day ago
s2i-perl-v0-10-0 1 day ago
s2i-php 1 day ago
s2i-php-v0-10-0 1 day ago
s2i-python-3 1 day ago
s2i-python-3-v0-10-0 1 day ago
s2i-ruby 1 day ago
s2i-ruby-v0-10-0 1 day ago
s2i-v0-10-0 1 day ago
Inaianei me hanga e rua nga mahi tautau. Ko te tuatahi ka whakaputa i te ahua S2I ka tukuna ki te rehita OpenShift o roto; Ko te tuarua ko te hanga i to maatau ahua i runga i te NGINX, ma te whakamahi i te tono kua oti i a maatau te hanga hei ihirangi.
Waihanga me te tuku i te ahua
I te wa e hanga ana i te mahi tuatahi, ka whakahoki ano i ta maatau i mahi i te tuhinga o mua mo nga huihuinga hono. Kia maumahara i whakamahia e matou te ahua S2I (ubi8-s2i-web-app) ki te "hanga" i to maatau tono, ka mutu he whakaahua kua rongoa ki roto i te rehitatanga o roto o OpenShift. Inaianei ka whakamahia e matou tenei ahua taupānga paetukutuku S2I ki te hanga DockerFile mo ta maatau taupānga katahi ka whakamahi i te Buildah ki te mahi i te tino hanga me te pana i te ahua ka puta ki te rehitatanga o roto o OpenShift, na te mea koinei tonu te mahi a OpenShift ina tukuna ana e koe o tono ma te whakamahi i te NodeShift. .
Nahea matou i mohio ai ki enei mea katoa, ka patai koe? Mai putanga mana o Node.js mana, i kape noa matou ka whakarereketia ma matou ano.
E kore matou e tino tātari i tenei, engari ka aro noa ki te tawhā OUTPUT_DIR:
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
Ma te taunoa, he rite tenei tawhā ki te hanga, kei reira a React e whakatakoto ai nga ihirangi kua whakaemihia. Ko etahi atu anga e whakamahi ana i nga huarahi rereke, hei tauira, kei Ember he tawhiti. Ko te putanga o ta maatau mahi huinga tuatahi he ahua kei roto te HTML, JavaScript, me te CSS i kohia e matou.
Hangaia he whakaahua i runga i te NGINX
Mo ta maatau mahi roopu tuarua, me hanga he ahua-NGINX mo tatou, ma te whakamahi i nga ihirangi o te tono kua oti i a maatau te hanga. Ko te mea nui, koinei te waahanga o te waahanga o mua i tirohia e maatau nga hanga mekameka.
Ki te mahi i tenei, ko taatau - he rite tonu ki runga ake nei - ka hanga he mahi kahui webapp-build-runtime:
Mena ka titiro koe ki te waehere o enei mahi kapoi, ka kite koe kaore i te whakaatu i te putunga Git e mahi tahi ana matou me nga ingoa ranei o nga whakaahua ka hangaia e matou. Ka tohua noa e matou he aha ta matou e whakawhiti ana ki a Git, ki tetahi ahua ranei hei whakaputa i te ahua whakamutunga. Koia te take ka taea te whakamahi ano i enei mahi tautau ina mahi ana me etahi atu tono.
Na konei ka haere marie tatou ki te waahi e whai ake nei...
Rauemi
Na, i te mea i kii ake nei matou, me tino whanui nga mahi tautau, me hanga rauemi hei whakaurunga (te putunga Git) me te whakaputa (nga whakaahua whakamutunga). Ko te rauemi tuatahi e hiahiatia ana ko Git, kei reira to tatou tono, penei:
# This resource is the location of the git repo with the web application source
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: web-application-repo
spec:
type: git
params:
- name: url
value: https://github.com/nodeshift-starters/react-pipeline-example
- name: revision
value: master
Anei te PipelineResource he momo git. Ko te kī url i roto i te wahanga params e tohu ana ki tetahi putunga motuhake me te tohu i te peka matua (he mea whiriwhiri tenei, engari ka tuhia e matou kia oti).
Inaianei me hanga he rauemi mo te ahua ka tiakina nga hua o te mahi s2i-web-app, penei te mahi:
# This resource is the result of running "npm run build", the resulting built files will be located in /opt/app-root/output
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: built-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-application:latest
I konei ko te PipelineResource he ahua momo, a ko te uara o te tawhā url e tohu ana ki te Rehita Atahanga OpenShift o roto, otira ko te mea kei roto i te mokowā ingoa paipa-tukutuku. Kaua e wareware ki te huri i tenei tautuhinga mena kei te whakamahi koe i tetahi waahi ingoa rereke.
Ka mutu, ko te rauemi whakamutunga e hiahiatia ana he ahua ahua ano ko tenei ko te ahua NGINX whakamutunga ka whakamahia i te wa e tukuna ana:
# This resource is the image that will be just the static html, css, js files being run with nginx
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: runtime-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtime-web-application:latest
Ano, mahara kei te rongoa tenei rauemi i te ahua ki roto i te rehitatanga OpenShift o roto i te mokowāingoa webapp-pipeline.
Hei waihanga i enei rauemi katoa i te wa kotahi, ka whakamahia e matou te whakahau hanga:
Ko tenei mahi ka tango i nga tawhā whakauru (rauemi gir) me te putanga (hanga-tukutuku-tono-whakaahua). Ka tukuna ano e matou he tawhā motuhake kia kore ai e manatoko i te TLS i te mea kei te whakamahi matou i nga tiwhikete kua hainatia ake:
Pērā i te mahi o mua, ka tukuna he rauemi, engari inaianei ko te hanga-tukutuku-tono-ahua (te putanga o ta maatau mahi o mua). Na hei putanga ka whakaturia ano e matou te ahua. I te mea me mahi tenei mahi i muri i te mahi o mua, ka taapirihia te mara runAfter:
Ko nga mahi e rua e whai ake nei he kawenga mo te whakamahi i te ratonga, te huarahi me te tuku i nga konae YAML e noho ana i roto i te raarangi k8s o ta maatau tono paetukutuku, me te whakahou ano i tenei tukunga i te wa e hanga whakaahua hou. I tautuhia e matou enei mahi roopu e rua i te timatanga o te tuhinga.
Ka timata te kaikawe
Na, kua hangaia nga waahanga katoa o ta maatau pipeline, a ka whakahaerehia e matou me te whakahau e whai ake nei:
$ tkn pipeline start build-and-deploy-react
I tenei waahanga, ka whakamahia te raina whakahau me te whiriwhiri i nga rauemi e tika ana hei whakautu mo ia o ana tono: mo te rauemi git, tohua te paetukutuku-tono-repo, katahi mo te rauemi whakaahua tuatahi, hanga-tukutuku-tono. -whakaahua, ka mutu, mo te rauemi whakaahua tuarua –runtime-web-application-image:
? Choose the git resource to use for web-application-repo: web-application-repo (https://github.com/nodeshift-starters/react-pipeline-example)
? Choose the image resource to use for built-web-application-image: built-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-
application:latest)
? Choose the image resource to use for runtime-web-application-image: runtime-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtim
e-web-application:latest)
Pipelinerun started: build-and-deploy-react-run-4xwsr
Inaianei kia tirohia te mana o te paipa ma te whakamahi i te whakahau e whai ake nei:
$ tkn pipeline logs -f
I te wa i timata ai te paipa ka tukuna te tono, ka taea e matou te tono mo te huarahi whakaputa me te whakahau e whai ake nei:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
Mo te tirohanga nui ake, ka taea e koe te tiro i ta maatau paipa i roto i te aratau Kaiwhakawhanake o te papatohu paetukutuku i te waahanga Pipeline, e whakaatuhia ana i te Fig. 1.
Fig.1. Te arotake i nga paipa rere.
Ma te panui i te paipa rere ka whakaatu etahi atu korero, penei i te Whakaaturanga 2.
raihi. 2. Nga korero taapiri mo te paipa.
Whai muri i etahi atu korero, ka kite koe i nga tono e rere ana i te tirohanga Topology, e whakaatuhia ana i te Fig.3.
Fig 3. Kua whakarewahia te pod.
Ma te panui i te porowhita kei te kokonga matau o runga o te ata ka whakatuwhera i to maatau tono, penei i te Whakaahua 4.
raihi. 4. Whakahaere React tono.
mutunga
Na, i whakaatu matou me pehea te whakahaere i tetahi tūmau whanaketanga mo to tono ki OpenShift me te tukutahi me te punaha konae a rohe. I titiro ano matou me pehea te whakatauira i tetahi tauira hanga mekameka ma te whakamahi i nga Pipelines OpenShift. Ka kitea nga tauira tauira katoa mai i tenei tuhinga konei.
Nga panui mo nga paetukutuku ipurangi e haere ake nei
Kei te timata matou i te raupapa ipurangi ipurangi mo te Paraire mo te wheako taketake ma te whakamahi i te Red Hat OpenShift Container Platform me nga Kubernetes: