Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers

Air an iarrtas againn, chruthaich Habr mòr-ionad Kubernetes agus tha sinn toilichte a' cheud fhoillseachadh a chur ann. Subscribe!

Tha Kubernetes furasta. Carson a tha bancaichean a 'pàigheadh ​​​​mòran airgid dhomh airson a bhith ag obair san raon seo, agus faodaidh duine sam bith an teicneòlas seo a mhaighstir ann am beagan uairean a thìde?

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers

Ma tha thu teagmhach gun gabh Kubernetes ionnsachadh cho luath, tha mi a’ moladh dhut feuchainn ri dhèanamh leat fhèin. Is e sin, às deidh dhut an stuth seo a mhaighstireachd, bidh e comasach dhut tagradh a ruith stèidhichte air microservices ann am buidheann Kubernetes. Is urrainn dhomh seo a ghealltainn, oir is ann san aon dòigh-obrach a bhios mi a’ cleachdadh an seo a bhios mi a ’teagasg ar luchd-dèiligidh mar a dh’ obraicheas iad le Kubernetes. Dè a tha a’ dèanamh an iùl seo eadar-dhealaichte bho dhaoine eile? Gu dearbh, tòrr rudan. Mar sin, bidh a 'mhòr-chuid de na stuthan sin a' tòiseachadh le mìneachadh air rudan sìmplidh - bun-bheachdan Kubernetes agus feartan an àithne kubectl. Tha ùghdaran nan artaigilean sin a’ gabhail ris gu bheil an leughadair aca eòlach air leasachadh thagraidhean, microservices, agus soithichean Docker. Thèid sinn an rathad eile. An toiseach, bruidhnidh sinn mu mar a ruitheas tu tagradh stèidhichte air microservices air coimpiutair. An uairsin seallaidh sinn ri bhith a’ togail ìomhaighean container airson gach microservice. Agus às deidh sin, gheibh sinn eòlas air Kubernetes agus nì sinn sgrùdadh air cleachdadh tagradh stèidhichte air microservices ann am buidheann air a riaghladh le Kubernetes.

Bheir an dòigh-obrach seo, le dòigh-obrach mean air mhean gu Kubernetes, an doimhneachd tuigse air na tha a 'tachairt a dh' fheumas an neach cuibheasach gus tuigsinn cho sìmplidh 'sa tha a h-uile càil air a rèiteachadh ann an Kubernetes. Tha Kubernetes gu cinnteach na theicneòlas sìmplidh, fhad ‘s a tha fios aig neach sam bith a tha airson a mhaighstireachd càite agus ciamar a thèid a chleachdadh.

A-nis, gun a bhith nas sine, rachamaid gu obair agus bruidhinn mun tagradh leis am bi sinn ag obair.

App deuchainneach

Cha dèan an tagradh againn ach aon ghnìomh. Gabhaidh e, mar chur-a-steach, aon seantans, às deidh sin, a’ cleachdadh innealan sgrùdaidh teacsa, bidh e a’ dèanamh mion-sgrùdadh faireachdainn den t-seantans seo, a’ faighinn measadh air sealladh tòcail ùghdar na seantans air nì sònraichte.

Seo cò ris a tha prìomh uinneag an tagraidh seo coltach.

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers
Iarrtas Lìn Mion-sgrùdadh Sentiment

Bho shealladh teignigeach, tha trì microservices san tagradh, agus bidh gach fear dhiubh a ’fuasgladh seata sònraichte de ghnìomhan:

  • Tha SA-Frontend na fhrithealaiche lìn Nginx a bhios a’ frithealadh faidhlichean statach React.
  • Is e tagradh lìn a th’ ann an SA-WebApp a chaidh a sgrìobhadh ann an Java a bhios a’ làimhseachadh iarrtasan bhon aghaidh.
  • Is e tagradh Python a th’ ann an SA-Logic a bhios a’ dèanamh mion-sgrùdadh faireachdainn teacsa.

Tha e cudromach cuimhneachadh nach eil microservices ann leotha fhèin. Bidh iad a 'cur an gnìomh a' bheachd air "sgaradh dhleastanasan", ach feumaidh iad, aig an aon àm, eadar-obrachadh le chèile.

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers
Bidh dàta a’ sruthadh san tagradh

