Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Din il-kariga nkitbet minħabba li l-persunal tagħna kellu pjuttost ftit konversazzjonijiet mal-klijenti dwar l-iżvilupp ta 'applikazzjonijiet fuq Kubernetes u l-ispeċifiċitajiet ta' żvilupp bħal dan fuq OpenShift.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Normalment nibdew bit-teżi li Kubernetes huwa biss Kubernetes, u OpenShift diġà huwa pjattaforma Kubernetes, bħal Microsoft AKS jew Amazon EKS. Kull waħda minn dawn il-pjattaformi għandha l-vantaġġi tagħha stess, iffukata fuq udjenza fil-mira partikolari. U wara dan, il-konversazzjoni diġà tidħol f'paragun tas-saħħiet u d-dgħufijiet ta 'pjattaformi speċifiċi.

B'mod ġenerali, ħsibna li niktbu din il-kariga b'output bħal "Isma', ma jimpurtax fejn tmexxi l-kodiċi, fuq OpenShift jew fuq AKS, fuq EKS, fuq xi Kubernetes personalizzati, iva fuq kwalunkwe Kubernetes. (għall-qosor ejja nsejħulha KUK) "Huwa tassew sempliċi, kemm hemm kif ukoll hemm."

Imbagħad ippjanajna li nieħdu l-aktar sempliċi "Hello World" u nużawha biex nuru x'inhu komuni u x'inhuma d-differenzi bejn is-CMC u r-Red Hat OpenShift Container Platform (minn hawn 'il quddiem, OCP jew sempliċiment OpenShift).

Madankollu, waqt il-kitba ta’ din il-kariga, indunajna li tant drajna nużaw OpenShift li sempliċement ma nirrealizzawx kif kibret u nbidel fi pjattaforma tal-għaġeb li saret ħafna aktar minn sempliċiment distribuzzjoni ta’ Kubernetes. Għandna t-tendenza li nieħdu l-maturità u s-sempliċità ta 'OpenShift bħala fatt, u nitilfu l-magnitud tagħha.

B'mod ġenerali, wasal iż-żmien għall-indiema attiva, u issa se nqabblu pass pass l-ikkummissjonar tal-"Hello World" tagħna fuq KUK u fuq OpenShift, u se nagħmluh b'mod oġġettiv kemm jista' jkun (sewwa, ħlief kultant nuru personali attitudni lejn is-suġġett). Jekk inti interessat f'opinjoni purament suġġettiva dwar din il-kwistjoni, allura tista 'taqrah hawn (EN). U f'din il-kariga se nżommu mal-fatti u biss il-fatti.

Clusters

Allura, "Hello World" tagħna teħtieġ clusters. Ejja ngħidu "le" għal kwalunkwe sħab pubbliku, sabiex ma tħallasx għal servers, reġistri, netwerks, trasferiment tad-dejta, eċċ. Għaldaqstant, nagħżlu raggruppament sempliċi b'nodu wieħed fuq Minikube (għal KUK) u Kontenituri Kodiċi Lesti (għal cluster OpenShift). Dawn iż-żewġ għażliet huma verament faċli biex jiġu installati, iżda jeħtieġu ħafna riżorsi fuq il-laptop tiegħek.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Assemblaġġ fuq KUK-e

Mela ejja.

Pass 1 - Nibnu l-Immaġni tal-Kontenitur Tagħna

Nibdew billi niskjeraw "Hello World" tagħna fil-minikube. Dan ikun jeħtieġ:

  1. 1. Docker installat.
  2. 2. Installat Git.
  3. 3. Installat Maven (fil-fatt, dan il-proġett juża mvnw binarju, sabiex tkun tista 'tagħmel mingħajrha).
  4. 4. Attwalment, is-sors innifsu, i.e. klonu repożitorju github.com/gcolman/quarkus-hello-world.git

L-ewwel pass huwa li toħloq proġett Quarkus. Tibżax jekk qatt ma użajt Quarkus.io - huwa faċli. Int biss tagħżel il-komponenti li trid tuża fil-proġett (RestEasy, Hibernate, Amazon SQS, Camel, eċċ.), U mbagħad Quarkus innifsu, mingħajr ebda parteċipazzjoni tiegħek, jistabbilixxi l-arketip maven u jpoġġi kollox fuq github. Jiġifieri, litteralment klikk waħda tal-maws - u lest. Huwa għalhekk li nħobbu lil Quarkus.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

L-eħfef mod biex nibnu "Hello World" tagħna f'immaġni fil-kontejners huwa li tuża l-estensjonijiet quarkus-maven għal Docker, li se tagħmel ix-xogħol kollu meħtieġ. Bil-miġja ta 'Quarkus, dan sar verament faċli u sempliċi: żid l-estensjoni container-image-docker u tista' toħloq immaġini b'kmandi maven.

./mvnw quarkus:add-extension -Dextensions=”container-image-docker”

U fl-aħħarnett, nibnu l-immaġni tagħna bl-użu ta 'Maven. Bħala riżultat, il-kodiċi tas-sors tagħna jinbidel f'immaġni tal-kontenitur lesta, li diġà tista 'titħaddem fil-ħin tar-runtime tal-kontenitur.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

./mvnw -X clean package -Dquarkus.container-image.build=true

Dak, fil-fatt, huwa kollox, issa tista 'taħdem il-kontenitur bil-kmand tal-ġirja docker, wara li mmappjat is-servizz tagħna fil-port 8080 sabiex ikun jista' jiġi aċċessat.

docker run -i — rm -p 8080:8080 gcolman/quarkus-hello-world

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Wara li l-istanza tal-kontejner tkun bdiet, kulma jibqa 'huwa li tivverifika bil-kmand curl li s-servizz tagħna qed jaħdem:

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Allura, kollox jaħdem, u kien verament faċli u sempliċi.

Pass 2 - Ibgħat il-kontenitur tagħna lir-repożitorju tal-immaġni tal-kontenitur

Għalissa, l-immaġni li ħloqna hija maħżuna lokalment fil-ħażna lokali tal-kontenitur tagħna. Jekk irridu nużaw din l-immaġni fl-ambjent KUK tagħna, allura għandna bżonn inpoġġuha f'xi repożitorju ieħor. Kubernetes m'għandux dawn il-karatteristiċi, għalhekk se nużaw dockerhub. Għax, l-ewwelnett, huwa b'xejn, u t-tieni, (kważi) kulħadd jagħmel dan.

Dan huwa wkoll sempliċi ħafna, u hawn bżonn biss kont dockerhub.

Għalhekk, aħna ninstallaw dockerhub u nibagħtu l-immaġni tagħna hemmhekk.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Pass 3 - Ibda Kubernetes

Hemm ħafna modi kif tiġbor il-konfigurazzjoni tal-kubernetes biex tmexxi l-"Hello World" tagħna, iżda se nużaw l-aktar sempliċi minnhom, hekk aħna...

L-ewwel, nibdew il-cluster minikube:

minikube start

Pass 4 - L-iskjerament tal-Immaġni tal-Kontenitur tagħna

Issa għandna bżonn nikkonverti l-kodiċi tagħna u l-immaġni tal-kontenitur għall-konfigurazzjoni kubernetes. Fi kliem ieħor, neħtieġu pod u definizzjoni tal-iskjerament li tipponta lejn l-immaġni tal-kontenitur tagħna fuq dockerhub. Wieħed mill-eħfef modi biex tagħmel dan huwa li tħaddem il-kmand tal-ħolqien tal-iskjerament li jindika l-immaġni tagħna:

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

kubectl create deployment hello-quarkus — image =gcolman/quarkus-hello-world:1.0.0-SNAPSHOT

B'dan il-kmand, għidna lil COOK tagħna biex toħloq konfigurazzjoni ta 'skjerament, li għandu jkun fiha l-ispeċifikazzjoni tal-pod għall-immaġni tal-kontenitur tagħna. Dan il-kmand se japplika wkoll din il-konfigurazzjoni għall-cluster minikube tagħna, u joħloq skjerament li jniżżel l-immaġni tal-kontenitur tagħna u jmexxi pod fuq il-cluster.

Pass 5 - tiftaħ aċċess għas-servizz tagħna

Issa li għandna immaġni tal-kontenitur skjerata, wasal iż-żmien li naħsbu dwar kif tikkonfigura l-aċċess estern għal dan is-servizz Restful, li, fil-fatt, huwa pprogrammat fil-kodiċi tagħna.

Hemm ħafna modi hawn. Pereżempju, tista' tuża l-kmand expose biex toħloq awtomatikament il-komponenti xierqa ta' Kubernetes, bħal servizzi u endpoints. Fil-fatt, dan huwa dak li se nagħmlu billi neżegwixxu l-kmand tal-esponi għall-oġġett tal-iskjerament tagħna:

kubectl expose deployment hello-quarkus — type=NodePort — port=8080

Ejja nitkellem fuq l-għażla "-tip" tal-kmand tal-esponi għal mument.

Meta nesponu u noħolqu l-komponenti meħtieġa biex imexxu s-servizz tagħna, għandna bżonn, fost affarijiet oħra, li nkunu nistgħu nikkonnettjaw minn barra mas-servizz hello-quarkus li jinsab ġewwa n-netwerk definit tas-software tagħna. U parametru tip jippermettilna noħolqu u nikkonnettjaw affarijiet bħal load balancers biex inwasslu t-traffiku lejn dak in-netwerk.

Per eżempju, il-kitba tip=LoadBalancer, aħna awtomatikament inizjalizzaw l-ibbilanċjar tat-tagħbija tas-sħab pubbliku biex nikkonnettjaw mal-cluster Kubernetes tagħna. Dan, ovvjament, huwa kbir, iżda trid tifhem li konfigurazzjoni bħal din se tkun marbuta sewwa ma 'sħaba pubblika speċifika u se jkun aktar diffiċli li tittrasferiha bejn istanzi ta' Kubernetes f'ambjenti differenti.

Fl-eżempju tagħna tip=NodePort, jiġifieri, is-sejħa għas-servizz tagħna tmur mill-indirizz IP tan-node u n-numru tal-port. Din l-għażla tippermettilek li ma tuża l-ebda sħab pubbliku, iżda teħtieġ numru ta 'passi addizzjonali. L-ewwel, għandek bżonn il-bilanċjar tat-tagħbija tiegħek stess, għalhekk aħna se niskjeraw il-bilanċjar tat-tagħbija NGINX fil-cluster tagħna.

Pass 6 - Twaqqaf load balancer

minikube għandu numru ta 'karatteristiċi ta' pjattaforma li jagħmluha faċli biex toħloq il-komponenti li għandek bżonn għal aċċess estern, bħal kontrolluri ta 'dħul. Minikube jiġi magħqud mal-kontrollur tad-dħul Nginx, u kull ma rridu nagħmlu huwa li nippermettilu u kkonfigurawh.

minikube addons enable ingress

Issa, bi kmand wieħed biss, se noħolqu kontrollur tad-dħul Nginx li se jaħdem ġewwa l-cluster minikube tagħna:

ingress-nginx-controller-69ccf5d9d8-j5gs9 1/1 Running 1 33m

Pass 7 - Issettja l-ingress

Issa għandna bżonn nikkonfiguraw il-kontrollur tad-dħul Nginx biex jaċċetta talbiet hello-quarkus.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

U fl-aħħarnett, irridu napplikaw din il-konfigurazzjoni.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

kubectl apply -f ingress.yml

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Peress li qed nagħmlu dan kollu fuq il-magna tagħna stess, aħna sempliċement inżidu l-indirizz IP tan-node tagħna fil-fajl /etc/hosts biex nidderieġu t-talbiet http lill-minikube tagħna lejn il-bilanċjar tat-tagħbija NGINX.

192.168.99.100 hello-quarkus.info

Dak hu, issa s-servizz tal-minikube tagħna huwa disponibbli minn barra permezz tal-kontrollur tad-dħul Nginx.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Ukoll, li kien faċli, id-dritt? Jew mhux daqshekk?

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Mexxi fuq OpenShift (Kontenituri lesti għall-Kodiċi)

U issa ejja naraw kif isir kollu fuq ir-Red Hat OpenShift Container Platform (OCP).

Bħal fil-każ ta 'minikube, aħna nagħżlu skema bi raggruppament OpenShift b'node wieħed fil-forma ta' Code Ready Containers (CRC). Kien jissejjaħ minishift u kien ibbażat fuq il-proġett OpenShift Origin, iżda issa huwa CRC u mibni fuq il-Pjattaforma tal-Kontenituri OpenShift ta' Red Hat.

Hawnhekk, skużani, ma nistgħux ma ngħidux: "OpenShift huwa kbir!"

Inizjalment, ħsibna li niktbu li l-iżvilupp fuq OpenShift mhuwiex differenti mill-iżvilupp fuq Kubernetes. U essenzjalment dan huwa kif inhi. Iżda fil-proċess tal-kitba ta 'din il-post, ftakarna kemm għandek tagħmel movimenti żejda meta ma jkollokx OpenShift, u għalhekk, għal darb'oħra, huwa sabiħ. Aħna nħobbuha meta kollox isir faċilment, u kemm l-eżempju tagħna huwa faċli li niskjeraw u mħaddma fuq OpenShift meta mqabbel ma 'minikube huwa dak li wassalna biex niktbu din il-kariga.

Ejja ngħaddu mill-proċess u naraw x'għandna bżonn nagħmlu.

Allura, fl-eżempju tal-minikube, bdejna b'Docker... Stenna, m'għadniex bżonn Docker installat fuq il-magna.

U m'għandniex bżonn git lokali.
U Maven mhux meħtieġ.
U m'għandekx għalfejn toħloq immaġni ta 'kontenitur bl-idejn.
U m'għandekx għalfejn tfittex xi repożitorju ta 'immaġini tal-kontejners.
U m'għandekx bżonn tinstalla kontrollur tad-dħul.
U m'għandekx bżonn tikkonfigura l-ingress lanqas.

Qed tifhem? Biex tuża u tħaddem l-applikazzjoni tagħna fuq OpenShift, l-ebda wieħed minn dawn t'hawn fuq mhu meħtieġ. U l-proċess innifsu huwa kif ġej.

Pass 1 – Tibda l-Cluster OpenShift Tiegħek

Aħna nużaw Code Ready Containers minn Red Hat, li essenzjalment huwa l-istess Minikube, iżda biss b'grupp sħiħ ta 'Openshift b'nodu wieħed.

crc start

Pass 2 - Ibni u Użu l-Applikazzjoni fil-Cluster OpenShift

Huwa f'dan il-pass li s-sempliċità u l-konvenjenza ta 'OpenShift jimmanifestaw ruħhom fil-glorja kollha tagħha. Bħal fid-distribuzzjonijiet kollha ta' Kubernetes, għandna ħafna modi kif inħaddmu applikazzjoni fuq cluster. U, bħal fil-każ ta' KUK, aħna speċifikament nagħżlu l-aktar waħda sempliċi.

OpenShift dejjem inbniet bħala pjattaforma għall-bini u t-tħaddim ta' applikazzjonijiet f'kontejners. Il-bini ta 'kontenituri dejjem kien parti integrali minn din il-pjattaforma, għalhekk hemm mazz ta' riżorsi Kubernetes addizzjonali għall-kompiti korrispondenti.

Se nkunu qed nużaw il-proċess tal-Immaġni Sors 2 (S2I) ta' OpenShift, li għandu diversi modi differenti biex nieħdu s-sors tagħna (kodiċi jew binarji) u nibdluh f'immaġni fil-kontejners li taħdem fuq cluster OpenShift.

Għal dan għandna bżonn żewġ affarijiet:

  • Il-kodiċi tas-sors tagħna fir-repożitorju git
  • Bennej-immaġni, ibbażata fuqha l-assemblaġġ se jitwettaq.

Hemm ħafna immaġini bħal dawn, miżmuma kemm minn Red Hat kif ukoll mill-komunità, u se nużaw l-immaġni OpenJDK, ukoll, peress li qed nibni applikazzjoni Java.

Tista' tmexxi bini S2I kemm mill-console grafika OpenShift Developer kif ukoll mil-linja tal-kmand. Aħna se nużaw il-kmand tal-app il-ġdida, billi ngħidulu fejn se tikseb l-immaġni tal-bennej u l-kodiċi tas-sors tagħna.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

oc new-app registry.access.redhat.com/ubi8/openjdk-11:latest~https://github.com/gcolman/quarkus-hello-world.git

Dak hu, l-applikazzjoni tagħna hija maħluqa. Meta għamel dan, il-proċess S2I għamel l-affarijiet li ġejjin:

  • Ħoloq servizz build-pod għal kull xorta ta 'affarijiet relatati mal-bini tal-applikazzjoni.
  • Ħoloq konfigurazzjoni OpenShift Build.
  • Niżżilt l-immaġni tal-bennej fir-reġistru intern tad-docker OpenShift.
  • Ikklonat "Hello World" għar-repożitorju lokali.
  • Rat kien hemm maven pom hemmhekk u għalhekk ikkumpila l-app ma 'maven.
  • Ħoloq immaġni tal-kontejner ġdida li fiha l-applikazzjoni Java kkumpilata u poġġi din l-immaġni fir-reġistru tal-kontejners intern.
  • Ħoloq Deployment Kubernetes bi speċifikazzjonijiet għal pod, servizz, eċċ.
  • Imnedija immaġni tal-kontenitur tal-iskjerament.
  • Tneħħa servizz build-pod.

Hemm ħafna fuq din il-lista, iżda l-ħaġa prinċipali hija li l-bini kollu jseħħ esklussivament ġewwa OpenShift, ir-reġistru intern Docker jinsab ġewwa OpenShift, u l-proċess tal-bini joħloq il-komponenti kollha ta 'Kubernetes u jmexxihom fuq il-cluster.

Jekk tissorvelja viżwalment it-tnedija ta 'S2I fil-console, tista' tara kif titnieda l-pod tal-bini waqt il-bini.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

U issa ejja nagħtu ħarsa lejn ir-zkuk tal-pod tal-bennej: l-ewwelnett, hemm tista 'tara kif maven jagħmel xogħolha u tniżżel id-dipendenzi biex tibni l-applikazzjoni java tagħna.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Wara li titlesta l-bini maven, tinbeda l-bini tal-immaġni tal-kontenitur, u mbagħad din l-immaġni mibnija tintbagħat lir-repożitorju intern.

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Kollox, il-proċess tal-assemblaġġ jitlesta. Issa ejja niżguraw li l-imżiewed u s-servizzi tal-applikazzjoni tagħna bdew fil-cluster.

oc get service

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Dak kollox. U hemm tim wieħed biss. Kulma rridu nagħmlu hu li jesponu dan is-servizz għal aċċess minn barra.

Pass 3 - tagħmel is-servizz jesponi għal aċċess minn barra

Bħal fil-każ ta’ KUC, fuq il-pjattaforma OpenShift “Hello World” tagħna jeħtieġ ukoll router biex jidderieġi t-traffiku estern lejn is-servizz fi ħdan il-cluster. OpenShift jagħmilha faċli ħafna. L-ewwelnett, il-komponent tar-routing HAProxy huwa installat fil-cluster awtomatikament (jista 'jinbidel għall-istess NGINX). It-tieni nett, hemm riżorsi speċjali u konfigurabbli ħafna msejħa Rotot u li jfakkru l-oġġetti Ingress f’Kubernetes qodma tajba (fil-fatt, ir-Rotot ta’ OpenShift influwenzaw ħafna d-disinn ta’ oġġetti Ingress, li issa jistgħu jintużaw f’OpenShift), iżda għal “Hello World” tagħna. , u fi kważi l-każijiet l-oħra kollha, ir-Rotta standard hija biżżejjed għalina mingħajr konfigurazzjoni addizzjonali.

Biex toħloq FQDN routable għal "Hello World" (iva, OpenShiift għandu d-DNS tiegħu stess għar-rotot bl-ismijiet tas-servizz), aħna sempliċement nesponu s-servizz tagħna:

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

oc expose service quarkus-hello-world

Jekk tħares lejn ir-Rotta maħluqa l-ġdida, allura tista' ssib l-FQDN u informazzjoni oħra dwar ir-rotta hemmhekk:

oc get route

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

U fl-aħħarnett, aħna naċċessaw is-servizz tagħna mill-browser:

Jiddispjaċini, OpenShift, ma apprezzajniex biżżejjed u ħadniek for granted

Imma issa kien tassew faċli!

Aħna nħobbu Kubernetes u dak kollu li din it-teknoloġija tippermettilek tagħmel, u nħobbu wkoll is-sempliċità u l-ħeffa. Kubernetes kien iddisinjat biex jagħmel kontenituri mqassma u skalabbli oerhört faċli biex joperaw, iżda s-sempliċità tiegħu m'għadhiex biżżejjed biex iġġib l-applikazzjonijiet fil-produzzjoni llum. U dan huwa fejn jidħol fis-seħħ OpenShift, li jlaħħaq mal-ħinijiet u joffri Kubernetes, iffukat primarjament fuq l-iżviluppatur. Ġie investit ħafna sforz biex il-pjattaforma OpenShift tiġi mfassla speċifikament għall-iżviluppatur, inkluż il-ħolqien ta 'għodod bħal S2I, ODI, Portal tal-Iżviluppaturi, Qafas tal-Operatur OpenShift, integrazzjoni IDE, Katalgi tal-Iżviluppaturi, integrazzjoni Helm, monitoraġġ, u ħafna oħrajn.

Nittamaw li dan l-artikolu kien interessanti u utli għalik. U tista 'ssib riżorsi addizzjonali, materjali u affarijiet oħra utli għall-iżvilupp fuq il-pjattaforma OpenShift fuq il-portal Żviluppaturi Red Hat.

Sors: www.habr.com

Żid kumment