ProHoster > blog > Gweinyddiaeth > Tiwtorial Kubernetes Rhan 1: Cymwysiadau, Microwasanaethau a Chynhwyswyr
Tiwtorial Kubernetes Rhan 1: Cymwysiadau, Microwasanaethau a Chynhwyswyr
Ar ein cais ni, creodd Habr ganolbwynt Kubernetes ac y mae yn dda genym osod y cyhoeddiad cyntaf ynddo. Tanysgrifiwch!
Mae Kubernetes yn hawdd. Pam mae banciau yn talu llawer o arian i mi weithio yn y maes hwn, tra gall unrhyw un feistroli'r dechnoleg hon mewn ychydig oriau yn unig?
Os ydych chi'n amau y gellir dysgu Kubernetes mor gyflym, rwy'n awgrymu eich bod chi'n rhoi cynnig arni eich hun. Sef, ar ôl meistroli'r deunydd hwn, byddwch yn gallu rhedeg cymhwysiad yn seiliedig ar ficrowasanaethau mewn clwstwr Kubernetes. Gallaf warantu hyn, gan mai'r un fethodoleg yn union a ddefnyddir yma yr wyf yn dysgu ein cleientiaid i weithio gyda Kubernetes. Beth sy'n gwneud y canllaw hwn yn wahanol i rai eraill? Mewn gwirionedd, mae yna lawer o bethau. Felly, mae'r rhan fwyaf o'r deunyddiau hyn yn dechrau gydag esboniad o bethau syml - cysyniadau Kubernetes a nodweddion y gorchymyn kubectl. Mae awduron y deunyddiau hyn yn tybio bod eu darllenwyr yn gyfarwydd â datblygu cymwysiadau, microservices, a chynwysyddion Docker. Byddwn yn mynd y ffordd arall. Yn gyntaf, byddwn yn siarad am sut i redeg cymhwysiad yn seiliedig ar ficrowasanaethau ar gyfrifiadur. Yna byddwn yn edrych ar adeiladu delweddau cynhwysydd ar gyfer pob microwasanaeth. Ac ar ôl hynny, byddwn yn dod yn gyfarwydd â Kubernetes ac yn edrych ar ddefnyddio cymhwysiad yn seiliedig ar ficrowasanaethau mewn clwstwr a reolir gan Kubernetes.
Bydd y dull hwn, gydag ymagwedd raddol at Kubernetes, yn rhoi dyfnder y ddealltwriaeth o'r hyn sy'n digwydd sy'n angenrheidiol i'r person cyffredin er mwyn deall pa mor syml y mae popeth yn gweithio yn Kubernetes. Mae Kubernetes yn sicr yn dechnoleg syml, ar yr amod bod y rhai sydd am ei ddysgu yn gwybod ble a sut y caiff ei ddefnyddio.
Nawr, heb ragor o wybodaeth, gadewch i ni ddechrau a siarad am y cais y byddwn yn gweithio gydag ef.
Cais arbrofol
Bydd ein cais yn cyflawni un swyddogaeth yn unig. Mae'n cymryd un frawddeg fel mewnbwn, ac ar ôl hynny, gan ddefnyddio offer dadansoddi testun, mae'n perfformio dadansoddiad teimlad o'r frawddeg hon, gan gael asesiad o agwedd emosiynol awdur y frawddeg at wrthrych penodol.
Dyma sut olwg sydd ar brif ffenestr y cais hwn.
Cais gwe ar gyfer dadansoddi teimladau o destunau
O safbwynt technegol, mae'r cais yn cynnwys tri microwasanaeth, ac mae pob un ohonynt yn datrys set benodol o dasgau:
Mae SA-Frontend yn weinydd gwe Nginx sy'n gwasanaethu ffeiliau React statig.
Mae SA-WebApp yn gymhwysiad gwe a ysgrifennwyd yn Java sy'n prosesu ceisiadau o'r blaen.
Mae SA-Logic yn gymhwysiad Python sy'n dadansoddi teimladau ar destun.
Mae'n bwysig nodi nad yw microwasanaethau yn bodoli ar eu pen eu hunain. Maent yn gweithredu'r syniad o "wahanu cyfrifoldebau", ond ar yr un pryd mae angen iddynt ryngweithio â'i gilydd.
Llif data yn y cais
Yn y diagram uchod, gallwch weld y camau wedi'u rhifo yn y system, gan ddangos y llif data yn y cymhwysiad. Gadewch i ni edrych arnyn nhw:
Mae'r porwr yn gofyn am ffeil gan y gweinydd index.html (sydd, yn ei dro, yn llwytho i lawr y pecyn cais React).
Mae'r defnyddiwr yn rhyngweithio â'r rhaglen, mae hyn yn achosi galwad i'r cymhwysiad gwe sy'n seiliedig ar y Gwanwyn.
Mae'r cymhwysiad gwe yn anfon y cais i berfformio dadansoddiad testun ymlaen i raglen Python.
Mae'r rhaglen Python yn cynnal dadansoddiad teimlad o'r testun ac yn dychwelyd y canlyniad fel ymateb i'r cais.
Mae cymhwysiad y Gwanwyn yn anfon ymateb i raglen React (sydd, yn ei dro, yn dangos canlyniad y dadansoddiad testun i'r defnyddiwr).
Gellir dod o hyd i'r cod ar gyfer yr holl gymwysiadau hyn yma. Rwy'n argymell eich bod yn copïo'r ystorfa hon i chi'ch hun ar hyn o bryd, gan fod llawer o arbrofion diddorol ag ef o'n blaenau.
Rhedeg rhaglen sy'n seiliedig ar ficrowasanaethau ar eich peiriant lleol
Er mwyn i'r cais weithio, mae angen i ni ddechrau pob un o'r tri microwasanaeth. Gadewch i ni ddechrau gyda'r mwyaf ciwt ohonyn nhw i gyd - y cais pen blaen.
▍Sefydlu React ar gyfer datblygiad lleol
Er mwyn rhedeg cymhwysiad React, mae angen i chi osod platfform Node.js ac NPM ar eich cyfrifiadur. Unwaith y byddwch wedi gosod hyn i gyd, defnyddiwch y derfynell i lywio i'ch ffolder prosiect sa-frontend a rhedeg y gorchymyn canlynol:
npm install
Trwy redeg y gorchymyn hwn yn y ffolder node_modules bydd dibyniaethau cymhwysiad React yn cael eu llwytho, y mae cofnodion ohonynt yn y ffeil package.json. Unwaith y bydd y dibyniaethau wedi'u llwytho i lawr yn yr un ffolder, rhedeg y gorchymyn canlynol:
npm start
Dyna i gyd. Nawr bod y rhaglen React yn rhedeg, gallwch gael mynediad iddo trwy fynd i'r cyfeiriad canlynol yn eich porwr: localhost:3000. Gallwch chi newid rhywbeth yn ei god. Byddwch yn gweld effaith y newidiadau hyn ar unwaith yn y porwr. Mae hyn yn bosibl diolch i'r hyn a elwir yn amnewid modiwlau yn “boeth”. Mae hyn yn gwneud datblygiad pen blaen yn brofiad syml a phleserus.
▍ Paratoi cais React ar gyfer cynhyrchu
Er mwyn defnyddio cymhwysiad React mewn gwirionedd, mae angen i ni ei drawsnewid yn set o ffeiliau statig a'u gwasanaethu i gleientiaid gan ddefnyddio gweinydd gwe.
I adeiladu'r cymhwysiad React, gan ddefnyddio'r derfynell eto, llywiwch i'r ffolder sa-frontend a rhedeg y gorchymyn canlynol:
npm run build
Bydd hyn yn creu cyfeiriadur yn y ffolder prosiect build. Bydd yn cynnwys yr holl ffeiliau statig sy'n angenrheidiol er mwyn i raglen React weithio.
▍ Gwasanaethu ffeiliau statig gan ddefnyddio Nginx
Yn gyntaf mae angen i chi osod a rhedeg gweinydd gwe Nginx. Yma gallwch ei lawrlwytho a dod o hyd i gyfarwyddiadau ar sut i'w osod a'i redeg. Yna mae angen i chi gopïo cynnwys y ffolder sa-frontend/build i ffolder [your_nginx_installation_dir]/html.
Gyda'r dull hwn, y ffeil a gynhyrchir yn ystod y broses adeiladu y cais React index.html bydd ar gael yn [your_nginx_installation_dir]/html/index.html. Dyma'r ffeil y mae gweinydd Nginx, yn ddiofyn, yn ei chynhyrchu wrth ei chyrchu. Mae'r gweinydd wedi'i ffurfweddu i wrando ar y porth 80, ond gellir ei addasu yn y ffordd sydd ei angen arnoch trwy olygu'r ffeil [your_nginx_installation_dir]/conf/nginx.conf.
Nawr agorwch eich porwr ac ewch i localhost:80. Fe welwch dudalen cais React.
Cais React a wasanaethir gan weinydd Nginx
Os rhowch rywbeth i'r cae nawr Type your sentence a gwasgwch y botwm Send - fydd dim byd yn digwydd. Ond, os edrychwch ar y consol, gallwch weld negeseuon gwall yno. Er mwyn deall yn union ble mae'r gwallau hyn yn digwydd, gadewch i ni ddadansoddi cod y cais.
▍ Dadansoddiad cod cais pen blaen
Edrych ar god y ffeil App.js, gallwn weld bod pwyso'r botwm Send yn galw dull analyzeSentence(). Rhoddir y cod ar gyfer y dull hwn isod. Sylwch, ar gyfer pob llinell sydd â sylw o'r ffurflen # Номер, mae esboniad o dan y cod. Byddwn yn dadansoddi darnau eraill o god yn yr un modd.
1. Yr URL y gwneir y cais POST iddo. Tybir bod cais yn y cyfeiriad hwn sy'n disgwyl ceisiadau o'r fath.
2.Anfonodd y corff cais at y cais. Dyma enghraifft o gorff ceisiadau:
{
sentence: "I like yogobella!"
}
3.Pan dderbynnir ymateb i gais, caiff cyflwr y gydran ei ddiweddaru. Mae hyn yn achosi i'r gydran gael ei hail-rendro. Os byddwn yn derbyn data (hynny yw, gwrthrych JSON sy'n cynnwys y data mewnbwn a'r sgôr testun wedi'i gyfrifo), byddwn yn allbynnu'r gydran Polarity, gan y bydd yr amodau priodol yn cael eu bodloni. Dyma sut rydyn ni'n disgrifio'r gydran:
Mae'n ymddangos bod y cod yn gweithio'n eithaf da. Beth sy'n bod ar hyn, beth bynnag? Os cymerwch yn ganiataol yn y cyfeiriad y mae’r cais yn ceisio anfon cais POST iddo, nad oes dim eto a all dderbyn a phrosesu’r cais hwn, yna byddwch yn llygad eich lle. Sef, i brosesu ceisiadau a dderbyniwyd yn http://localhost:8080/sentiment, mae angen i ni redeg cais gwe yn seiliedig ar y Gwanwyn.
Mae angen cais Gwanwyn arnom a all dderbyn cais POST
▍ Sefydlu cymhwysiad gwe sy'n seiliedig ar y Gwanwyn
Er mwyn defnyddio cymhwysiad Gwanwyn, bydd angen JDK8 a Maven a newidynnau amgylchedd wedi'u ffurfweddu'n gywir arnoch. Unwaith y byddwch wedi gosod hyn i gyd, gallwch barhau i weithio ar ein prosiect.
▍ Pecynnu cymhwysiad i ffeil jar
Llywiwch, gan ddefnyddio terfynell, i'r ffolder sa-webapp a nodwch y gorchymyn canlynol:
mvn install
Ar ôl rhedeg y gorchymyn hwn yn y ffolder sa-webapp bydd cyfeiriadur yn cael ei greu target. Dyma lle bydd y cymhwysiad Java wedi'i leoli, wedi'i becynnu mewn ffeil jar, a gynrychiolir gan y ffeil sentiment-analysis-web-0.0.1-SNAPSHOT.jar.
▍ Rhedeg cymhwysiad Java
Ewch i'r ffolder target a rhedeg y cais gyda'r gorchymyn canlynol:
Bydd gwall yn digwydd wrth weithredu'r gorchymyn hwn. I ddechrau ei drwsio, gallwn ddadansoddi'r manylion eithriad yn y data olrhain pentwr:
Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}"
I ni, y peth pwysicaf yma yw y crybwylliad am yr anmhosiblrwydd o egluro yr ystyr sa.logic.api.url. Gadewch i ni ddadansoddi'r cod y mae'r gwall yn digwydd ynddo.
▍ Dadansoddiad cod cais Java
Dyma'r pyt cod lle mae'r gwall yn digwydd.
@CrossOrigin(origins = "*")
@RestController
public class SentimentController {
@Value("${sa.logic.api.url}") // #1
private String saLogicApiUrl;
@PostMapping("/sentiment")
public SentimentDto sentimentAnalysis(
@RequestBody SentenceDto sentenceDto)
{
RestTemplate restTemplate = new RestTemplate();
return restTemplate.postForEntity(
saLogicApiUrl + "/analyse/sentiment", // #2
sentenceDto, SentimentDto.class)
.getBody();
}
}
Yn SentimentController mae maes saLogicApiUrl. Pennir ei werth gan yr eiddo sa.logic.api.url.
Llinyn saLogicApiUrl yn cyd-fynd â'r gwerth /analyse/sentiment. Gyda'i gilydd maent yn ffurfio'r cyfeiriad ar gyfer gwneud galwad i'r microwasanaeth sy'n cynnal dadansoddiad testun.
▍Pennu gwerth eiddo
Yn y Gwanwyn, ffeil safonol yw ffynhonnell safonol gwerthoedd eiddo application.properties, sydd i'w gael yn sa-webapp/src/main/resources. Ond nid ei ddefnydd yw'r unig ffordd i osod gwerthoedd eiddo. Gellir gwneud hyn hefyd gan ddefnyddio'r gorchymyn canlynol:
Dylai gwerth yr eiddo hwn dynnu sylw at gyfeiriad ein cais Python.
Trwy ei ffurfweddu, rydyn ni'n dweud wrth raglen we Spring i ble mae angen iddo fynd i gyflawni ceisiadau dadansoddi testun.
Er mwyn peidio â chymhlethu ein bywyd, byddwn yn penderfynu y bydd y rhaglen Python ar gael yn localhost:5000 a gadewch i ni geisio peidio ag anghofio amdano. O ganlyniad, bydd y gorchymyn i lansio cymhwysiad y Gwanwyn yn edrych fel hyn:
Pennu cyfeiriad ar gyfer perfformio ceisiadau POST iddo.
Adalw Eiddo sentence oddi wrth y corff cais.
Cychwyn Gwrthrych Anhysbys TextBlob a chael y gwerth polarity am y frawddeg gyntaf a dderbyniwyd yng nghorff y cais (yn ein hachos ni, dyma'r unig ddedfryd a anfonwyd i'w dadansoddi).
Dychwelyd ymateb y mae ei gorff yn cynnwys testun y frawddeg a'r dangosydd wedi'i gyfrifo ar ei gyfer polarity.
Lansio cais Fflasg, a fydd ar gael yn 0.0.0.0:5000 (gallwch hefyd gael mynediad iddo gan ddefnyddio lluniad o'r ffurflen localhost:5000).
Mae'r microwasanaethau sy'n rhan o'r cais bellach yn rhedeg. Maent yn cael eu tiwnio i ryngweithio â'i gilydd. Dyma sut olwg sydd ar y diagram cymhwyso ar y cam hwn o'r gwaith.
Mae'r holl ficrowasanaethau sy'n rhan o'r cais yn dod i gyflwr gweithio
Nawr, cyn i chi barhau, agorwch eich cais React mewn porwr a cheisiwch ddosrannu rhyw frawddeg ag ef. Os gwneir popeth yn gywir - ar ôl pwyso'r botwm Send fe welwch y canlyniadau dadansoddi o dan y maes testun.
Yn yr adran nesaf, byddwn yn siarad am sut i redeg ein microwasanaethau mewn cynwysyddion Docker. Mae hyn yn angenrheidiol er mwyn paratoi'r cais i redeg ar glwstwr Kubernetes.
Cynwysyddion docwyr
Kubernetes yn system ar gyfer awtomeiddio'r broses o leoli, graddio a rheoli cymwysiadau cynhwysydd. Fe'i gelwir hefyd yn “gerddorfawr cynhwysydd”. Os yw Kubernetes yn gweithio gyda chynwysyddion, yna cyn defnyddio'r system hon mae'n rhaid i ni gaffael y cynwysyddion hyn yn gyntaf. Ond yn gyntaf, gadewch i ni siarad am beth yw cynwysyddion. Efallai mai'r ateb gorau i'r cwestiwn o beth ydyw i'w gael ynddo dogfennaeth i Docker:
Mae delwedd cynhwysydd yn becyn ysgafn, hunangynhwysol, gweithredadwy sy'n cynnwys cymhwysiad, sy'n cynnwys popeth sy'n angenrheidiol i'w redeg: cod cais, amgylchedd gweithredu, offer system a llyfrgelloedd, gosodiadau. Gellir defnyddio rhaglenni mewn cynhwysydd mewn amgylcheddau Linux a Windows, a byddant bob amser yn gweithio yr un peth waeth beth fo'r seilwaith.
Mae hyn yn golygu y gellir rhedeg cynwysyddion ar unrhyw gyfrifiadur, gan gynnwys gweinyddwyr cynhyrchu, a bydd y cymwysiadau sydd ynddynt yn gweithio yr un peth mewn unrhyw amgylchedd.
Er mwyn archwilio nodweddion cynwysyddion a'u cymharu â ffyrdd eraill o redeg cymwysiadau, gadewch i ni edrych ar enghraifft o wasanaethu cymhwysiad React gan ddefnyddio peiriant rhithwir a chynhwysydd.
▍Gwasanaethu ffeiliau statig o raglen React gan ddefnyddio peiriant rhithwir
Wrth geisio trefnu gwasanaeth ffeiliau statig gan ddefnyddio peiriannau rhithwir, byddwn yn dod ar draws yr anfanteision canlynol:
Defnydd aneffeithlon o adnoddau, gan fod pob peiriant rhithwir yn system weithredu lawn.
Dibyniaeth llwyfan. Efallai na fydd yr hyn sy'n gweithio ar gyfrifiadur lleol yn gweithio ar weinydd cynhyrchu.
Graddio datrysiad sy'n seiliedig ar beiriant rhithwir yn araf ac yn defnyddio llawer o adnoddau.
Gweinydd gwe Nginx yn gwasanaethu ffeiliau statig yn rhedeg ar beiriant rhithwir
Os defnyddir cynwysyddion i ddatrys problem debyg, yna, o gymharu â pheiriannau rhithwir, gellir nodi'r cryfderau canlynol:
Defnydd effeithlon o adnoddau: gweithio gyda'r system weithredu gan ddefnyddio Docker.
Llwyfan yn annibynnol. Bydd cynhwysydd y gall datblygwr ei redeg ar ei gyfrifiadur yn gweithio yn unrhyw le.
Defnydd ysgafn trwy ddefnyddio haenau delwedd.
Gweinydd gwe Nginx yn gwasanaethu ffeiliau statig yn rhedeg mewn cynhwysydd
Dim ond ar ychydig o bwyntiau y gwnaethom gymharu peiriannau rhithwir a chynwysyddion, ond mae hyn hyd yn oed yn ddigon i gael teimlad o gryfderau cynwysyddion. Yma Gallwch ddod o hyd i fanylion am gynwysyddion Docker.
▍ Adeiladu delwedd cynhwysydd ar gyfer cymhwysiad React
Bloc adeiladu sylfaenol cynhwysydd Docker yw'r ffeil Dockerfile. Ar ddechrau'r ffeil hon, gwneir cofnod o ddelwedd sylfaenol y cynhwysydd, yna mae dilyniant o gyfarwyddiadau sy'n nodi sut i greu cynhwysydd a fydd yn diwallu anghenion cais penodol.
Cyn i ni ddechrau gweithio gyda'r ffeil Dockerfile, gadewch i ni gofio'r hyn a wnaethom i baratoi'r ffeiliau cais React i'w huwchlwytho i weinydd Nginx:
Adeiladu pecyn cais React (npm run build).
Cychwyn y gweinydd Nginx.
Copïo cynnwys y cyfeiriadur build o ffolder prosiect sa-frontend i ffolder y gweinydd nginx/html.
Isod gallwch weld y tebygrwydd rhwng creu cynhwysydd a'r camau uchod a gyflawnir ar eich cyfrifiadur lleol.
▍ Paratoi'r Dockerfile ar gyfer y cais SA-Frontend
Y cyfarwyddiadau a fydd yn gynwysedig yn Dockerfile i'w gyflwyno SA-Frontend, yn cynnwys dim ond dau dîm. Y ffaith yw bod tîm datblygu Nginx wedi paratoi sylfaenol delwedd ar gyfer Nginx, y byddwn yn ei ddefnyddio i greu ein delwedd. Dyma’r ddau gam y mae angen i ni eu disgrifio:
Dylai sail y ddelwedd fod yn ddelwedd Nginx.
Cynnwys Ffolder sa-frontend/build angen eu copïo i'r ffolder delwedd nginx/html.
Os ewch chi o'r disgrifiad hwn i'r ffeil Dockerfile, yna bydd yn edrych fel hyn:
FROM nginx
COPY build /usr/share/nginx/html
Fel y gallwch weld, mae popeth yma yn syml iawn, ac mae cynnwys y ffeil hyd yn oed yn troi allan i fod yn eithaf darllenadwy a dealladwy. Mae'r ffeil hon yn dweud wrth y system i dynnu'r ddelwedd nginx gyda phopeth sydd ynddo eisoes, a chopïwch gynnwys y cyfeiriadur build i'r cyfeiriadur nginx/html.
Yma efallai y bydd gennych gwestiwn ynglŷn â sut rwy'n gwybod ble yn union y mae angen i chi gopïo ffeiliau o'r ffolder build, hynny yw, o ble y daeth y llwybr /usr/share/nginx/html. Mewn gwirionedd, nid oes unrhyw beth cymhleth yma ychwaith. Y ffaith yw y gellir dod o hyd i'r wybodaeth berthnasol yn disgrifiad delwedd.
▍Adeiladu'r ddelwedd a'i huwchlwytho i'r gadwrfa
Cyn y gallwn weithio gyda'r ddelwedd orffenedig, mae angen inni ei gwthio i'r storfa ddelwedd. I wneud hyn, byddwn yn defnyddio'r platfform cynnal delwedd cwmwl rhad ac am ddim Docker Hub. Ar y cam hwn o’r gwaith mae angen i chi wneud y canlynol:
Yma ac ymhellach mewn gorchmynion tebyg $DOCKER_USER_ID dylid ei ddisodli gan eich enw defnyddiwr Docker Hub. Er enghraifft, gallai'r rhan hon o'r gorchymyn edrych fel hyn: rinormaloku/sentiment-analysis-frontend.
Yn yr achos hwn, gellir byrhau'r gorchymyn hwn trwy dynnu ohono -f Dockerfile, gan fod y ffeil hon eisoes yn bodoli yn y ffolder yr ydym yn gweithredu'r gorchymyn hwn ynddo.
Er mwyn anfon y ddelwedd orffenedig i'r ystorfa, mae angen y gorchymyn canlynol arnom:
Ar ôl ei gwblhau, gwiriwch y rhestr o'ch ystorfeydd ar Docker Hub er mwyn deall a oedd uwchlwytho'r ddelwedd i'r storfa cwmwl yn llwyddiannus.
▍ Rhedeg cynhwysydd
Nawr gall unrhyw un lawrlwytho a rhedeg y ddelwedd, a elwir yn $DOCKER_USER_ID/sentiment-analysis-frontend. Er mwyn gwneud hyn, mae angen i chi redeg y dilyniant canlynol o orchmynion:
docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend
Nawr bod y cynhwysydd yn rhedeg, gallwn barhau i weithio trwy greu delweddau eraill sydd eu hangen arnom. Ond cyn i ni barhau, gadewch i ni ddeall y dyluniad 80:80, sy'n ymddangos yn y gorchymyn lansio delwedd a gall ymddangos yn ddryslyd.
Rhif cyntaf 80 — dyma rif y porth gwesteiwr (hynny yw, y cyfrifiadur lleol).
Ail rif 80 yw porthladd y cynhwysydd y dylid anfon y cais ato.
Ystyriwch yr enghraifft ganlynol.
Anfon Port
Mae'r system yn ailgyfeirio ceisiadau o'r porthladd <hostPort> i'r porthladd <containerPort>. Hynny yw, mynediad i'r porthladd 80 cyfrifiadur yn cael ei ailgyfeirio i'r porthladd 80 cynhwysydd.
Ers y porthladd 80 agor ar y cyfrifiadur lleol, yna gallwch gael mynediad at y cais o'r cyfrifiadur hwn yn localhost:80. Os nad yw'ch system yn cefnogi Docker, gellir rhedeg y rhaglen ar beiriant rhithwir Docker, y bydd ei gyfeiriad yn edrych fel <docker-machine ip>:80. I ddarganfod cyfeiriad IP peiriant rhithwir Docker, gallwch ddefnyddio'r gorchymyn docker-machine ip.
Ar y pwynt hwn, ar ôl lansio'r cynhwysydd cais pen blaen yn llwyddiannus, dylech allu agor ei dudalen yn y porwr.
▍ Y ffeil .dockerignore
Casglu delwedd cais SA-Frontend, gallem sylwi bod y broses hon yn troi allan i fod yn hynod o araf. Mae hyn yn digwydd oherwydd bod yn rhaid anfon y cyd-destun adeiladu delwedd i'r daemon Dociwr. Mae'r cyfeiriadur sy'n cynrychioli'r cyd-destun adeiladu wedi'i nodi fel dadl olaf y gorchymyn docker build. Yn ein hachos ni, mae dot ar ddiwedd y gorchymyn hwn. Mae hyn yn achosi i'r strwythur canlynol gael ei gynnwys yn y cyd-destun adeiladu:
Ond o'r holl ffolderi sy'n bresennol yma, dim ond y ffolder sydd ei angen arnom build. Mae llwytho unrhyw beth arall yn wastraff amser. Gallwch gyflymu'r gwaith adeiladu trwy ddweud wrth Docker pa gyfeiriaduron i'w hanwybyddu. Er mwyn gwneud hyn mae angen y ffeil arnom .dockerignore. Chi, os ydych chi'n gyfarwydd â'r ffeil .gitignore, mae'n debyg y bydd strwythur y ffeil hon yn ymddangos yn gyfarwydd. Mae'n rhestru cyfeiriaduron y gall y system adeiladu delweddau eu hanwybyddu. Yn ein hachos ni, mae cynnwys y ffeil hon yn edrych fel hyn:
node_modules
src
public
file .dockerignore rhaid iddo fod yn yr un ffolder â'r ffeil Dockerfile. Nawr bydd adeiladu'r ddelwedd yn cymryd ychydig eiliadau.
Gadewch i ni nawr weithio ar y ddelwedd ar gyfer y cymhwysiad Java.
▍ Adeiladu delwedd cynhwysydd ar gyfer cymhwysiad Java
Rydych chi'n gwybod beth, rydych chi eisoes wedi dysgu popeth sydd angen i chi ei wybod i greu delweddau cynhwysydd. Dyna pam y bydd yr adran hon yn fyr iawn.
Agorwch y ffeil Dockerfilesydd yn y ffolder prosiect sa-webapp. Os darllenwch destun y ffeil hon, dim ond dau luniad newydd a welwch ynddi, gan ddechrau gyda'r allweddeiriau ENV и EXPOSE:
Allweddair ENV Yn caniatáu ichi ddatgan newidynnau amgylchedd y tu mewn i gynwysyddion Docker. Yn benodol, yn ein hachos ni, mae'n caniatáu ichi nodi URL i gael mynediad at API y cais sy'n perfformio dadansoddiad testun.
Allweddair EXPOSE yn caniatáu ichi ddweud wrth Docker am agor porthladd. Rydyn ni'n mynd i ddefnyddio'r porthladd hwn wrth redeg y rhaglen. Yma gallwch chi sylwi bod yn Dockerfile i'w gyflwyno SA-Frontend nid oes gorchymyn o'r fath. Dim ond at ddibenion dogfennaeth y mae hyn, mewn geiriau eraill, mae'r lluniad hwn wedi'i fwriadu ar gyfer yr un a fydd yn darllen Dockerfile.
Mae adeiladu'r ddelwedd a'i gwthio i'r ystorfa yn edrych yn union yr un fath ag yn yr enghraifft flaenorol. Os nad ydych chi'n hyderus iawn yn eich galluoedd eto, mae'r gorchmynion cyfatebol i'w gweld yn y ffeil README.md mewn ffolder sa-webapp.
▍ Adeiladu delwedd cynhwysydd ar gyfer cymhwysiad Python
Os edrychwch ar gynnwys y ffeil Dockerfile mewn ffolder sa-logic, yna ni fyddwch yn dod o hyd i unrhyw beth newydd i chi'ch hun yno. Dylai'r gorchmynion ar gyfer adeiladu'r ddelwedd a'i hanfon i'r gadwrfa fod yn gyfarwydd i chi eisoes hefyd, ond, fel gyda'n cymwysiadau eraill, maent i'w cael yn y ffeil README.md mewn ffolder sa-logic.
▍ Profi cymwysiadau mewn cynhwysyddion
Allwch chi ymddiried yn rhywbeth nad ydych chi wedi'i brofi? Ni allaf hefyd. Gadewch i ni brofi ein cynwysyddion.
Gadewch i ni lansio'r cynhwysydd cais sa-logic a'i ffurfweddu i wrando ar y porthladd 5050:
docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
Gadewch i ni lansio'r cynhwysydd cais sa-webapp a'i ffurfweddu i wrando ar y porthladd 8080. Yn ogystal, mae angen i ni ffurfweddu'r porthladd y bydd y rhaglen Python yn gwrando arno am geisiadau o'r cymhwysiad Java trwy ailbennu'r newidyn amgylchedd SA_LOGIC_API_URL:
$ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app
I ddysgu sut i ddarganfod cyfeiriad IP cynhwysydd Docker neu beiriant rhithwir, cyfeiriwch at y ffeil README.
Gadewch i ni lansio'r cynhwysydd cais sa-frontend:
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend
Nawr mae popeth yn barod i fynd i'r cyfeiriad yn y porwr localhost:80 a rhowch gynnig ar y cais.
Sylwch, os gwnaethoch newid y porthladd ar gyfer sa-webapp, neu os ydych chi'n rhedeg peiriant rhithwir Docker, bydd angen i chi olygu'r ffeil App.js o'r ffolder sa-frontendtrwy newid y cyfeiriad IP neu rif porthladd yn y dull analyzeSentence(), rhoi gwybodaeth gyfredol yn lle data sydd wedi dyddio. Ar ôl hyn, mae angen i chi ailosod y ddelwedd a'i defnyddio.
Dyma sut olwg sydd ar ein diagram cais nawr.
Mae microwasanaethau'n rhedeg mewn cynwysyddion
Crynodeb: pam mae angen clwstwr Kubernetes arnom?
Rydym newydd archwilio'r ffeiliau Dockerfile, siaradodd am sut i adeiladu delweddau a'u gwthio i gadwrfa Docker. Yn ogystal, dysgon ni sut i gyflymu cydosod delweddau gan ddefnyddio'r ffeil .dockerignore. O ganlyniad, mae ein microwasanaethau bellach yn rhedeg mewn cynwysyddion Docker. Yma efallai bod gennych gwestiwn cwbl gyfiawn ynghylch pam mae angen Kubernetes arnom. Bydd ail ran y deunydd hwn yn cael ei neilltuo i ateb y cwestiwn hwn. Yn y cyfamser, ystyriwch y cwestiwn canlynol:
Gadewch i ni dybio bod ein cymhwysiad gwe ar gyfer dadansoddi testun wedi dod yn boblogaidd ledled y byd. Daw miliynau o geisiadau ato bob munud. Mae hyn yn golygu bod microservices sa-webapp и sa-logic bydd o dan lwyth enfawr. Sut i raddfa cynwysyddion sy'n rhedeg microwasanaethau?