Anns an dealbh gu h-àrd, chì thu na h-ìrean àireamhaichte den t-siostam, a’ sealltainn na sruthan dàta san tagradh. brisidh sinn sios iad :

  1. Iarraidh am brabhsair faidhle bhon fhrithealaiche index.html (a bhios an uair sin a’ luchdachadh pasgan app React).
  2. Bidh an neach-cleachdaidh ag eadar-obrachadh leis an aplacaid, bidh seo ag adhbhrachadh gairm gu tagradh lìn stèidhichte air an Earrach.
  3. Bidh an tagradh lìn a’ cur air adhart an iarrtas airson an teacsa a pharsadh gu tagradh Python.
  4. Bidh an tagradh Python a’ sgrùdadh faireachdainn an teacsa agus a ’tilleadh an toradh mar fhreagairt don iarrtas.
  5. Bidh tagradh an Earraich a’ cur freagairt don tagradh React (a tha, an uair sin, a’ sealltainn toradh an teacsa parsed don neach-cleachdaidh).

Gheibhear an còd airson na h-aplacaidean sin uile an seo. Tha mi a’ moladh gun dèan thu leth-bhreac den stòr seo thugad fhèin an-dràsta, leis gu bheil mòran dheuchainnean inntinneach air thoiseach oirnn.

A 'ruith iarrtas stèidhichte air microservices air an inneal ionadail

Gus an obraich an tagradh, feumaidh sinn na trì microservices a thòiseachadh. Feuch an tòisich sinn leis an fheadhainn as fheàrr dhiubh - an tagradh aghaidh aghaidh.

▍A’ stèidheachadh React airson leasachadh ionadail

Gus tagradh React a ruith, feumaidh tu frèam Node.js agus NPM a stàladh air do choimpiutair. Às deidh dhut a h-uile càil seo a chuir a-steach, rachaibh a ’cleachdadh an inneal-crìochnachaidh gu pasgan a’ phròiseict sa-frontend agus ruith an òrdugh a leanas:

npm install

Le bhith a’ cur an gnìomh an àithne seo sa phasgan node_modules thèid eisimeileachd an tagraidh React a luchdachadh, agus tha na clàran anns an fhaidhle package.json. Às deidh dhut na h-eisimeileachd a luchdachadh sìos san aon phasgan, ruith an àithne a leanas:

npm start

Sin e. Tha an app React a-nis a’ ruith agus gheibhear thuige le bhith a’ seòladh gu seòladh a’ bhrobhsair localhost:3000. Faodaidh tu rudeigin atharrachadh sa chòd aige. Chì thu sa bhad buaidh nan atharrachaidhean sin sa bhrobhsair. Tha seo comasach le taing don cho-ainm “teth” de mhodalan. Taing dha seo, tha leasachadh aghaidh a’ tionndadh gu bhith na eòlas sìmplidh agus tlachdmhor.

▍ Ag ullachadh app React airson cinneasachadh

Airson adhbharan a bhith a’ cleachdadh app React, feumaidh sinn a thionndadh gu seata de fhaidhlichean statach agus an seirbheiseachadh do luchd-dèiligidh a’ cleachdadh frithealaiche lìn.

Gus an aplacaid React a thogail, a-rithist a’ cleachdadh an inneal-crìochnachaidh, gluais chun phasgan sa-frontend agus ruith an òrdugh a leanas:

npm run build

Cruthaichidh seo eòlaire ann am pasgan a’ phròiseict build. Bidh e a’ toirt a-steach a h-uile faidhle statach a dh ’fheumar gus an obraich an tagradh React.

▍ A’ frithealadh fhaidhlichean statach le Nginx

An toiseach feumaidh tu frithealaiche lìn Nginx a stàladh agus a ruith. tha e faodaidh tu a luchdachadh sìos agus stiùireadh a lorg airson a stàladh agus a ruith. An uairsin feumaidh tu lethbhreac a dhèanamh de shusbaint a’ phasgan sa-frontend/build gu pasgan [your_nginx_installation_dir]/html.

Leis an dòigh-obrach seo, chaidh am faidhle a chruthachadh nuair a chaidh an tagradh React a cho-chruinneachadh index.html bidh e ri fhaighinn aig [your_nginx_installation_dir]/html/index.html. Is e seo am faidhle a bhios, gu bunaiteach, an fhrithealaiche Nginx a’ toirt a-mach nuair a gheibh thu cothrom air. Tha am frithealaiche air a rèiteachadh gus èisteachd air port 80, ach faodaidh tu a ghnàthachadh mar a tha thu ag iarraidh le bhith a’ deasachadh an fhaidhle [your_nginx_installation_dir]/conf/nginx.conf.

A-nis fosgail do bhrobhsair agus rach gu localhost:80. Chì thu duilleag app React.

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers
React app air a fhrithealadh le frithealaiche Nginx

