Sanibonani nonke kule bhulogi! Lokhu okuthunyelwe kwesithathu ochungechungeni lapho sibonisa khona ukuthi zifakwa kanjani izinhlelo zokusebenza zewebhu zesimanje ku-Red Hat OpenShift.
Kokuthunyelwe okubili kwangaphambilini, sibonise ukuthi zifakwa kanjani izinhlelo zokusebenza zewebhu zesimanje ngezinyathelo ezimbalwa nje nokuthi ungasebenzisa kanjani isithombe esisha se-S2I kanye nesithombe seseva ye-HTTP engaphandle kweshalofu, njenge-NGINX, kusetshenziswa ukwakhiwa okuboshwe ngamaketanga ukuhlela ukuthunyelwa kokukhiqiza. .
Namuhla sizobonisa ukuthi singayiqhuba kanjani iseva yokuthuthukisa uhlelo lwakho lokusebenza ku-OpenShift yesikhulumi futhi siyivumelanise nohlelo lwefayela lendawo, futhi siphinde sikhulume ngokuthi ayini amapayipi we-OpenShift nokuthi angasetshenziswa kanjani njengenye indlela yemihlangano exhunyiwe.
I-OpenShift njengendawo yokuthuthukisa
Ukugeleza komsebenzi wokuthuthukisa
Njengoba sekushiwo ku
Ezinhlelweni eziningi zesimanje, “iseva yokuthuthukisa” yakhelwe kumathuluzi omugqa womyalo ahambisanayo.
Isibonelo sendawo
Okokuqala, ake sibone ukuthi lokhu kusebenza kanjani uma usebenzisa izinhlelo zokusebenza endaweni. Ake sithathe isicelo njengesibonelo
Ngakho-ke, ukuqala "iseva ye-dev" kusibonelo sethu se-React, sizofaka umyalo olandelayo:
$ npm run start
Khona-ke efasiteleni letheminali sizobona into efana nale:
Futhi uhlelo lwethu lokusebenza luzovuleka kusiphequluli esizenzakalelayo:
Manje, uma senza izinguquko kufayela, uhlelo lokusebenza kufanele lubuyekeze esipheqululini.
KULUNGILE, yonke into icacile ngentuthuko kwimodi yendawo, kepha ungafinyelela kanjani okufanayo ku-OpenShift?
Iseva yokuthuthukisa ku-OpenShift
Uma ukhumbula, ku
Nokho, uma ubhekisisa
Isibonelo, singasebenzisa imojula ye-nodeshift ukuze sisebenzise uhlelo lwethu lokusebenza:
$ npx nodeshift --deploy.env NPM_RUN="yarn start" --dockerImage=nodeshift/ubi8-s2i-web-app
Qaphela: Isibonelo esingenhla sifushanisiwe ukukhombisa umqondo ojwayelekile.
Lapha sengeze okuguquguqukayo kwemvelo ye-NPM_RUN ekusetshenzisweni kwethu, okutshela isikhathi sokusebenza ukuthi sisebenzise umyalo wokuqala wentambo, oqala iseva yokuthuthukisa ye-React ngaphakathi kwe-OpenShift pod yethu.
Uma ubheka ilogi ye-pod egijimayo, izobukeka kanjena:
Yiqiniso, konke lokhu ngeke kube lutho kuze kube yilapho sesikwazi ukuvumelanisa ikhodi yendawo nekhodi, ebuye igadwe izinguquko, kodwa ihlala kuseva ekude.
Ivumelanisa ikhodi yesilawuli kude neyendawo
Ngenhlanhla, i-nodeshift ingasiza kalula ngokuvumelanisa, futhi ungasebenzisa umyalo wokubuka ukulandelela izinguquko.
Ngakho-ke ngemuva kokuthi sisebenzise umyalo wokuphakela iseva yokuthuthukisa kuhlelo lwethu lokusebenza, singasebenzisa ngokuphephile umyalo olandelayo:
$ npx nodeshift watch
Ngenxa yalokho, kuzoxhunywa ku-pod esebenzayo esiyidalile ngaphambi kwesikhathi, ukuvumelanisa kwamafayela ethu endawo neqoqo elikude kuzosebenza, futhi amafayela ohlelweni lwethu lwendawo azoqala ukugadwa ukuze kushintshwe.
Ngakho-ke, uma manje sibuyekeza ifayela le-src/App.js, isistimu izosabela kulezi zinguquko, izikopishele kwiqoqo elikude futhi iqale iseva yokuthuthukisa, ezobese ibuyekeza uhlelo lwethu lokusebenza kusiphequluli.
Ukuqedela isithombe, ake sibonise ukuthi yonke le miyalo ibukeka kanjani:
$ npx nodeshift --strictSSL=false --dockerImage=nodeshift/ubi8-s2i-web-app --build.env YARN_ENABLED=true --expose --deploy.env NPM_RUN="yarn start" --deploy.port 3000
$ npx nodeshift watch --strictSSL=false
Umyalo wewashi uwukufinyezwa okungaphezulu komyalo we-oc rsync, ungafunda kabanzi mayelana nokuthi usebenza kanjani
Lesi bekuyisibonelo se-React, kodwa indlela efanayo ncamashi ingasetshenziswa nezinye izinhlaka, vele usethe i-NPM_RUN imvelo eguquguqukayo njengoba kudingeka.
Amapayipi we-Openshift
Okulandelayo sizokhuluma ngethuluzi elifana ne-OpenShift Pipelines nokuthi lingasetshenziswa kanjani njengenye indlela eyakhiwe ngamaketanga.
Yiziphi i-OpenShift Pipelines
I-OpenShift Pipelines iwuhlelo lokuhlanganisa oluqhubekayo lwamafu lwe-CI/CD oluklanyelwe ukuhlela amapayipi kusetshenziswa i-Tekton. I-Tekton iwuhlaka olushintshashintshayo lomthombo ovulekile we-Kubernetes-native CI/CD olukuvumela ukuthi usebenzise ngokuzenzakalelayo ukuthunyelwa kumapulatifomu ahlukahlukene (i-Kubernetes, i-serverless, imishini ebonakalayo, njll.) ngokukhipha isendlalelo esingaphansi.
Ukuqonda lesi sihloko kudinga ulwazi oluthile lwePipelines, ngakho-ke sincoma ngokuqinile ukuthi uqale ufunde
Ukusetha indawo yakho yokusebenza
Ukuze udlale ngezibonelo ezikulesi sihloko, okokuqala udinga ukulungisa indawo yakho yokusebenza:
- Faka futhi ulungiselele iqoqo le-OpenShift 4. Izibonelo zethu zisebenzisa i-CodeReady Containers (CRD) kulokhu, imiyalelo yokufaka engatholakala
lapha . - Ngemuva kokuthi iqoqo selilungile, udinga ukufaka i-Pipeline Operator kuyo. Ungesabi, kulula, imiyalelo yokufaka
lapha . - Landa
I-Tekton CLI (tkn)lapha . - Qalisa ithuluzi lomugqa womyalo we-create-react-app ukuze udale uhlelo lokusebenza ozobese ulusebenzisa (lolu uhlelo olulula
Yenza ). - (Ongakukhetha) Vala indawo yokugcina ukuze uqalise uhlelo lokusebenza lwesampula endaweni ngokufaka i-npm bese uqala i-npm.
Inqolobane yohlelo lokusebenza izophinda ibe nefolda ye-k8s, ezoqukatha i-Kubernetes/OpenShift YAMLs esetshenziselwa ukuphakela uhlelo. Kuzoba nama-Tasks, ClusterTasks, Resources and Pipelines esizokwakha kulokhu
Ake siqale
Isinyathelo sokuqala sesibonelo sethu ukudala iphrojekthi entsha kuqoqo le-OpenShift. Masibize le phrojekthi webapp-pipeline futhi siyidale ngomyalo olandelayo:
$ oc new-project webapp-pipeline
Leli gama lephrojekthi lizovela kukhodi ngokuhamba kwesikhathi, ngakho-ke uma unquma ukuyiqamba enye into, ungakhohlwa ukuhlela ikhodi yesibonelo ngokufanele. Kusukela kuleli phuzu, ngeke siye phezulu-phansi, kodwa phansi-phezulu: okungukuthi, sizoqala ukudala zonke izingxenye zomthumeli, bese kuphela umthumeli uqobo.
Ngakho, okokuqala ...
Imisebenzi
Masidale imisebenzi embalwa, ezosiza ekuthumeleni uhlelo ngaphakathi kwepayipi lethu. Umsebenzi wokuqala - apply_manifests_task - unesibopho sokusebenzisa i-YAML yalezo zinsiza ze-Kubernetes (isevisi, ukuthunyelwa kanye nomzila) ezitholakala kufolda ye-k8s yohlelo lwethu lokusebenza. Umsebenzi wesibili - update_deployment_task - unesibopho sokubuyekeza isithombe esesivele sitshaliwe kuleso esidalwe yipayipi lethu.
Ungakhathazeki uma kungakacaci kahle. Eqinisweni, le misebenzi iyinto efana nezinsiza, futhi sizoyibheka kabanzi ngokuhamba kwesikhathi. Okwamanje, masizidale:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/update_deployment_task.yaml
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/apply_manifests_task.yaml
Bese, sisebenzisa umyalo we-tkn CLI, sizobheka ukuthi imisebenzi idaliwe:
$ tkn task ls
NAME AGE
apply-manifests 1 minute ago
update-deployment 1 minute ago
Qaphela: Lena imisebenzi yasendaweni yephrojekthi yakho yamanje.
Imisebenzi yeqoqo
Imisebenzi yeqoqo ngokuyisisekelo iyafana nemisebenzi elula. Okusho ukuthi, iqoqo elingasebenziseka kabusha lezinyathelo ezihlanganiswa ngendlela eyodwa noma enye lapho kwenziwa umsebenzi othile. Umehluko wukuthi umsebenzi weqoqo utholakala yonke indawo ngaphakathi kweqoqo. Ukubona uhlu lwemisebenzi yeqoqo edaleka ngokuzenzakalelayo lapho wengeza i-Pipeline Operator, sizophinda sisebenzise umyalo we-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
Manje ake sakhe imisebenzi emibili yeqoqo. Eyokuqala izokhiqiza isithombe se-S2I futhi isithumele kusibhalisi sangaphakathi se-OpenShift; okwesibili ukwakha isithombe sethu ngokusekelwe ku-NGINX, sisebenzisa uhlelo lokusebenza esivele sakhile njengokuqukethwe.
Dala futhi uthumele isithombe
Lapho sidala umsebenzi wokuqala, sizophinda lokho esesikwenzile kakade esihlokweni esandulele mayelana nemihlangano exhunyiwe. Khumbula ukuthi sisebenzise isithombe se-S2I (ubi8-s2i-web-app) ukuze "sakhe" uhlelo lwethu lokusebenza, futhi sagcina sinesithombe esigcinwe ekubhaliseni kwangaphakathi kwe-OpenShift. Manje sizosebenzisa lesi sithombe sohlelo lokusebenza lwewebhu ye-S2I ukuze sakhe i-DockerFile yohlelo lwethu lokusebenza bese sisebenzisa i-Buildah ukwenza ukwakhiwa kwangempela futhi siphushe isithombe esiwumphumela kurejista yangaphakathi ye-OpenShift, njengoba yilokho kanye okwenziwa yi-OpenShift uma uphakela izinhlelo zakho zokusebenza usebenzisa i-NodeShift. .
Besikwazi kanjani konke lokhu, uyabuza? Kusuka
Ngakho-ke, manje ake sakhe umsebenzi weqoqo lohlelo lokusebenza lwe-s2i-web:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/s2i-web-app-task.yaml
Ngeke sikuhlaziye lokhu ngokuningiliziwe, kodwa sizogxila kuphela kupharamitha ye-OUTPUT_DIR:
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
Ngokuzenzakalelayo, le pharamitha ilingana nokwakha, okuyilapho i-React ibeka khona okuqukethwe okuhlanganisiwe. Ezinye izinhlaka zisebenzisa izindlela ezihlukene, isibonelo, ku-Ember yi-dist. Umphumela womsebenzi wethu wokuqala weqoqo kuzoba isithombe esiqukethe i-HTML, i-JavaScript, ne-CSS esiyiqoqile.
Yakha isithombe ngokusekelwe ku-NGINX
Ngokuqondene nomsebenzi wethu weqoqo lesibili, kufanele isakhele isithombe esisekelwe ku-NGINX, sisebenzisa okuqukethwe kwesicelo esivele sisakhile. Empeleni, lena yingxenye yesigaba esedlule lapho sibheke khona ukwakhiwa kwamaketanga.
Ukwenza lokhu, thina - sifana ncamashi nangenhla - sizodala umsebenzi we-web-build-runtime weqoqo lomsebenzi:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/webapp-build-runtime-task.yaml
Uma ubheka ikhodi yale misebenzi yeqoqo, ungabona ukuthi ayicacisi inqolobane ye-Git esisebenza nayo noma amagama ezithombe esizenzayo. Sicacisa kuphela ukuthi yini ngempela esiyidlulisela ku-Git, noma isithombe esithile lapho kufanele kukhishwe khona isithombe sokugcina. Yingakho le misebenzi yeqoqo ingasetshenziswa kabusha uma isebenza nezinye izinhlelo zokusebenza.
Futhi lapha sidlulela ephuzwini elilandelayo ngomusa...
Izinsiza
Ngakho-ke, njengoba sisanda kusho, imisebenzi yeqoqo kufanele ibe jikelele ngangokunokwenzeka, sidinga ukudala izinsiza ezizosetshenziswa njengokufakwayo (inqolobane ye-Git) kanye nokuphumayo (izithombe zokugcina). Insiza yokuqala esiyidingayo i-Git, lapho kuhlala khona isicelo sethu, into efana nale:
# 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
Lapha i-PipelineResource iwuhlobo lwe-git. Ukhiye we-url esigabeni samapharamu ukhomba endaweni ethile yokugcina futhi ucacisa igatsha eliyinhloko (lokhu uyazikhethela, kodwa sibhala ukuze kuphelele).
Manje sidinga ukudala insiza yesithombe lapho imiphumela yomsebenzi we-s2i-web-app izogcinwa khona, lokhu kwenziwa kanje:
# 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
Lapha i-PipelineResource iwuhlobo lwesithombe, futhi inani lepharamitha ye-url likhomba ku-OpenShift Image Registry yangaphakathi, ikakhulukazi leyo etholakala endaweni yamagama yepayipi lewebhu. Ungakhohlwa ukushintsha lesi silungiselelo uma usebenzisa indawo yamagama ehlukile.
Futhi ekugcineni, insiza yokugcina esiyidingayo izophinde ibe yesithombe sohlobo futhi lokhu kuzoba isithombe sokugcina se-NGINX esizosetshenziswa ngesikhathi sokuthunyelwa:
# 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
Futhi, qaphela ukuthi le nsiza igcina isithombe ekubhaliseni kwangaphakathi kwe-OpenShift ku-webapp-pipeline namespace.
Ukwakha zonke lezi zinsiza ngesikhathi esisodwa, sisebenzisa umyalo wokudala:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/resources/resource.yaml
Ungaqiniseka ukuthi izinsiza zidalwe kanje:
$ tkn resource ls
Ipayipi le-Conveyor
Manje njengoba sesinazo zonke izingxenye ezidingekayo, ake sihlanganise ipayipi elivela kuzo ngokulidala ngomyalo olandelayo:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/pipelines/build-and-deploy-react.yaml
Kodwa ngaphambi kokuthi sisebenzise lo myalo, ake sibheke lezi zingxenye. Elokuqala igama:
apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
name: build-and-deploy-react
Bese esigabeni sokucaciswa sibona inkomba yezinsiza esizidale ngaphambilini:
spec:
resources:
- name: web-application-repo
type: git
- name: built-web-application-image
type: image
- name: runtime-web-application-image
type: image
Sibe sesidala imisebenzi ipayipi lethu elidinga ukuyiqeda. Okokuqala nje, kufanele yenze umsebenzi we-s2i-web-app esesivele siwudalile:
tasks:
- name: build-web-application
taskRef:
name: s2i-web-app
kind: ClusterTask
Lo msebenzi uthatha okokufaka (insiza ye-gir) kanye nokuphumayo (insiza yesithombe esakhelwe-sewebhu) Siphinde futhi siyidlulisele ipharamitha ekhethekile ukuze ingaqinisekisi i-TLS njengoba sisebenzisa izitifiketi ezizisayinele:
resources:
inputs:
- name: source
resource: web-application-repo
outputs:
- name: image
resource: built-web-application-image
params:
- name: TLSVERIFY
value: "false"
Umsebenzi olandelayo ucishe ufane, lapha kuphela umsebenzi weqoqo le-webapp-build-runtime esesiwudalile ubizwa ngokuthi:
name: build-runtime-image
taskRef:
name: webapp-build-runtime
kind: ClusterTask
Njengomsebenzi wangaphambilini, sidlula esisetshenziswa, kodwa manje sekuyisithombe se-built-web-application-(umphumela womsebenzi wethu wangaphambilini). Futhi njengokukhiphayo siphinde setha isithombe. Njengoba lo msebenzi kufanele wenziwe ngemuva kowodlule, sengeza inkambu ethi runAfter:
resources:
inputs:
- name: image
resource: built-web-application-image
outputs:
- name: image
resource: runtime-web-application-image
params:
- name: TLSVERIFY
value: "false"
runAfter:
- build-web-application
Imisebenzi emibili elandelayo inesibopho sokusebenzisa isevisi, umzila kanye nokuphakela amafayela e-YAML ahlala kunkomba ye-k8s yohlelo lwethu lokusebenza lwewebhu, kanye nokubuyekeza lokhu kuthunyelwa lapho kwakhiwa izithombe ezintsha. Sichaze le misebenzi emibili yeqoqo ekuqaleni kwesihloko.
Iqala isithumeli
Ngakho-ke, zonke izingxenye zepayipi lethu zidaliwe, futhi sizoliqhuba ngomyalo olandelayo:
$ tkn pipeline start build-and-deploy-react
Kulesi sigaba, umugqa womyalo usetshenziswa ngokuhlanganyela futhi udinga ukukhetha izinsiza ezifanele ekuphenduleni isicelo ngasinye: kunsiza ye-git, khetha i-web-application-repo, bese kwinsiza yesithombe sokuqala, i-built-web-application. -image, futhi ekugcineni, okwesibili kwensiza yesithombe -isikhathi sokusebenza-i-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
Manje ake sihlole isimo sepayipi sisebenzisa umyalo olandelayo:
$ tkn pipeline logs -f
Uma ipayipi seliqalile futhi isicelo sesisetshenzisiwe, singacela umzila oshicilelwe ngomyalo olandelayo:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
Ukuze uthole ukubonwa okukhulu, ungabuka ipayipi lethu kumodi yonjiniyela yekhonsoli yewebhu esigabeni Amapayipi, njengoba kuboniswe ku-Fig. 1.
Fig.1. Ukubuyekezwa kokusebenza kwamapayipi.
Ukuchofoza ipayipi elisebenzayo kukhombisa imininingwane eyengeziwe, njengoba kuboniswe kuMfanekiso 2.
Ilayisi. 2. Ulwazi olwengeziwe mayelana nepayipi.
Ngemva kolwazi olwengeziwe, ungabona izinhlelo zokusebenza ezisebenzayo ekubukeni I-Topology, njengoba kuboniswe ku-Fig.3.
Umdwebo 3. I-pod eyethulwe.
Ukuchofoza isiyingi ekhoneni eliphezulu kwesokudla sesithonjana kuvula uhlelo lwethu lokusebenza, njengoba kuboniswe ku-Fig. 4.
Ilayisi. 4. Uhlelo lokusebenza olusebenzayo lwe-React.
isiphetho
Ngakho-ke, sibonise ukuthi isetshenziswa kanjani iseva yokuthuthukisa yohlelo lwakho lokusebenza ku-OpenShift futhi siyivumelanise nohlelo lwefayela lendawo. Siphinde sabheka ukuthi singalingisa kanjani isifanekiso esakhiwe ngamaketanga sisebenzisa i-OpenShift Pipelines. Wonke amakhodi ayisibonelo asuka kulesi sihloko angatholakala
Izinsiza ezengeziwe (EN)
- I-e-book yamahhala
"Ukuthuthukiswa ku-OpenShift: umhlahlandlela wabaphelelwe isineke" Ukwakha izinhlelo zokusebenza ze-Node.js ezimaphakathi kusetshenziswa i-Red Hat OpenShift Application Runtimes kanye ne-Istio Ukulungisa iphutha lezinhlelo zokusebenza ze-Node.js ku-OpenShift kusetshenziswa i-Chrome DevTools Imiyalo emithathu yokwenza i-Express ibe yingcweti ku-OpenShift kusukela ekuqaleni Isimemezelo senguqulo etholakala ngokuvamile ye-Node.js njengengxenye ye-Red Hat OpenShift Application Runtimes Ukuqapha Izicelo ze-Node.js ku-OpenShift nge-Prometheus - Ezinye izindatshana ku-
I-OpenShift ne-Kubernetes kuwebhusayithi yesigqoko esibomvu
Izimemezelo zama-webinars azayo
Siqala uchungechunge lwama-webinars angoLwesihlanu mayelana nolwazi lwendabuko sisebenzisa i-Red Hat OpenShift Container Platform kanye ne-Kubernetes:
Agasti 28, i-webinar Emperor “Operator”: Ama-Opharetha ku-OpenShift nase-Kubernetes Septhemba 11, i-DeploymentConfig vs Deployment - umlingo othize we-OpenShift wokwakha nokuphakela izinhlelo zokusebenza Septhemba 25, i-Red Hat OpenShift ne-Machine API Okthoba 9, Indlela yokubhekana nokwanda okungazelelwe komthwalo womsebenzi Ngomhla zingama-23 kuMfumfu, i-Jenkins Eshumekiwe, eyakha amapayipi, iTekton ku-Red Hat OpenShift Container Platform
Source: www.habr.com