ProHoster > ΠΠ»ΠΎΠ³ > Pagdumala > Modernong mga aplikasyon sa OpenShift, bahin 3: OpenShift isip development environment ug OpenShift Pipelines
Modernong mga aplikasyon sa OpenShift, bahin 3: OpenShift isip development environment ug OpenShift Pipelines
Kumusta sa tanan niining blog! Kini ang ikatulo nga post sa usa ka serye diin gipakita namon kung giunsa ang pag-deploy sa mga modernong aplikasyon sa web sa Red Hat OpenShift.
Sa miaging duha ka mga post, among gipakita kung giunsa ang pag-deploy sa modernong mga aplikasyon sa web sa pipila lang ka mga lakang ug kung giunsa ang paggamit sa usa ka bag-ong imahe sa S2I kauban ang usa ka off-the-shelf nga imahe sa server sa HTTP, sama sa NGINX, gamit ang mga kadena nga pagtukod aron i-orkestrate ang mga pag-deploy sa produksiyon. .
Karon ipakita namon kung giunsa ang pagpadagan sa usa ka server sa pag-uswag alang sa imong aplikasyon sa platform sa OpenShift ug i-synchronize kini sa lokal nga sistema sa file, ug hisgutan usab kung unsa ang OpenShift Pipelines ug kung giunsa kini magamit ingon usa ka alternatibo sa nalambigit nga mga asembliya.
OpenShift isip usa ka palibot sa pag-uswag
Development workflow
Ingon sa gipahayag na sa unang post, ang kasagaran nga proseso sa pag-uswag alang sa modernong mga aplikasyon sa web usa lamang ka matang sa "development server" nga nagsubay sa mga kausaban sa lokal nga mga file. Kung mahitabo kini, ang pagtukod sa aplikasyon ma-trigger ug dayon kini gi-update sa browser.
Sa kadaghanan sa modernong mga gambalay, ang ingon nga "development server" gitukod sa katugbang nga mga himan sa command line.
Lokal nga pananglitan
Una, atong tan-awon kon sa unsang paagi kini molihok sa diha nga nagdagan sa mga aplikasyon sa lokal. Atong kuhaon ang aplikasyon isip usa ka pananglitan React gikan sa miaging mga artikulo, bisan kung hapit parehas nga mga konsepto sa daloy sa trabaho magamit sa tanan nga uban pang modernong mga balangkas.
Busa, aron masugdan ang "dev server" sa among React nga pananglitan, among isulod ang mosunod nga sugo:
$ npm run start
Unya sa terminal nga bintana atong makita ang usa ka butang nga sama niini:
Ug ang among aplikasyon magbukas sa default browser:
Karon, kung maghimo kami mga pagbag-o sa file, ang aplikasyon kinahanglan nga mag-update sa browser.
OK, ang tanan klaro sa pag-uswag sa lokal nga mode, apan unsaon pagkab-ot ang parehas sa OpenShift?
Development server sa OpenShift
Kung mahinumduman nimo, sa miaging post, among gitan-aw ang gitawag nga run phase sa S2I image ug nakita nga sa default, ang serve module maoy responsable sa pagserbisyo sa among web application.
Apan, kon imong tan-awon pag-ayo pagdagan script gikan niana nga pananglitan, kini naglangkob sa $NPM_RUN environment variable, nga nagtugot kanimo sa pagpatuman sa imong sugo.
Pananglitan, mahimo natong gamiton ang nodeshift module aron i-deploy ang atong aplikasyon:
Mubo nga sulat: Ang pananglitan sa ibabaw gipamubo aron ihulagway ang kinatibuk-ang ideya.
Dinhi among gidugang ang NPM_RUN environment variable sa among deployment, nga nagsulti sa runtime sa pagpadagan sa yarn start command, nga nagsugod sa React development server sulod sa among OpenShift pod.
Kung imong tan-awon ang log sa usa ka running pod, kini tan-awon sama niini:
Siyempre, kining tanan walay bisan unsa hangtud nga ma-synchronize nato ang lokal nga code sa code, nga gibantayan usab alang sa mga pagbag-o, apan nagpuyo sa usa ka hilit nga server.
Pag-synchronize sa hilit ug lokal nga code
Maayo na lang, ang nodeshift dali nga makatabang sa pag-synchronize, ug mahimo nimong gamiton ang mando sa pagbantay aron masubay ang mga pagbag-o.
Mao nga pagkahuman namong gipadagan ang mando sa pag-deploy sa development server para sa among aplikasyon, luwas namong magamit ang mosunod nga sugo:
$ npx nodeshift watch
Ingon usa ka sangputanan, usa ka koneksyon ang himuon sa nagdagan nga pod nga among gihimo sa sayo pa, ang pag-synchronize sa among lokal nga mga file sa hilit nga cluster ma-aktibo, ug ang mga file sa among lokal nga sistema magsugod sa pag-monitor alang sa mga pagbag-o.
Busa, kung atong i-update karon ang src/App.js file, ang sistema mo-reaksyon niini nga mga kausaban, kopyaha kini sa hilit nga cluster ug magsugod sa development server, nga mag-update sa atong aplikasyon sa browser.
Aron makompleto ang hulagway, ipakita nato kung unsa ang hitsura niining tibuok nga mga sugo:
Ang sugo sa pagbantay usa ka abstraction sa ibabaw sa oc rsync nga sugo, makakat-on ka og dugang kon sa unsang paagi kini molihok dinhi.
Kini usa ka pananglitan alang sa React, apan ang eksaktong parehas nga pamaagi mahimong magamit sa ubang mga balangkas, ibutang lang ang variable sa palibot sa NPM_RUN kung kinahanglan.
β
Mga Openhift nga Pipeline
Sunod maghisgot kami bahin sa usa ka himan sama sa OpenShift Pipelines ug kung giunsa kini magamit ingon usa ka alternatibo sa mga kadena nga pagtukod.
Unsa ang OpenShift Pipelines
Ang OpenShift Pipelines usa ka cloud-native nga CI/CD nga padayon nga integrasyon ug delivery system nga gidisenyo para sa pag-organisar sa mga pipeline gamit ang Tekton. Ang Tekton usa ka flexible nga open-source nga Kubernetes-native CI/CD framework nga nagtugot kanimo sa pag-automate sa deployment sa lain-laing mga platform (Kubernetes, serverless, virtual machines, ug uban pa) pinaagi sa pagkuha gikan sa underlying layer.
Ang pagsabut niini nga artikulo nanginahanglan pipila ka kahibalo sa Pipelines, busa girekomenda namon nga basahon nimo una opisyal nga libro.
Pag-set up sa imong palibot sa trabaho
Aron makigdula sa mga pananglitan niini nga artikulo, kinahanglan nimo una nga andamon ang imong palibot sa pagtrabaho:
Pag-instalar ug pag-configure sa usa ka cluster sa OpenShift 4. Ang among mga pananglitan naggamit sa CodeReady Containers (CRD) alang niini, mga panudlo sa pag-install nga makit-an dinhi.
Human maandam ang cluster, kinahanglan nimo nga i-install ang Pipeline Operator niini. Ayaw kahadlok, kini sayon, instalar instruksyon dinhi.
Pagdalagan ang create-react-app command line tool aron makahimo og aplikasyon nga imong i-deploy (kini usa ka yano nga aplikasyon React).
(Opsyonal) I-clone ang repository aron mapadagan ang pananglitan nga aplikasyon sa lokal nga pag-install sa npm ug dayon pagsugod sa npm.
Ang repositoryo sa aplikasyon aduna usab usa ka k8s folder, nga adunay sulod nga Kubernetes/OpenShift YAMLs nga gigamit sa pag-deploy sa aplikasyon. Adunay mga Buluhaton, ClusterTasks, Mga Kapanguhaan ug Pipelines nga atong mugnaon niini mga tipiganan.
Magsugod na ta
Ang unang lakang alang sa among panig-ingnan mao ang paghimo og bag-ong proyekto sa OpenShift cluster. Tawgon nato kini nga proyekto nga webapp-pipeline ug paghimo niini gamit ang mosunod nga sugo:
$ oc new-project webapp-pipeline
Kini nga ngalan sa proyekto makita sa code sa ulahi, mao nga kung magdesisyon ka nga hingalan kini og lain, ayaw kalimti ang pag-edit sa pananglitan nga code sumala niana. Sugod gikan niini nga punto, dili kita moadto sa ibabaw sa ubos, apan sa ubos: sa ato pa, una natong buhaton ang tanan nga mga sangkap sa conveyor, ug unya ang conveyor mismo.
Busa, una sa tanan...
Mga buluhaton
Maghimo kita og pipila ka mga buluhaton, nga makatabang sa pag-deploy sa aplikasyon sulod sa atong pipeline. Ang unang buluhaton - apply_manifests_task - mao ang responsable sa pag-aplay sa YAML sa mga Kubernetes resources (serbisyo, deployment ug ruta) nga nahimutang sa k8s folder sa among aplikasyon. Ang ikaduha nga buluhaton - update_deployment_task - mao ang responsable sa pag-update sa na-deploy na nga imahe sa usa nga gihimo sa among pipeline.
Ayaw kabalaka kung dili pa kaayo klaro. Sa tinuud, kini nga mga buluhaton sama sa mga utilities, ug tan-awon naton kini sa mas detalyado sa ulahi. Sa pagkakaron, buhata lang nato sila:
Dayon, gamit ang tkn CLI command, atong susihon nga ang mga buluhaton nahimo na:
$ tkn task ls
NAME AGE
apply-manifests 1 minute ago
update-deployment 1 minute ago
Pahinumdom: Kini ang mga lokal nga buluhaton para sa imong proyekto karon.
Mga buluhaton sa cluster
Ang mga buluhaton sa cluster parehas ra sa yano nga mga buluhaton. Kana mao, kini usa ka magamit pag-usab nga koleksyon sa mga lakang nga gihiusa sa usa ka paagi o lain kung nagdagan sa usa ka piho nga buluhaton. Ang kalainan mao nga ang usa ka cluster task anaa bisan asa sulod sa cluster. Aron makita ang lista sa mga buluhaton sa cluster nga awtomatik nga gihimo sa pagdugang sa Pipeline Operator, atong gamiton pag-usab ang tkn CLI command:
$ 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
Karon maghimo kita og duha ka mga buluhaton sa cluster. Ang una maghimo sa S2I nga imahe ug ipadala kini sa internal nga OpenShift registry; ang ikaduha mao ang paghimo sa among imahe base sa NGINX, gamit ang aplikasyon nga among gitukod ingon sulud.
Paghimo ug ipadala ang imahe
Sa paghimo sa unang buluhaton, atong sublion ang nabuhat na nato sa miaging artikulo bahin sa nalambigit nga mga asembliya. Hinumdomi nga gigamit namo ang S2I nga imahe (ubi8-s2i-web-app) sa "pagtukod" sa among aplikasyon, ug natapos sa usa ka imahe nga gitipigan sa OpenShift internal registry. Karon atong gamiton kini nga S2I web app nga imahe sa paghimo og DockerFile para sa atong app ug dayon gamiton ang Buildah aron mahimo ang aktuwal nga pagtukod ug iduso ang resulta nga imahe ngadto sa OpenShift internal registry, tungod kay mao kana ang gibuhat sa OpenShift kung imong i-deploy ang imong mga aplikasyon gamit ang NodeShift .
Dili namo kini tukion sa detalye, apan mag-focus lang sa OUTPUT_DIR parameter:
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
Sa kasagaran, kini nga parameter parehas sa pagtukod, diin ang React nagbutang sa gitigum nga sulud. Ang ubang mga gambalay naggamit ug lain-laing mga dalan, pananglitan, sa Ember kini dist. Ang output sa among unang cluster task usa ka hulagway nga adunay HTML, JavaScript, ug CSS nga among nakolekta.
Paghimo usa ka imahe base sa NGINX
Sama sa alang sa among ikaduha nga buluhaton sa cluster, kinahanglan nga magtukod kini usa ka imahe nga nakabase sa NGINX alang kanamo, gamit ang sulud sa aplikasyon nga nahimo na namon. Sa tinuud, kini ang bahin sa miaging seksyon diin among gitan-aw ang mga kadena nga pagtukod.
Aron mahimo kini, kami - parehas ra sa taas - maghimo usa ka cluster task webapp-build-runtime:
Kung imong tan-awon ang code sa kini nga mga buluhaton sa cluster, imong makita nga wala kini nagtino sa Git repository nga among gitrabahoan o ang mga ngalan sa mga imahe nga among gimugna. Gitakda ra namo kung unsa gyud ang among gibalhin sa Git, o usa ka piho nga imahe kung diin ang katapusan nga imahe kinahanglan nga ma-output. Mao nga kini nga mga buluhaton sa cluster mahimong magamit pag-usab kung nagtrabaho kauban ang ubang mga aplikasyon.
Ug dinhi kita malipayon nga nagpadayon sa sunod nga punto...
Mga Kapanguhaan
Mao nga, tungod kay, sama sa giingon na namon, ang mga buluhaton sa cluster kinahanglan nga kinatibuk-an kutob sa mahimo, kinahanglan namon nga maghimo mga kapanguhaan nga magamit ingon input (ang Git repository) ug ingon output (ang katapusan nga mga imahe). Ang una nga kapanguhaan nga kinahanglan namon mao ang Git, diin nagpuyo ang among aplikasyon, sama niini:
# 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
Dinhi ang PipelineResource kay type git. Ang yawe sa url sa seksyon sa params nagpunting sa usa ka piho nga repositoryo ug gipiho ang master branch (kini opsyonal, apan gisulat namon kini alang sa pagkakompleto).
Karon kinahanglan namong maghimo usa ka kapanguhaan alang sa imahe diin ang mga sangputanan sa buluhaton sa s2i-web-app maluwas, kini gibuhat sama niini:
# 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
Dinhi ang PipelineResource kay type image, ug ang value sa url parameter nagpunting sa internal OpenShift Image Registry, ilabi na ang nahimutang sa webapp-pipeline namespace. Ayaw kalimti nga usbon kini nga setting kung naggamit ka ug lain nga namespace.
Ug sa katapusan, ang katapusan nga kapanguhaan nga kinahanglan namon mahimo usab nga tipo nga imahe ug kini ang katapusan nga imahe sa NGINX nga magamit sa panahon sa pag-deploy:
# 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
Pag-usab, timan-i nga kini nga kapanguhaan nagtipig sa imahe sa internal nga OpenShift registry sa webapp-pipeline namespace.
Aron mahimo kining tanan nga mga kapanguhaan sa usa ka higayon, gigamit namon ang paghimo nga mando:
Mahimo nimong masiguro nga ang mga kahinguhaan nahimo sama niini:
$ tkn resource ls
Conveyor pipeline
Karon nga naa na namo ang tanan nga gikinahanglan nga mga sangkap, mag-assemble kita og pipeline gikan kanila pinaagi sa paghimo niini gamit ang mosunod nga sugo:
Gibuhat dayon namo ang mga buluhaton nga kinahanglan makompleto sa among pipeline. Una sa tanan, kinahanglan nga ipatuman ang s2i-web-app nga buluhaton nga nahimo na namon:
Kini nga buluhaton nagkinahanglan sa input (gir resource) ug output (built-web-application-image resource) nga mga parameter. Gipasa usab namo kini nga usa ka espesyal nga parameter aron dili kini ma-verify ang TLS tungod kay naggamit kami og mga sertipiko nga gipirmahan sa kaugalingon:
Sama sa miaging buluhaton, nagpasa kami sa usa ka kapanguhaan, apan karon kini gitukod-web-application-image (ang output sa among miaging buluhaton). Ug isip usa ka output atong gibutang pag-usab ang imahe. Tungod kay kini nga buluhaton kinahanglan nga ipatuman pagkahuman sa nauna, among idugang ang runAfter field:
Ang sunod nga duha ka mga buluhaton ang responsable sa paggamit sa serbisyo, ruta ug pag-deploy sa mga file sa YAML nga nagpuyo sa direktoryo sa k8s sa among aplikasyon sa web, ug alang usab sa pag-update niini nga pag-deploy kung maghimo mga bag-ong imahe. Among gihubit kining duha ka cluster nga buluhaton sa sinugdanan sa artikulo.
Pagsugod sa conveyor
Busa, ang tanan nga mga bahin sa among pipeline gihimo, ug among ipadagan kini sa mosunod nga sugo:
$ tkn pipeline start build-and-deploy-react
Niini nga yugto, ang command line gigamit nga interactive ug kinahanglan nimo nga pilion ang angay nga mga kapanguhaan agig tubag sa matag usa sa mga hangyo niini: alang sa git nga kapanguhaan, pilia ang web-application-repo, unya alang sa una nga kapanguhaan sa imahe, built-web-application -imahe, ug sa katapusan, alang sa ikaduha nga kapanguhaan sa imahe -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
Karon atong susihon ang kahimtang sa pipeline gamit ang mosunod nga sugo:
$ tkn pipeline logs -f
Kung nagsugod na ang pipeline ug na-deploy na ang aplikasyon, mahimo namong hangyoon ang gipatik nga ruta gamit ang mosunod nga sugo:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
Para sa mas dako nga visualization, mahimo nimong tan-awon ang among pipeline sa Developer mode sa web console sa seksyon Pipelines, ingon sa gipakita sa Fig. 1.
Fig.1. Pagrepaso sa nagdagan nga mga linya sa tubo.
Ang pag-klik sa nagdagan nga pipeline nagpakita sa dugang nga mga detalye, sama sa gipakita sa Figure 2.
bugas. 2. Dugang nga impormasyon mahitungod sa pipeline.
Pagkahuman sa dugang nga kasayuran, mahimo nimong makita ang nagdagan nga mga aplikasyon sa pagtan-aw topolohiya, ingon sa gipakita sa Fig.3.
Fig 3. Gilusad pod.
Ang pag-klik sa lingin sa taas nga tuo nga suok sa icon magbukas sa among aplikasyon, ingon sa gipakita sa Fig. 4.
bugas. 4. Running React nga aplikasyon.
konklusyon
Mao nga, gipakita namon kung giunsa ang pagpadagan sa usa ka server sa pag-uswag alang sa imong aplikasyon sa OpenShift ug i-synchronize kini sa lokal nga sistema sa file. Gitan-aw usab namo kung unsaon pag-simulate ang usa ka chained-build template gamit ang OpenShift Pipelines. Ang tanan nga mga pananglitan nga mga code gikan sa kini nga artikulo makit-an dinhi.