Ma chuireas tu a-steach rudeigin san raon a-nis Type your sentence agus brùth air a’ phutan Send - cha tachair dad. Ach, ma choimheadas tu air a’ chonsail, chì thu teachdaireachdan mearachd an sin. Gus tuigse fhaighinn air dìreach far a bheil na mearachdan sin a’ tachairt, leig dhuinn sgrùdadh a dhèanamh air còd an tagraidh.

▍ Mion-sgrùdadh air còd an tagraidh aghaidh

A 'coimhead air còd an fhaidhle App.js, chì sinn sin a 'briogadh air a' phutan Send gairm modh analyzeSentence(). Tha an còd airson an dòigh seo air a shealltainn gu h-ìosal. Aig an aon àm, aire a thoirt don fhìrinn gu bheil airson gach loidhne ris a bheil beachd air an fhoirm # Номер, tha mìneachadh air a thoirt seachad fon chòd. San aon dòigh, rannsaichidh sinn pìosan còd eile.

analyzeSentence() {
    fetch('http://localhost:8080/sentiment', {  // #1
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
                       sentence: this.textField.getValue()})// #2
    })
        .then(response => response.json())
        .then(data => this.setState(data));  // #3
}

1. An URL dhan tèid an t-iarrtas POST a dhèanamh. Thathas a’ gabhail ris gur e tagradh a tha a’ feitheamh ris na h-iarrtasan sin a tha san t-seòladh seo.

2.Chuir am buidheann tagraidh chun an tagraidh. Seo eisimpleir de bhuidheann iarrtais:

{
    sentence: "I like yogobella!"
}

3.Nuair a gheibhear freagairt do iarrtas, thèid staid na co-phàirt ùrachadh. Tha seo ag adhbhrachadh gum bi am pàirt air a thoirt seachad a-rithist. Ma gheibh sinn dàta (is e sin, nì JSON anns a bheil an dàta a chaidh a chuir a-steach agus an sgòr teacsa àireamhaichte), cuiridh sinn a-mach am pàirt Polarityfhad ‘s a tha na cumhaichean air an coileanadh. Seo mar a mhìnicheas sinn am pàirt:

const polarityComponent = this.state.polarity !== undefined ?
    <Polarity sentence={this.state.sentence} 
              polarity={this.state.polarity}/> :
    null;

Tha e coltach gu bheil an còd ag obair gu math. Dè tha ceàrr an seo, co-dhiù? Ma ghabhas tu ris, aig an t-seòladh chun a bheil an tagradh a’ feuchainn ri iarrtas POST a chuir, nach eil dad ann fhathast as urrainn gabhail ris an iarrtas seo agus a phròiseasadh, bidh thu gu tur ceart. Is e sin, gus iarrtasan a thig chun t-seòlaidh a phròiseasadh http://localhost:8080/sentiment, feumaidh sinn tagradh lìn a ruith stèidhichte air an Earrach.

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers
Feumaidh sinn iarrtas Earrach a ghabhas ri iarrtas POST

▍ A’ stèidheachadh tagradh lìn stèidhichte air an Earrach

Gus tagradh Earraich a chuir a-steach, feumaidh tu JDK8 agus Maven agus caochladairean àrainneachd a tha air an rèiteachadh gu ceart. Às deidh dhut seo a chuir a-steach, faodaidh tu leantainn air adhart ag obair air a’ phròiseact againn.

▍ A’ pacadh an tagradh a-steach do fhaidhle jar

Seòl, a’ cleachdadh a’ chrìoch, chun phasgan sa-webapp agus cuir a-steach an òrdugh a leanas:

mvn install

Às deidh an àithne seo a chuir an gnìomh sa phasgan sa-webapp thèid eòlaire a chruthachadh target. Seo far am bi an tagradh Java suidhichte, air a phacaigeadh ann am faidhle jar, air a riochdachadh leis an fhaidhle sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

▍ A’ cur air bhog Iarrtas Java

Rach don phasgan target agus ruith an tagradh leis an òrdugh a leanas:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar

Bidh mearachd a’ tachairt nuair a thathar a’ cur an gnìomh an àithne seo. Gus tòiseachadh air a chàradh, is urrainn dhuinn mion-fhiosrachadh an eisgeachd a sgrùdadh ann an dàta lorg stac:

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}"

Dhuinne, is e an rud as cudromaiche an seo an iomradh air cho neo-chomasach ‘s a tha e an ciall a shoilleireachadh sa.logic.api.url. Dèanamaid sgrùdadh air a 'chòd far a bheil a' mhearachd a 'tachairt.

▍ Mion-sgrùdadh còd tagraidh Java

