ProHoster > Blog > fitantanan-draharaha > Fampiharana maoderina amin'ny OpenShift, fizarana 3: OpenShift ho tontolo fampandrosoana sy OpenShift Pipelines
Fampiharana maoderina amin'ny OpenShift, fizarana 3: OpenShift ho tontolo fampandrosoana sy OpenShift Pipelines
Salama daholo ato amin'ity bilaogy ity! Ity no lahatsoratra fahatelo amin'ny andiany iray izay anehoanay ny fomba fametrahana rindranasan-tranonkala maoderina amin'ny Red Hat OpenShift.
Tamin'ny lahatsoratra roa teo aloha, nasehonay ny fomba fametrahana rindranasa an-tranonkala maoderina amin'ny dingana vitsivitsy sy ny fomba fampiasana sary S2I vaovao miaraka amin'ny sarin'ny mpizara HTTP tsy misy talantalana, toy ny NGINX, amin'ny fampiasana rojo vy mba handrindrana ny famokarana famokarana. .
Androany dia hasehontsika ny fomba fampandehanana lohamilina fampandrosoana ho an'ny rindranasao amin'ny sehatra OpenShift ary ampifanaraho amin'ny rafi-drakitra eo an-toerana, ary hiresaka momba ny atao hoe OpenShift Pipelines sy ny fomba azo ampiasaina ho solon'ny fivoriambe mifandray.
OpenShift ho toy ny tontolo fampandrosoana
Workflow amin'ny fampandrosoana
Araka ny efa voalaza ao amin'ny lahatsoratra voalohany, ny fizotry ny fampivoarana mahazatra ho an'ny rindranasa an-tranonkala maoderina dia karazana “server de développement” fotsiny izay manara-maso ny fiovana amin'ny rakitra eo an-toerana. Rehefa mitranga izany, dia atomboka ny fananganana fampiharana ary havaozina amin'ny navigateur izany.
Amin'ny ankamaroan'ny rafitra maoderina, ny "server fampandrosoana" toy izany dia natsangana ao amin'ny fitaovana andalana mifanaraka amin'izany.
Ohatra eo an-toerana
Voalohany, andeha hojerentsika ny fomba fiasan'izany rehefa mampandeha fampiharana eo an-toerana. Andeha horaisintsika ho ohatra ny fampiharana Maneho Hevitra Momba avy amin'ny lahatsoratra teo aloha, na dia mitovy aza ny hevitra momba ny workflow mihatra amin'ny rafitra maoderina hafa rehetra.
Noho izany, hanombohana ny "server dev" ao amin'ny ohatra Reacty, dia hampiditra ity baiko manaraka ity izahay:
$ npm run start
Avy eo amin'ny varavarankely terminal dia hahita zavatra toy izao isika:
Ary hisokatra amin'ny navigateur default ny fampiharana anay:
Ankehitriny, raha manao fanovana amin'ny rakitra isika dia tokony havaozina ao amin'ny navigateur ny fampiharana.
OK, mazava tsara ny zava-drehetra miaraka amin'ny fampandrosoana amin'ny fomba eo an-toerana, fa ahoana no hanatratrarana izany amin'ny OpenShift?
Mpizara fampandrosoana amin'ny OpenShift
Raha tadidinao, in lahatsoratra teo aloha, nijery ilay antsoina hoe dingana mihazakazaka amin'ny sary S2I izahay ary hitanay fa amin'ny alàlan'ny default, ny maody serivisy dia tompon'andraikitra amin'ny serivisy amin'ny fampiharana tranonkala.
Na izany aza, raha mijery akaiky run script avy amin'io ohatra io dia misy ny fari-piainan'ny $NPM_RUN, izay ahafahanao manatanteraka ny baiko.
Ohatra, afaka mampiasa ny maodely nodeshift isika mba hametrahana ny fampiharana:
Fanamarihana: Ny ohatra etsy ambony dia nohafohezina mba hanehoana ny hevitra ankapobeny.
Eto izahay dia nampiana ny fari-piainan'ny tontolo iainana NPM_RUN amin'ny fametrahanay, izay milaza ny fotoana fampandehanana ny baiko fanombohana yarn, izay manomboka ny mpizara fampandrosoana React ao anatin'ny OpenShift pod.
Raha mijery ny diarin'ny pod mihazakazaka ianao dia ho toy izao:
Mazava ho azy fa tsy hisy na inona na inona izany rehetra izany raha tsy afaka mampifanaraka ny kaody eo an-toerana miaraka amin'ny code, izay manara-maso ihany koa ny fanovana, fa miaina amin'ny mpizara lavitra.
Fandrindrana ny kaody lavitra sy eo an-toerana
Soa ihany fa ny nodeshift dia afaka manampy mora foana amin'ny fampifanarahana, ary azonao ampiasaina ny baiko fiambenana hanaraha-maso ny fiovana.
Noho izany rehefa avy nanatanteraka ny baiko izahay hametraka ny lohamilina fampandrosoana ho an'ny fampiharana ataontsika dia afaka mampiasa ity baiko manaraka ity izahay:
$ npx nodeshift watch
Vokatr'izany dia hisy fifandraisana amin'ny pod mihazakazaka izay noforoninay teo aloha kokoa, ny fampifanarahana ny rakitra eo an-toerana miaraka amin'ny cluster lavitra dia hoheverina, ary ny rakitra ao amin'ny rafitra eo an-toerana dia hanomboka hanara-maso ny fanovana.
Noho izany, raha manavao ny fisie src/App.js isika, dia hihetsika amin'ireo fiovana ireo ny rafitra, kopia any amin'ny cluster lavitra ary manomboka ny server development, izay hanavao ny fampiharana antsika amin'ny navigateur.
Mba hamenoana ny sary dia andao asehoy ny endrik'ireto baiko manontolo ireto:
Alefaso ny fitaovana andalana mamorona-react-app mba hamoronana rindranasa izay hapetrakao avy eo (fampiharana tsotra ity Maneho Hevitra Momba).
(Azo atao) Clone ny tahiry mba hampandehanana ny santionany fampiharana eo an-toerana miaraka amin'ny npm install ary avy eo ny npm manomboka.
Ny fitahirizana fampiharana dia hanana lahatahiry k8s ihany koa, izay ahitana ny Kubernetes/OpenShift YAMLs ampiasaina amin'ny fametrahana ny fampiharana. Hisy ny Tasks, ClusterTasks, Resources ary Pipelines izay hoforoninay amin'izany repository.
Andeha isika hanomboka
Ny dingana voalohany amin'ny ohatra ataontsika dia ny famoronana tetikasa vaovao ao amin'ny cluster OpenShift. Andao hiantso ity tetikasa webapp-pipeline ity ary mamorona azy miaraka amin'ity baiko manaraka ity:
$ oc new-project webapp-pipeline
Ity anaran'ny tetikasa ity dia hiseho ao amin'ny kaody any aoriana any, ka raha manapa-kevitra ny hanome azy anarana hafa ianao, dia aza adino ny manova ny code ohatra mifanaraka amin'izany. Manomboka amin'io fotoana io dia tsy hiakatra ambony isika, fa ambany ambany: izany hoe hamorona ny singa rehetra amin'ny conveyor aloha isika, ary avy eo ny conveyor ihany.
Noho izany, voalohany indrindra...
asa
Andao hamorona asa roa, izay hanampy amin'ny fametrahana ny fampiharana ao anatin'ny fantsonay. Ny asa voalohany - apply_manifests_task - dia tompon'andraikitra amin'ny fampiharana ny YAML an'ireo loharanon-karena Kubernetes (serivisy, fametrahana ary lalana) izay hita ao amin'ny lahatahiry k8s amin'ny fampiharana anay. Ny asa faharoa - update_deployment_task - dia tompon'andraikitra amin'ny fanavaozana sary efa napetraka amin'ny sary noforonin'ny fantsonay.
Aza manahy raha mbola tsy mazava tsara ilay izy. Raha ny marina, ireo asa ireo dia toy ny fitaovana ampiasaina, ary hojerentsika amin'ny antsipiriany bebe kokoa aoriana kely. Amin'izao fotoana izao, andao hamorona azy ireo fotsiny:
Avy eo, amin'ny fampiasana ny baiko tkn CLI, dia hojerentsika fa noforonina ny asa:
$ tkn task ls
NAME AGE
apply-manifests 1 minute ago
update-deployment 1 minute ago
Fanamarihana: Ireo dia asa eo an-toerana ho an'ny tetikasanao amin'izao fotoana izao.
Asa vondrona
Ny asan'ny kluster dia mitovy amin'ny asa tsotra. Izany hoe, dia fitambarana dingana azo ampiasaina indray izay atambatra amin'ny fomba iray na hafa rehefa manao asa manokana. Ny mahasamihafa azy dia ny asa cluster dia misy na aiza na aiza ao anatin'ny cluster. Raha hijery ny lisitry ny asa cluster izay noforonina ho azy rehefa manampy Pipeline Operator, dia hampiasa ny baiko tkn CLI indray izahay:
$ 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
Andeha isika hamorona asa cluster roa. Ny voalohany dia hamokatra ny sary S2I ary handefa izany any amin'ny rejisitra OpenShift anatiny; Ny faharoa dia ny fananganana ny sarinay mifototra amin'ny NGINX, amin'ny fampiasana ny fampiharana efa natsanganay ho votoaty.
Mamorona ary alefaso ny sary
Rehefa mamorona ny asa voalohany isika, dia hamerina izay efa nataontsika tao amin'ny lahatsoratra teo aloha momba ny fivoriambe mifandray. Tsarovy fa nampiasa ny sary S2I (ubi8-s2i-web-app) izahay mba "hanorina" ny fampiharana anay, ary niafara tamin'ny sary voatahiry ao amin'ny rejisitra anatiny OpenShift. Amin'izao fotoana izao dia hampiasa ity sary S2I web app ity izahay mba hamoronana DockerFile ho an'ny fampiharana anay ary avy eo dia ampiasao ny Buildah hanaovana ny tena fananganana ary hanosika ny sary vokarina amin'ny rejisitra anatiny OpenShift, satria izany indrindra no ataon'ny OpenShift rehefa mametraka ny rindranasao amin'ny NodeShift ianao. .
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
Amin'ny alàlan'ny default, mitovy amin'ny fananganana io paramètre io, izay toerana ametrahan'ny React ny atiny tafavory. Ny rafitra hafa dia mampiasa lalana samihafa, ohatra, ao amin'ny Ember dia dist. Ny vokatry ny asa cluster voalohany dia sary misy ny HTML, JavaScript ary CSS nangoninay.
Manangana sary mifototra amin'ny NGINX
Raha ny asa cluster faharoa, dia tokony hanangana sary miorina amin'ny NGINX ho antsika, amin'ny fampiasana ny votoatin'ny fampiharana efa natsanganay. Amin'ny ankapobeny, ity no ampahany amin'ny fizarana teo aloha izay nijerena ny fananganana rojo vy.
Mba hanaovana izany, isika - mitovy amin'ny etsy ambony - dia hamorona asa cluster webapp-build-runtime:
Raha mijery ny kaody amin'ireo asa cluster ireo ianao dia hitanao fa tsy mamaritra ny tahiry Git izay iasanay na ny anaran'ny sary noforoninay. Izahay ihany no mamaritra hoe inona marina no afindranay any Git, na sary iray izay tokony hivoahan'ny sary farany. Izany no mahatonga ireo asa cluster ireo azo ampiasaina indray rehefa miasa amin'ny fampiharana hafa.
Ary eto isika dia mandroso amim-pahamendrehana amin'ny teboka manaraka ...
loharanon-karena
Noho izany, satria, araka ny voalazanay fotsiny, dia tokony ho amin'ny ankapobeny araka izay tratra ny asan'ny cluster, mila mamorona loharano azo ampiasaina ho fampidirana (ny tahiry Git) ary ho vokatra (sary farany). Ny loharano voalohany ilaintsika dia Git, izay misy ny fampiharana antsika, toy izao:
# 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
Eto ny PipelineResource dia karazana git. Ny fanalahidin'ny url ao amin'ny fizarana params dia manondro tahiry manokana ary mamaritra ny sampana master (tsy voatery izany, fa soratanay ho feno).
Ankehitriny dia mila mamorona loharano ho an'ny sary izay hotehirizina ny valin'ny asa s2i-web-app, atao toy izao:
# 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
Eto ny PipelineResource dia karazana sary, ary ny sandan'ny parameter url dia manondro ny anatiny OpenShift Image Registry, indrindra ilay hita ao amin'ny webapp-pipeline namespace. Aza adino ny manova ity toe-javatra ity raha mampiasa sehatra anarana hafa ianao.
Ary farany, ny loharano farany ilaintsika dia ho karazana sary ary ity no sary NGINX farany izay hampiasaina mandritra ny fametrahana:
# 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
Mariho indray fa ity loharano ity dia mitahiry ny sary ao amin'ny rejisitra OpenShift anatiny ao amin'ny namespace webapp-pipeline.
Mba hamoronana ireo loharano rehetra ireo indray mandeha dia mampiasa ny baiko famoronana izahay:
Avy eo isika dia mamorona ny asa izay tokony ho vita ny fantsona. Voalohany indrindra, tsy maintsy manatanteraka ny asa s2i-web-app izay efa noforoninay:
Ity asa ity dia mila masontsivana fampidirana (resource gir) sy output (built-web-application-image resource). Izahay koa dia manome paramètre manokana mba tsy hanamarina ny TLS satria mampiasa taratasy fanamarinana nosoniavin'ny tena izahay:
Toy ny tamin'ny asa teo aloha, mandalo loharano iray isika, fa ankehitriny izy io dia naorina-web-application-image (ny vokatry ny asantsika teo aloha). Ary ho toy ny output dia nametraka indray ny sary. Koa satria ity asa ity dia tsy maintsy tanterahina aorian'ny teo aloha, dia ampianay ny saha runAfter:
Ny asa roa manaraka dia tompon'andraikitra amin'ny fampiasana ny serivisy, ny lalana ary ny fametrahana ny rakitra YAML izay mipetraka ao amin'ny lahatahiry k8s amin'ny fampiharana tranonkalantsika, ary koa ny fanavaozana ity fametrahana ity rehefa mamorona sary vaovao. Nofaritanay ireo asa cluster roa ireo tany am-piandohan'ny lahatsoratra.
Manomboka ny conveyor
Noho izany, ny ampahany rehetra amin'ny pipeline dia noforonina, ary hanatanteraka izany amin'ny baiko manaraka:
$ tkn pipeline start build-and-deploy-react
Amin'ity dingana ity, ny tsipika baiko dia ampiasaina amin'ny interactive ary mila misafidy ireo loharano mety ianao ho valin'ny fangatahana tsirairay: ho an'ny loharano git, mifidiana web-application-repo, avy eo ho an'ny loharanon-tsary voalohany, naorina-web-application. -image, ary farany, ho an'ny loharanon-tsary faharoa –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
Rehefa nanomboka ny fantsona ary napetraka ny fampiharana dia afaka mangataka ny lalana navoaka miaraka amin'ity baiko manaraka ity izahay:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
Mba hahitana sary bebe kokoa, azonao atao ny mijery ny fantsonay amin'ny fomba Developer amin'ny console web ao amin'ny fizarana fantsona, araka ny asehon’ny sary. 1.
Fig.1. Famerenana ny fantsona mandeha.
Ny fanindriana ny fantsona mihazakazaka dia mampiseho antsipiriany fanampiny, araka ny aseho amin'ny sary 2.
vary. 2. Fanazavana fanampiny momba ny fantsona.
Aorian'ny fanampim-panazavana bebe kokoa dia afaka mahita fampiharana mandeha amin'ny fijery ianao Topology, araka ny asehon'ny sary.3.
Fig 3. Natomboka pod.
Ny fanindriana ny faribolana eo amin'ny zoro ambony havanana amin'ny kisary dia manokatra ny fampiharana antsika, araka ny aseho amin'ny sary 4.
vary. 4. Running React fampiharana.
famaranana
Noho izany, nasehonay ny fomba fampandehanana mpizara fampandrosoana ho an'ny fampiharanao amin'ny OpenShift ary ampifanaraho amin'ny rafi-drakitra eo an-toerana. Nijery ihany koa ny fomba fanaovana simulate ny maodely fananganana rojo amin'ny alàlan'ny OpenShift Pipelines. Ny kaody ohatra rehetra avy amin'ity lahatsoratra ity dia azo jerena eto.