Seo an criomag còd far a bheil a’ mhearachd a’ tachairt.

@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();
    }
}

  1. Ann an SentimentController tha achadh saLogicApiUrl. Tha a luach air a shuidheachadh leis an togalach sa.logic.api.url.
  2. Loidhne saLogicApiUrl co-cheangailte ri luach /analyse/sentiment. Còmhla bidh iad a’ cruthachadh seòladh airson fios a chuir chun microservice a bhios a’ dèanamh mion-sgrùdadh teacsa.

▍ A’ suidheachadh luach seilbh

As t-Earrach, is e faidhle bunaiteach luachan seilbh application.properties, a gheibhear aig sa-webapp/src/main/resources. Ach chan e a bhith ga chleachdadh an aon dòigh air luachan seilbh a shuidheachadh. Faodaidh tu seo a dhèanamh cuideachd leis an òrdugh a leanas:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URL

Bu chòir luach an togalaich seo a bhith a’ comharrachadh seòladh an tagraidh Python againn.

Le bhith ga rèiteachadh, bidh sinn ag innse don tagradh lìn Spring far am feum e a dhol gus iarrtasan parsaidh teacsa a chuir an gnìomh.

Gus nach bi ar beatha iom-fhillte, co-dhùinidh sinn gum bi an tagradh Python ri fhaighinn aig localhost:5000 agus feuch gun a bhith a 'dìochuimhneachadh mu dheidhinn. Mar thoradh air an sin, seallaidh an àithne airson tagradh an Earraich a thòiseachadh mar seo:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers
Tha an siostam againn ag ionndrainn tagradh Python

A-nis chan eil againn ach an tagradh Python a ruith agus obraichidh an siostam mar a bhiodh dùil.

▍ A’ stèidheachadh tagradh Python

Gus tagradh Python a ruith, feumaidh Python 3 agus Pip a bhith agad, agus feumaidh na caochladairean àrainneachd iomchaidh a bhith air an suidheachadh gu ceart.

▍Stàlaich eisimeileachd

Rach gu pasgan pròiseict sa-logic/sa agus ruith na h-òrdughan a leanas:

python -m pip install -r requirements.txt
python -m textblob.download_corpora

▍ Cur air bhog app

Leis na h-eisimeileachdan air an stàladh, tha sinn deiseil airson an tagradh a ruith:

python sentiment_analysis.py

Às deidh dhuinn an àithne seo a chuir an gnìomh, thèid innse dhuinn na leanas:

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

Tha seo a 'ciallachadh gu bheil an tagradh a' ruith agus a 'feitheamh airson iarrtasan aig localhost:5000/

▍ Rannsachadh còd

Bheir sinn sùil air còd tagraidh Python gus tuigse fhaighinn air mar a fhreagras e iarrtasan:

from textblob import TextBlob
from flask import Flask, request, jsonify
app = Flask(__name__)                                   #1
@app.route("/analyse/sentiment", methods=['POST'])      #2
def analyse_sentiment():
    sentence = request.get_json()['sentence']           #3
    polarity = TextBlob(sentence).sentences[0].polarity #4
    return jsonify(                                     #5
        sentence=sentence,
        polarity=polarity
    )
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)                #6

  1. Toiseach tòiseachaidh cuspair Flask.
  2. A’ sònrachadh an t-seòlaidh airson iarrtasan POST a dhèanamh thuige.
  3. A 'faighinn seilbh air ais sentence bho bhuidheann an iarrtais.
  4. Tòiseachadh nì gun urra TextBlob agus a' faighinn luach polarity airson a’ chiad mholadh a gheibhear ann am bodhaig an iarrtais (anns a’ chùis againn, is e seo an aon mholadh a chaidh a chuir a-steach airson mion-sgrùdadh).
  5. A’ tilleadh freagairt, anns a’ bhodhaig tha teacsa na tairgse agus an comharra air a thomhas air a shon polarity.
  6. A’ cur air bhog an tagradh Flask, a bhios ri fhaighinn aig 0.0.0.0:5000 (faodaidh tu cuideachd faighinn thuige le bhith a’ cleachdadh togail den fhoirm localhost:5000).

A-nis tha na microservices a tha a ’dèanamh suas an tagradh a’ ruith. Tha iad deiseil airson eadar-obrachadh le chèile. Seo mar a tha an diagram tagraidh coltach aig an ìre obrach seo.

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers
Tha a h-uile microservices a tha a’ dèanamh suas an tagradh air a thoirt gu staid fhallain

A-nis, mus lean sinn air adhart, fosgail an app React ann am brabhsair agus feuch ri seantans a pharsadh leis. Ma thèid a h-uile càil a dhèanamh ceart - an dèidh putadh air a 'phutan Send chì thu toraidhean an anailis fon bhogsa teacsa.

Anns an ath earrainn, bruidhnidh sinn mu mar a ruitheas sinn ar microservices ann an soithichean Docker. Tha seo riatanach gus an tagradh ullachadh airson ruith ann am buidheann Kubernetes.

Soithichean docker

Kubernetes na shiostam airson fèin-ghluasad a dhèanamh air cleachdadh, sgèileadh agus riaghladh thagraidhean soithich. Tha e cuideachd air ainmeachadh mar "container orchestrator". Ma bhios Kubernetes ag obair le soithichean, an uairsin mus cleachd sinn an siostam seo, feumaidh sinn na soithichean sin fhaighinn an-toiseach. Ach an toiseach, bruidhnidh sinn mu dè a th 'ann an soithichean. Is dòcha gur e am freagairt as fheàrr don cheist dè a th’ ann sgrìobhainnean gu Docker:

Tha ìomhaigh container na phasgan aotrom, fèin-chumanta, so-ghnìomhaichte anns a bheil tagradh, anns a bheil a h-uile dad a tha riatanach airson a ruith: còd tagraidh, àrainneachd ùine ruith, innealan siostaim agus leabharlannan, suidheachaidhean. Faodar prògraman gleidhidh a chleachdadh an dà chuid ann an àrainneachdan Linux agus Windows agus obraichidh iad an aon rud ge bith dè am bun-structair.

Tha seo a’ ciallachadh gum faodar soithichean a ruith air coimpiutair sam bith, a’ toirt a-steach frithealaichean cinneasachaidh, agus ann an àrainneachd sam bith, obraichidh na tagraidhean a tha annta san aon dòigh.

Gus feartan soithichean a sgrùdadh agus an coimeas ri dòighean eile air tagraidhean a ruith, leig dhuinn sùil a thoirt air an eisimpleir de bhith a ’frithealadh tagradh React a’ cleachdadh inneal brìgheil agus soitheach.

▍ A’ frithealadh fhaidhlichean statach de thagradh React a’ cleachdadh inneal brìgheil

A’ feuchainn ri cumail suas fhaidhlichean statach a chuir air dòigh a’ cleachdadh innealan brìgheil, thig sinn tarsainn air na h-eas-bhuannachdan a leanas:

  1. Cleachdadh neo-èifeachdach de ghoireasan, leis gu bheil gach inneal brìgheil na shiostam obrachaidh iomlan.
  2. An urra ri àrd-ùrlar. Is dòcha nach obraich na tha ag obair air cuid de choimpiutair ionadail air frithealaiche riochdachaidh.
  3. Sgèileadh slaodach agus làn ghoireasan air fuasgladh inneal brìgheil.

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers
Frithealaiche lìn Nginx a ’frithealadh faidhlichean statach a’ ruith ann an inneal brìgheil

Ma thèid soithichean a chleachdadh gus fuasgladh fhaighinn air duilgheadas coltach ris, an uairsin, an taca ri innealan brìgheil, faodar na neartan a leanas a thoirt fa-near:

  1. Cleachdadh èifeachdach de ghoireasan: obraich leis an t-siostam obrachaidh a’ cleachdadh Docker.
  2. Neo-eisimeileachd àrd-ùrlar. Ruithidh soitheach a dh'fhaodas leasaiche a ruith air a 'choimpiutair aca fhèin àite sam bith.
  3. Cleachdadh aotrom tro bhith a’ cleachdadh sreathan ìomhaigh.

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers
Frithealaiche lìn Nginx a ’frithealadh faidhlichean statach a’ ruith ann an soitheach

Cha do rinn sinn ach coimeas eadar innealan brìgheil agus soithichean air beagan phuingean, ach tha eadhon sin gu leòr airson faireachdainn fhaighinn mu neartan shoithichean. tha e Gheibh thu mion-fhiosrachadh mu shoithichean Docker.

▍ A’ togail ìomhaigh container airson app React

Is e am bloc togail bunaiteach de shoitheach Docker am faidhle Dockerfile. Aig toiseach an fhaidhle seo, tha ìomhaigh bunaiteach den t-soitheach air a chlàradh, agus an uairsin tha sreath de stiùiridhean air a thoirt a-steach a ’sealltainn mar a chruthaicheas tu soitheach a choinnicheas ri feumalachdan tagraidh.

Mus tòisich sinn ag obair leis an fhaidhle Dockerfile, cuimhnich na rinn sinn gus faidhlichean an tagraidh React ullachadh airson an luchdachadh suas gu frithealaiche Nginx:

  1. A’ togail pasgan app React (npm run build).
  2. A 'tòiseachadh air an fhrithealaiche Nginx.
  3. A’ dèanamh lethbhreac de shusbaint eòlaire build bho phasgan pròiseict sa-frontend gu pasgan an fhrithealaiche nginx/html.

Gu h-ìosal chì thu na co-shìntean eadar cruthachadh soitheach agus na gnìomhan gu h-àrd a chaidh a dhèanamh air a’ choimpiutair ionadail.

▍ Ag ullachadh Dockerfile airson an Iarrtas SA-Frontend

Stiùireadh ri thoirt a-steach Dockerfile airson tagradh SA-Frontend, air a dhèanamh suas de dìreach dà àithne. Is e an fhìrinn gu bheil sgioba leasachaidh Nginx air bunait ullachadh ìomhaigh airson Nginx, a chleachdas sinn gus ar n-ìomhaigh a thogail. Seo an dà cheum a dh'fheumas sinn a mhìneachadh:

  1. Feumaidh tu ìomhaigh Nginx a dhèanamh mar bhunait don ìomhaigh.
  2. Susbaint pasgan sa-frontend/build feumaidh tu lethbhreac a dhèanamh dhan phasgan ìomhaigh nginx/html.

Ma thèid sinn bhon tuairisgeul seo chun an fhaidhle Dockerfile, an uairsin seallaidh e mar seo:

FROM nginx
COPY build /usr/share/nginx/html

Mar a chì thu, tha a h-uile dad an seo gu math sìmplidh, agus tha susbaint an fhaidhle eadhon gu math furasta a leughadh agus a thuigsinn. Tha am faidhle seo ag innse don t-siostam an dealbh a thogail nginx leis a h-uile dad a th’ ann mu thràth, agus dèan lethbhreac de shusbaint an eòlaire build dhan eòlaire nginx/html.

An seo is dòcha gu bheil ceist agad a thaobh mar a tha fios agam càite dìreach airson na faidhlichean a chopaigeadh bhon phasgan build, i.e. cò às a thàinig an t-slighe /usr/share/nginx/html. Gu dearbh, chan eil dad iom-fhillte an seo an dàrna cuid. Is e an fhìrinn gum faighear am fiosrachadh buntainneach ann an tuairisgeul dealbh.

▍ A’ cruinneachadh an ìomhaigh agus ga luchdachadh suas chun stòr

Mus urrainn dhuinn obrachadh le ìomhaigh crìochnaichte, feumaidh sinn a chuir a-steach don stòr ìomhaigh. Gus seo a dhèanamh, cleachdaidh sinn an àrd-ùrlar aoigheachd ìomhaigh stèidhichte air sgòthan Docker Hub. Aig an ìre seo den obair, feumaidh tu na leanas a dhèanamh:

  1. Stàlaich Docker.
  2. Clàraich air làrach Docker Hub.
  3. Log a-steach don chunntas agad le bhith a’ ruith an àithne a leanas anns a’ chrìoch:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

A-nis feumaidh tu, a 'cleachdadh an inneal-crìochnachaidh, a dhol chun an eòlaire sa-frontend agus ruith an àithne a leanas an sin:

docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend .

An seo agus gu h-ìosal ann an òrdughan coltach ris $DOCKER_USER_ID bu chòir an t-ainm-cleachdaidh agad air Docker Hub a chuir na àite. Mar eisimpleir, is dòcha gum bi am pàirt seo den àithne a’ coimhead mar seo: rinormaloku/sentiment-analysis-frontend.

Anns a 'chùis seo, faodar an òrdugh seo a ghiorrachadh le bhith a' toirt air falbh bhuaithe -f Dockerfile, leis gu bheil am pasgan sa bheil sinn a’ cur an gnìomh an àithne seo air a bheil am faidhle seo mu thràth.

Gus an dealbh chrìochnaichte a chuir chun stòr, feumaidh sinn an òrdugh a leanas:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

Às deidh dhut a chrìochnachadh, thoir sùil air an liosta de stòran agad air Docker Hub gus faicinn an deach an ìomhaigh a phutadh gu soirbheachail gu stòradh neòil.

▍ A’ tòiseachadh soitheach

A-nis faodaidh duine sam bith an ìomhaigh ris an canar a luchdachadh sìos agus a ruith $DOCKER_USER_ID/sentiment-analysis-frontend. Gus seo a dhèanamh, feumaidh tu an t-sreath òrdughan a leanas a ruith:

docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

A-nis tha an soitheach a’ ruith, agus is urrainn dhuinn cumail oirnn ag obair le bhith a’ cruthachadh ìomhaighean eile a dh’ fheumas sinn. Ach mus lean sinn air adhart, tuigidh sinn an dealbhadh 80:80, a lorgar san àithne airson an ìomhaigh a ruith agus a dh’ fhaodadh a bhith troimh-chèile.

  • A’ chiad àireamh 80 is e àireamh port an òstair (is e sin, an coimpiutair ionadail).
  • An dàrna àireamh 80 is e port an t-soithich a bu chòir an t-iarrtas ath-stiùireadh.

Beachdaich air an dealbh a leanas.

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers
Port air adhart

Bidh an siostam a’ toirt air adhart iarrtasan bhon phort <hostPort> gach port <containerPort>. Is e sin, faighinn chun phort 80 coimpiutair air ath-stiùireadh gu port 80 soitheach.

Air sgàth am port 80 fhosgladh air a’ choimpiutair ionadail, gheibh thu cothrom air an aplacaid bhon choimpiutair seo aig localhost:80. Mura h-eil an siostam agad a’ toirt taic do Docker, faodaidh tu an tagradh a ruith air inneal brìgheil Docker, agus bidh an seòladh aige coltach <docker-machine ip>:80. Gus faighinn a-mach seòladh IP inneal brìgheil Docker, faodaidh tu an àithne a chleachdadh docker-machine ip.

Aig an ìre seo, aon uair ‘s gu bheil an inneal-aghaidh app aghaidh air a chuir air bhog gu soirbheachail, bu chòir dhut a bhith comasach air an duilleag aige fhosgladh ann am brobhsair.

▍.dockerigore faidhle

A 'togail ìomhaigh an aplacaid SA-Frontend, dh’ fhaodadh sinn mothachadh gu bheil am pròiseas seo gu math slaodach. Tha seo air sgàth gu feumar co-theacsa togail ìomhaigh a chuir gu daemon an Docker. Tha an eòlaire a tha a’ riochdachadh a’ cho-theacsa togail air a thoirt seachad mar an argamaid mu dheireadh don àithne docker build. Anns a 'chùis againn, tha dot aig deireadh na h-àithne seo. Tha seo a’ ciallachadh gu bheil an structar a leanas air a ghabhail a-steach ann an co-theacs a’ cho-chruinneachaidh:

sa-frontend:
|   .dockerignore
|   Dockerfile
|   package.json
|   README.md
+---build
+---node_modules
+---public
---src

Ach de na pasganan uile a tha an làthair, chan fheum sinn ach pasgan build. Tha luchdachadh sìos rud sam bith eile na chaitheamh ùine. Faodaidh tu an togail a luathachadh le bhith ag innse do Docker dè na clàran a bu chòir dhut dearmad a dhèanamh. Gus seo a dhèanamh, feumaidh sinn faidhle .dockerignore. Thusa, ma tha thu eòlach air an fhaidhle .gitignore, is dòcha gum bi coltas eòlach air structar an fhaidhle seo. Tha e a’ liostadh chlàran a dh’ fhaodas an siostam togail dhealbhan a leigeil seachad. Anns a’ chùis againn, tha susbaint an fhaidhle seo a’ coimhead mar seo:

node_modules
src
public

faidhl .dockerignore feumaidh a bhith san aon phasgan ris an fhaidhle Dockerfile. A-nis bheir co-chruinneachadh na h-ìomhaigh beagan dhiog.

Bruidhnidh sinn a-nis ris an ìomhaigh airson tagradh Java.

▍ A’ togail ìomhaigh container airson tagradh Java

Tha fios agad dè, agus tha thu air ionnsachadh mu thràth a h-uile dad a dh ’fheumas tu gus ìomhaighean container a chruthachadh. Sin as coireach gum bi an roinn seo gu math goirid.

Fosgail am faidhle Dockerfile, a tha suidhichte ann am pasgan a’ phròiseict sa-webapp. Ma leughas tu teacsa an fhaidhle seo, an uairsin cha choinnich thu ach dà dhealbh ùr a thòisicheas le prìomh fhaclan ENV и EXPOSE:

ENV SA_LOGIC_API_URL http://localhost:5000
…
EXPOSE 8080

Faclan-luirg ENV a’ leigeil leat caochladairean àrainneachd ainmeachadh taobh a-staigh soithichean Docker. Gu sònraichte, anns a ’chùis againn, leigidh e leat URL a shuidheachadh gus faighinn gu API an tagraidh a bhios a’ dèanamh mion-sgrùdadh teacsa.

Faclan-luirg EXPOSE a’ leigeil leat innse do Docker port fhosgladh. Tha sinn gu bhith a’ cleachdadh a’ phort seo agus sinn ag obair leis an aplacaid. An seo chì thu sin ann an Dockerfile airson tagradh SA-Frontend chan eil a leithid de àithne ann. Tha seo airson adhbharan sgrìobhainnean a-mhàin, ann am faclan eile, tha an togalach seo airson an leughadair Dockerfile.

Tha togail na h-ìomhaigh agus ga phutadh chun an stòr a’ coimhead dìreach mar an eisimpleir roimhe. Mura h-eil thu fhathast glè mhisneachail anns na comasan agad, gheibhear na h-òrdughan co-fhreagarrach san fhaidhle README.md ann am pasgan sa-webapp.

▍ A’ togail ìomhaigh container airson tagradh Python

Ma bheir thu sùil air susbaint an fhaidhle Dockerfile ann am pasgan sa-logicchan fhaigh thu dad ùr an sin. Bu chòir dhut cuideachd a bhith eòlach air na h-òrdughan airson an ìomhaigh a thogail agus a phutadh chun stòr, ach, mar a tha fìor leis na tagraidhean eile againn, gheibhear iad san fhaidhle README.md ann am pasgan sa-logic.

▍ A’ dèanamh deuchainn air tagraidhean container

An urrainn dhut earbsa a bhith agad ann an rudeigin nach do rinn thu deuchainn? Chan urrainn dhomh cuideachd. Feuch an dèan sinn deuchainn air na soithichean againn.

  1. Feuch an tòisich sinn air an inneal tagraidh sa-logic agus rèitich e gus èisteachd air port 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. Feuch an tòisich sinn air an inneal tagraidh sa-webapp agus rèitich e gus èisteachd air port 8080. A bharrachd air an sin, feumaidh sinn am port a shuidheachadh air an èist an tagradh Python airson iarrtasan bhon tagradh Java le bhith ag ath-shònrachadh caochladair na h-àrainneachd 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

Gus ionnsachadh mar a gheibh thu a-mach seòladh IP soitheach no Docker VM, thoir sùil air an fhaidhle LEASACHADH.

Feuch an tòisich sinn air an inneal tagraidh sa-frontend:

docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

A-nis tha a h-uile dad deiseil airson seòladh sa bhrobhsair chun t-seòladh localhost:80 agus dèan deuchainn air an aplacaid.

Thoir an aire ma dh'atharraicheas tu am port airson sa-webapp, no ma tha thu a’ ruith Docker VM, feumaidh tu am faidhle a dheasachadh App.js bho phasgan sa-frontendle bhith ag atharrachadh an seòladh IP no àireamh port san dòigh analyzeSentence()le bhith a’ cur fiosrachadh làithreach an àite dàta a tha air a dhol à bith. Às deidh sin, feumaidh tu an ìomhaigh ath-chruinneachadh agus a chleachdadh.

Seo mar a tha an diagram tagraidh againn coltach a-nis.

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers
Bidh microservices a 'ruith ann an soithichean

Geàrr-chunntas: carson a tha feum againn air buidheann Kubernetes?

Tha sinn dìreach air ath-sgrùdadh a dhèanamh air na faidhlichean Dockerfile, bhruidhinn e air mar a thogas tu ìomhaighean agus am putadh gu stòr Docker. A bharrachd air an sin, dh’ ionnsaich sinn mar as urrainn dhuinn cruinneachadh dhealbhan a luathachadh a’ cleachdadh an fhaidhle .dockerignore. Mar thoradh air an sin, tha na microservices againn a-nis a’ ruith ann an soithichean Docker. An seo is dòcha gu bheil ceist gu tur reusanta agad mu carson a tha feum againn air Kubernetes. Thèid am freagairt don cheist seo a thoirt don dàrna pàirt den stuth seo. Anns an eadar-ama, beachdaich air a’ cheist a leanas:
Gabhamaid ris gu bheil an tagradh lìn anailis teacsa againn air fàs mòr-chòrdte air feadh an t-saoghail. Bidh milleanan de dh'iarrtasan a 'tighinn thuige gach mionaid. Tha seo a 'ciallachadh gu bheil microservices sa-webapp и sa-logic bidh e fo uallach mòr. Ciamar a nì thu sgèile air soithichean a bhios a’ ruith microservices?

Kubernetes Oideachadh Pàirt 1: Tagraidhean, Microservices, agus Containers

Source: www.habr.com

Cuir beachd ann