Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin

Ar iarratas uainne, chruthaigh Habr mol Kubernetes agus tá áthas orainn an chéad fhoilseachán a chur ann. Liostáil!

Tá Kubernetes éasca. Cén fáth a n-íocann bainc a lán airgid dom a bheith ag obair sa réimse seo, agus is féidir le duine ar bith an teicneolaíocht seo a mháistir i gceann cúpla uair an chloig?

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin

Má tá amhras ort gur féidir Kubernetes a fhoghlaim chomh tapa sin, molaim duit iarracht a dhéanamh é a dhéanamh leat féin. Is é sin, tar éis máistreacht a fháil ar an ábhar seo, beidh tú in ann feidhmchlár a rith bunaithe ar mhicrisheirbhísí i mbraisle Kubernetes. Is féidir liom é seo a ráthú, toisc go bhfuil sé sa mhodheolaíocht chéanna a úsáidim anseo a mhúineann mé dár gcliaint conas oibriú le Kubernetes. Cad a dhéanann an treoir seo difriúil ó chinn eile? I ndáiríre, a lán rudaí. Mar sin, tosaíonn an chuid is mó de na hábhair seo le míniú ar rudaí simplí - coincheapa Kubernetes agus gnéithe an ordaithe kubectl. Glacann údair na n-alt seo leis go bhfuil a léitheoir eolach ar fhorbairt feidhmchlár, ar mhicrisheirbhísí, agus ar choimeádáin Docker. Rachaimid an bealach eile. Ar dtús, déanaimis labhairt faoi conas feidhmchlár a reáchtáil bunaithe ar mhicrisheirbhísí ar ríomhaire. Ansin féachfaimid ar íomhánna coimeádáin a thógáil do gach microservice. Agus ina dhiaidh sin, cuirfimid aithne ar Kubernetes agus déanfaimid anailís ar imscaradh feidhmchlár bunaithe ar mhicrisheirbhísí i mbraisle arna bhainistiú ag Kubernetes.

Tabharfaidh an cur chuige seo, le cur chuige de réir a chéile ar Kubernetes, an doimhneacht tuisceana ar cad atá ag tarlú a theastaíonn ón duine meánach chun tuiscint a fháil ar chomh simplí agus atá gach rud socraithe i Kubernetes. Is cinnte gur teicneolaíocht shimplí é Kubernetes, ar choinníoll go bhfuil a fhios ag cibé duine atá ag iarraidh é a mháistir cén áit agus conas a úsáidtear é.

Anois, gan a thuilleadh moille, déanaimis dul ag obair agus labhairt faoin bhfeidhmchlár a mbeimid ag obair leis.

Aip turgnamhach

Ní dhéanfaidh ár n-iarratas ach feidhm amháin. Tógann sé, mar ionchur, abairt amháin, agus ina dhiaidh sin, ag baint úsáide as uirlisí anailíse téacs, déanann sé anailís sentiment ar an abairt seo, ag fáil measúnú ar dhearcadh mhothúchánach údar na habairte ar rud áirithe.

Seo an chuma atá ar phríomhfhuinneog an fheidhmchláir seo.

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin
Feidhmchlár Gréasáin Anailís Mothúchán

Ó thaobh teicniúil de, tá trí mhicrisheirbhísí san iarratas, agus réitíonn gach ceann acu sraith áirithe tascanna:

  • Is freastalaí gréasáin Nginx é SA-Frontend a fhreastalaíonn ar chomhaid statacha React.
  • Is feidhmchlár gréasáin é SA-WebApp scríofa i Java a láimhseálann iarratais ón aghaidh.
  • Is feidhmchlár Python é SA-Logic a dhéanann anailís ar mheon téacs.

Tá sé tábhachtach a thabhairt faoi deara nach ann do mhicreasheirbhísí ina n-aonar. Cuireann siad an smaoineamh ar "scaradh dualgas" i bhfeidhm, ach ní mór dóibh, ag an am céanna, idirghníomhú lena chéile.

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin
Sreafaí sonraí san fheidhmchlár

Sa léaráid thuas, is féidir leat céimeanna uimhrithe an chórais a fheiceáil, rud a léiríonn na sreafaí sonraí san iarratas. Déanaimis iad a bhriseadh síos:

  1. Iarrann an brabhsálaí comhad ón bhfreastalaí index.html (a lódálann sé sin an pacáiste aip React).
  2. Idirghníomhaíonn an t-úsáideoir leis an bhfeidhmchlár, cuireann sé seo glaoch ar fheidhmchlár gréasáin bunaithe ar an Earrach.
  3. Cuireann an feidhmchlár gréasáin iarratas ar aghaidh chun an téacs a pharsáil chuig an bhfeidhmchlár Python.
  4. Déanann feidhmchlár Python anailís ar mheon an téacs agus seolann sé an toradh ar ais mar fhreagra ar an iarratas.
  5. Seolann feidhmchlár Spring freagra ar an bhfeidhmchlár React (a thaispeánann, ar a sheal, toradh an téacs parsáilte chuig an úsáideoir).

Is féidir an cód do na feidhmchláir seo go léir a fháil anseo. Molaim duit an stór seo a chóipeáil chugat féin faoi láthair, mar tá go leor turgnaimh shuimiúla amach romhainn.

Feidhmchlár a rith bunaithe ar mhicreasheirbhísí ar an meaisín áitiúil

Ionas go n-oibreoidh an t-iarratas, ní mór dúinn na trí mhicrisheirbhísí a thosú. Let tús leis an deise acu - an t-iarratas tosaigh-deireadh.

▍ Ag bunú React d'fhorbairt áitiúil

Chun feidhmchlár React a rith, ní mór duit creat Node.js agus NPM a shuiteáil ar do ríomhaire. Tar éis duit é seo go léir a shuiteáil, téigh ag baint úsáide as an teirminéal chuig an bhfillteán tionscadail sa-frontend agus rith an t-ordú seo a leanas:

npm install

Trí an ordú seo a fhorghníomhú san fhillteán node_modules luchtófar spleáchais an fheidhmchláir React, a bhfuil a thaifid sa chomhad package.json. Tar éis duit na spleáchais a íoslódáil san fhillteán céanna, reáchtáil an t-ordú seo a leanas:

npm start

Sin é an méid. Tá an aip React ar siúl anois agus is féidir teacht air trí nascleanúint a dhéanamh chuig seoladh an bhrabhsálaí localhost:3000. Is féidir leat rud éigin a athrú ina chód. Feicfidh tú láithreach éifeacht na n-athruithe seo sa bhrabhsálaí. Is féidir é seo a bhuíochas leis an athsholáthar modúil "te" mar a thugtar air. A bhuí leis seo, is eispéireas simplí taitneamhach í an fhorbairt tosaigh.

▍Aip React a ullmhú le haghaidh táirgeadh

Chun críocha feidhmchlár React a úsáid i ndáiríre, ní mór dúinn é a thiontú ina shraith de chomhaid statacha agus iad a sheirbheáil ar chliaint ag baint úsáide as freastalaí gréasáin.

Chun an app React a thógáil, arís ag baint úsáide as an teirminéal, déan nascleanúint chuig an bhfillteán sa-frontend agus rith an t-ordú seo a leanas:

npm run build

Cruthóidh sé seo eolaire san fhillteán tionscadail build. Cuimseoidh sé na comhaid statacha go léir a theastaíonn le go n-oibreoidh an feidhmchlár React.

▍ Comhaid statacha a sheirbheáil le Nginx

Ar dtús ní mór duit freastalaí gréasáin Nginx a shuiteáil agus a rith. Anseo is féidir leat é a íoslódáil agus treoracha a fháil chun é a shuiteáil agus a rith. Ansin ní mór duit ábhar an fhillteáin a chóipeáil sa-frontend/build chuig fillteán [your_nginx_installation_dir]/html.

Leis an gcur chuige seo, an comhad a ghintear le linn tionóil an fheidhmchláir React index.html beidh sé ar fáil ag [your_nginx_installation_dir]/html/index.html. Is é seo an comhad a eisíonn freastalaí Nginx, de réir réamhshocraithe, agus é á rochtain. Tá an freastalaí cumraithe chun éisteacht ar phort 80, ach is féidir leat é a shaincheapadh ar an mbealach is mian leat trí eagarthóireacht a dhéanamh ar an gcomhad [your_nginx_installation_dir]/conf/nginx.conf.

Anois oscail do bhrabhsálaí agus téigh go dtí localhost:80. Feicfidh tú an leathanach app React.

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin
React app ar a bhfreastalaíonn freastalaí Nginx

Má chuireann tú isteach anois rud éigin sa réimse Type your sentence agus brúigh an cnaipe Send - ní tharlóidh aon rud. Ach, má fhéachann tú ar an consól, is féidir leat teachtaireachtaí earráide a fheiceáil ann. D'fhonn tuiscint a fháil go díreach ar an áit a dtarlaíonn na hearráidí seo, déanaimis anailís ar chód an iarratais.

▍Anailís ar chód an fheidhmchláir tosaigh

Ag féachaint ar chód an chomhaid App.js, is féidir linn a fheiceáil go bhfuil cliceáil ar an gcnaipe Send glaonna modh analyzeSentence(). Taispeántar an cód don mhodh seo thíos. Ag an am céanna, tabhair aird ar an bhfíric go bhfuil trácht ar an bhfoirm le haghaidh gach líne # Номер, tá míniú tugtha thíos sa chód. Ar an mbealach céanna, déanfaimid blúirí cód eile a pharsáil.

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 a ndéantar an t-iarratas POST chuige. Glactar leis gur iarratas é an seoladh seo atá ag feitheamh lena leithéid d’iarratais.

2.Chuir an comhlacht iarratais chuig an iarratas. Seo sampla comhlacht iarratais:

{
    sentence: "I like yogobella!"
}

3.Nuair a fhaightear freagra ar iarratas, déantar staid na comhpháirte a nuashonrú. Déanann sé seo an chomhpháirt a ath-rindreáil. Má fhaighimid sonraí (is é sin, réad JSON ina bhfuil na sonraí a iontráladh agus an scór téacs ríofa), aschuirfimid an chomhpháirt Polaritychomh fada agus a chomhlíontar na coinníollacha. Seo mar a dhéanaimid cur síos ar an gcomhpháirt:

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

Dealraíonn sé go n-oibríonn an cód go maith. Cad atá mícheart anseo, mar sin féin? Má ghlacann tú leis, ag an seoladh a bhfuil an t-iarratas ag iarraidh iarratas POST a sheoladh chuige, nach bhfuil aon rud ann go fóill a fhéadfaidh glacadh leis an iarratas seo agus é a phróiseáil, beidh an ceart agat. Is é sin, iarratais a thagann chuig an seoladh a phróiseáil http://localhost:8080/sentiment, ní mór dúinn iarratas gréasáin a reáchtáil bunaithe ar an Earraigh.

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin
Teastaíonn iarratas Earraigh uainn atá in ann glacadh le hiarratas POST

▍ Feidhmchlár gréasáin a bhunú bunaithe ar an Earrach

Chun feidhmchlár Earraigh a imscaradh, beidh JDK8 agus Maven agus athróga timpeallachta atá cumraithe i gceart uait. Tar éis duit é seo go léir a shuiteáil, is féidir leat leanúint ar aghaidh ag obair ar ár dtionscadal.

▍ An feidhmchlár a phacáil isteach i gcomhad jar

Déan nascleanúint, ag baint úsáide as an teirminéal, chuig an bhfillteán sa-webapp agus cuir isteach an t-ordú seo a leanas:

mvn install

Tar éis an t-ordú seo a fhorghníomhú san fhillteán sa-webapp cruthófar eolaire target. Seo an áit a bheidh an t-iarratas Java suite, pacáistithe i gcomhad jar, arna léiriú ag an gcomhad sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

▍ Feidhmchlár Java a sheoladh

Téigh go dtí an fillteán target agus rith an feidhmchlár leis an ordú seo a leanas:

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

Tarlóidh earráid agus an t-ordú seo á fheidhmiú. Chun é a shocrú, is féidir linn sonraí na heisceachta a pharsáil sna sonraí rian cruachta:

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

Maidir linne, is é an rud is tábhachtaí anseo ná an dodhéanta an bhrí a shoiléiriú a lua sa.logic.api.url. Déanaimis anailís ar an gcód ina dtarlaíonn an earráid.

▍ Anailís cód iarratais Java

Seo é an blúire cód ina dtarlaíonn an earráid.

@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. I SentimentController tá páirc saLogicApiUrl. Socraíonn an mhaoin a luach sa.logic.api.url.
  2. Líne saLogicApiUrl comhtháite le luach /analyse/sentiment. Le chéile cruthaíonn siad seoladh chun glao a dhéanamh ar an micriseirbhís a dhéanann anailís téacs.

▍ Luach maoine a shocrú

San Earrach, is comhad é foinse réamhshocraithe luachanna maoine application.properties, atá le fáil ag sa-webapp/src/main/resources. Ach ní hé é a úsáid an t-aon bhealach chun luachanna maoine a shocrú. Is féidir leat é seo a dhéanamh freisin leis an ordú seo a leanas:

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

Ba cheart go dtarraingeodh luach na maoine seo seoladh ár bhfeidhmchlár Python.

Trí é a chumrú, inseoimid d'fheidhmchlár gréasáin an Earraigh cá háit a gcaithfidh sé dul chun iarratais pharsála téacs a fhorghníomhú.

Chun nach gcuirfear ár saol níos casta, déanfaimid cinneadh go mbeidh an t-iarratas Python ar fáil ag localhost:5000 agus déan iarracht gan dearmad a dhéanamh faoi. Mar thoradh air sin, beidh cuma mar seo ar an ordú chun feidhmchlár an Earraigh a thosú:

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

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin
Tá feidhmchlár Python in easnamh ar ár gcóras

Anois ní mór dúinn ach an t-iarratas Python a reáchtáil agus oibreoidh an córas mar a bhíothas ag súil leis.

▍ Feidhmchlár Python a bhunú

D'fhonn feidhmchlár Python a reáchtáil, ní mór duit Python 3 agus Pip a bheith suiteáilte, agus ní mór na hathróga timpeallachta cuí a bheith socraithe agat i gceart.

▍ Cleithiúnaithe a shuiteáil

Téigh go dtí fillteán tionscadail sa-logic/sa agus rith na horduithe seo a leanas:

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

▍ Seoladh aip

Agus na spleáchais suiteáilte, táimid réidh chun an feidhmchlár a rith:

python sentiment_analysis.py

Tar éis an t-ordú seo a fhorghníomhú, cuirfear an méid seo a leanas in iúl dúinn:

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

Ciallaíonn sé seo go bhfuil an t-iarratas ar siúl agus ag fanacht le hiarratais ag localhost:5000/

▍ Taighde cód

Breathnaímid ar chód iarratais Python chun tuiscint a fháil ar an gcaoi a bhfreagraíonn sé d'iarratais:

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. Túsú réad Flask.
  2. Ag sonrú an seoladh chun iarratais POST a dhéanamh chuige.
  3. Maoin a aisghabháil sentence ón gcomhlacht iarratais.
  4. Túsú réad gan ainm TextBlob agus an luach a fháil polarity don chéad togra a fuarthas i gcorp na hiarrata (inár gcás, is é seo an t-aon togra a cuireadh isteach le haghaidh anailíse).
  5. Freagra a thabhairt ar ais, a bhfuil téacs na tairisceana agus an táscaire a ríomhtar dó ina chorp polarity.
  6. Ag seoladh an fheidhmchláir Flask, a bheidh ar fáil ag 0.0.0.0:5000 (is féidir leat é a rochtain freisin trí úsáid a bhaint as tógáil na foirme localhost:5000).

Anois tá na microservices a chomhdhéanann an feidhmchlár ar siúl. Tá siad socraithe chun idirghníomhú lena chéile. Seo an chuma atá ar an léaráid fheidhmchláir ag an gcéim seo den obair.

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin
Déantar na micriseirbhísí go léir a chomhdhéanann an feidhmchlár a thabhairt go staid shláintiúil

Anois, sula leanaimid ar aghaidh, oscail an app React i mbrabhsálaí agus déan iarracht abairt éigin a pharsáil leis. Má dhéantar gach rud i gceart - tar éis an cnaipe a bhrú Send feicfidh tú torthaí na hanailíse thíos sa bhosca téacs.

Sa chéad chuid eile, labhairfimid faoi conas ár microservices a reáchtáil i gcoimeádáin Docker. Tá sé seo riachtanach chun an feidhmchlár a ullmhú le rith i mbraisle Kubernetes.

Coimeádáin docker

Kubernetes is córas é chun imscaradh, scálú agus bainistiú feidhmchlár coimeádta a uathoibriú. Tugtar "ceolfhoireann coimeádán" air freisin. Má oibríonn Kubernetes le coimeádáin, ansin sula n-úsáidtear an córas seo, ní mór dúinn na coimeádáin seo a fháil ar dtús. Ach ar dtús, déanaimis labhairt faoi cad iad na coimeádáin. B'fhéidir gurb é an freagra is fearr ar an gceist cad atá ann le fáil ann doiciméadú go Docker:

Is pacáiste inrite éadrom, féinchuimsitheach é íomhá coimeádán ina bhfuil feidhmchlár, a chuimsíonn gach rud is gá chun é a rith: cód feidhmchláir, timpeallacht ama rite, uirlisí córais agus leabharlanna, socruithe. Is féidir cláir i gcoimeádán a úsáid i dtimpeallachtaí Linux agus Windows araon agus oibreoidh siad mar an gcéanna i gcónaí beag beann ar an mbonneagar.

Ciallaíonn sé seo gur féidir coimeádáin a reáchtáil ar aon ríomhaire, lena n-áirítear freastalaithe táirgeachta, agus in aon timpeallacht, oibreoidh na feidhmchláir atá faoi iamh iontu ar an mbealach céanna.

Chun gnéithe coimeádán a iniúchadh agus iad a chur i gcomparáid le bealaí eile chun feidhmchláir a rith, breathnaímid ar an sampla de fheidhmchlár React a sheirbheáil ag baint úsáide as meaisín fíorúil agus coimeádán.

▍ Comhaid statacha feidhmchlár React a sheirbheáil ag baint úsáide as meaisín fíorúil

Ag iarraidh cothabháil comhaid statacha a eagrú ag baint úsáide as meaisíní fíorúla, beidh muid ag teacht ar na míbhuntáistí seo a leanas:

  1. Úsáid neamhéifeachtach acmhainní, toisc gur córas oibriúcháin iomlán é gach meaisín fíorúil.
  2. Spleáchas ardáin. Seans nach n-oibreoidh an rud a oibríonn ar ríomhaire áitiúil éigin ar fhreastalaí táirgeachta.
  3. Scálú mall agus dian ar acmhainní ar réiteach meaisín fíorúil.

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin
Freastalaí gréasáin Nginx ag freastal ar chomhaid statacha a ritheann i meaisín fíorúil

Má úsáidtear coimeádáin chun fadhb den chineál céanna a réiteach, ansin, i gcomparáid le meaisíní fíorúla, is féidir na láidreachtaí seo a leanas a thabhairt faoi deara:

  1. Úsáid éifeachtach acmhainní: oibriú leis an gcóras oibriúcháin ag baint úsáide as Docker.
  2. Neamhspleáchas ardán. Rithfidh coimeádán ar féidir le forbróir a rith ar a ríomhaire féin áit ar bith.
  3. Imscaradh éadrom trí úsáid a bhaint as sraitheanna íomhá.

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin
Freastalaí gréasáin Nginx ag freastal ar chomhaid statacha a ritheann i gcoimeádán

Níor chuireamar ach meaisíní fíorúla agus coimeádáin i gcomparáid le cúpla pointe, ach is leor sin fiú le braistint a fháil ar láidreachtaí na gcoimeádán. Anseo Is féidir leat sonraí a fháil faoi choimeádáin Docker.

▍ Íomhá coimeádán a thógáil le haghaidh aip React

Is é an bloc tógála bunúsach de choimeádán Docker an comhad Dockerfile. Ag tús an chomhaid seo, taifeadtar buníomhá den choimeádán, ansin cuirtear seicheamh treoracha san áireamh a léiríonn conas coimeádán a chruthú a chomhlíonfaidh riachtanais feidhmchláir.

Sula dtosaímid ag obair leis an gcomhad Dockerfile, cuimhnigh ar an méid a rinne muid chun comhaid an iarratais React a ullmhú le huaslódáil chuig an bhfreastalaí Nginx:

  1. Ag tógáil pacáiste aipe React (npm run build).
  2. Ag tosú freastalaí Nginx.
  3. Ábhar eolaire a chóipeáil build ó fhillteán tionscadail sa-frontend chuig an bhfillteán freastalaí nginx/html.

Anseo thíos feicfidh tú na cosúlachtaí idir cruthú coimeádán agus na gníomhartha thuas a dhéantar ar an ríomhaire áitiúil.

▍ Comhad Docker a ullmhú don Fheidhmchlár SA-Frontend

Treoracha le cur san áireamh i Dockerfile le hiarratas a dhéanamh SA-Frontend, comhdhéanta de ach dhá ordú. Is é an bhfíric go bhfuil an fhoireann forbartha Nginx ullmhaithe bunúsach íomhá do Nginx, a úsáidfimid chun ár n-íomhá a thógáil. Seo iad an dá chéim nach mór dúinn cur síos a dhéanamh orthu:

  1. Ní mór duit íomhá Nginx a dhéanamh mar bhunús leis an íomhá.
  2. Ábhar fillteáin sa-frontend/build gá a chóipeáil go dtí an fillteán íomhá nginx/html.

Má théann muid ón tuairisc seo go dtí an comhad Dockerfile, ansin beidh sé cuma mar seo:

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

Mar a fheiceann tú, tá gach rud anseo an-simplí, agus fiú go bhfuil ábhar an chomhaid sách inléite agus intuigthe. Insíonn an comhad seo don chóras an íomhá a ghlacadh nginx le gach rud atá aige cheana féin, agus cóipeáil ábhar an eolaire build chuig an eolaire nginx/html.

Anseo b'fhéidir go bhfuil ceist agat maidir le conas a fhios agam cá háit go díreach chun na comhaid a chóipeáil ón bhfillteán build, i.e. cén áit ar tháinig an cosán? /usr/share/nginx/html. Go deimhin, níl aon rud casta anseo ach an oiread. Is é fírinne an scéil gur féidir an fhaisnéis ábhartha a fháil i tuairisc íomha.

▍An íomhá a chur le chéile agus í a uaslódáil chuig an stór

Sular féidir linn oibriú le híomhá críochnaithe, ní mór dúinn é a chur isteach sa stór íomhá. Chun seo a dhéanamh, úsáidfimid an t-ardán óstáil íomhá scamall-bhunaithe saor in aisce Docker Hub. Ag an gcéim seo den obair, ní mór duit na nithe seo a leanas a dhéanamh:

  1. Suiteáil dhugaire.
  2. Cláraigh ar shuíomh an Docker Hub.
  3. Logáil isteach i do chuntas tríd an ordú seo a leanas a rith sa teirminéal:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

Anois is gá duit, ag baint úsáide as an teirminéal, téigh go dtí an eolaire sa-frontend agus rith an t-ordú seo a leanas ann:

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

Anseo agus thíos in orduithe comhchosúla $DOCKER_USER_ID Ba cheart d'ainm úsáideora a chur in ionad do Docker Hub. Mar shampla, b'fhéidir go mbeadh cuma mar seo ar an gcuid seo den ordú: rinormaloku/sentiment-analysis-frontend.

Sa chás seo, is féidir an t-ordú seo a ghiorrú trí bhaint as -f Dockerfile, ós rud é go bhfuil an comhad seo san fhillteán ina ndéanaimid an t-ordú seo cheana féin.

Chun an íomhá críochnaithe a sheoladh chuig an stór, ní mór dúinn an t-ordú seo a leanas:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

Tar éis é a chríochnú, seiceáil do liosta stórtha ar Docker Hub le feiceáil an ndearnadh an íomhá a bhrú go rathúil chuig an stóráil scamall.

▍ Coimeádán a thosú

Anois is féidir le duine ar bith an íomhá ar a dtugtar $DOCKER_USER_ID/sentiment-analysis-frontend. Chun é seo a dhéanamh, ní mór duit an seicheamh orduithe seo a leanas a rith:

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

Anois tá an coimeádán ag rith, agus is féidir linn leanúint ar aghaidh ag obair trí íomhánna eile a theastaíonn uainn a chruthú. Ach sula leanaimid ar aghaidh, déanaimis an dearadh a thuiscint 80:80, atá le fáil san ordú chun an íomhá a rith agus d'fhéadfadh cuma mhearbhall a bheith air.

  • An chéad uimhir 80 uimhir phoirt an óstaigh (is é sin, an ríomhaire áitiúil).
  • Dara uimhir 80 is é calafort an choimeádáin ar cheart an t-iarratas a atreorú chuige.

Smaoinigh ar an léiriú seo a leanas.

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin
Port Ar Aghaidh

Cuireann an córas iarratais ar aghaidh ón gcalafort <hostPort> chuig an bport <containerPort>. Is é sin, rochtain a fháil ar an gcalafort 80 atreoraítear ríomhaire chuig port 80 coimeádán.

Ós rud é an port 80 a osclaíodh ar an ríomhaire áitiúil, is féidir leat an feidhmchlár a rochtain ón ríomhaire seo ag localhost:80. Mura dtacaíonn do chóras le Docker, is féidir leat an feidhmchlár a rith ar mheaisín fíorúil Docker, agus beidh an seoladh cosúil le <docker-machine ip>:80. Chun seoladh IP an mheaisín fíorúil Docker a fháil amach, is féidir leat an t-ordú a úsáid docker-machine ip.

Ag an bpointe seo, a luaithe a sheoltar coimeádán an aip tosaigh go rathúil, ba cheart go mbeifeá in ann a leathanach a oscailt i mbrabhsálaí.

▍.dockerignore comhad

Ag tógáil íomhá an fheidhmchláir SA-Frontend, d'fhéadfaimis a thabhairt faoi deara go bhfuil an próiseas seo thar a bheith mall. Tá sé seo toisc go gcaithfear an comhthéacs tógála íomhá a sheoladh chuig an deamhan Docker. Tugtar an t-eolaire a léiríonn an comhthéacs tógála mar an argóint dheireanach don ordú docker build. Inár gcás, tá ponc ag deireadh an ordaithe seo. Mar thoradh air seo cuirtear an struchtúr seo a leanas san áireamh i gcomhthéacs an tionóil:

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

Ach de na fillteáin go léir atá i láthair anseo, ní gá dúinn ach fillteán build. Is cur amú ama é rud ar bith eile a íoslódáil. Is féidir leat an tógáil a bhrostú trí insint do Docker cé na heolairí ar chóir neamhaird a dhéanamh orthu. Chun é seo a dhéanamh, ní mór dúinn comhad .dockerignore. Tú, má tá tú eolach ar an gcomhad .gitignore, is dócha go mbeidh cuma eolach ar struchtúr an chomhaid seo. Liostaíonn sé eolairí ar féidir leis an gcóras tógála íomhá neamhaird a dhéanamh orthu. Inár gcás, tá cuma mar seo ar ábhar an chomhaid seo:

node_modules
src
public

comhad .dockerignore a bheith san fhillteán céanna leis an gcomhad Dockerfile. Anois tógfaidh tionól na híomhá cúpla soicind.

Déileálfaimid anois leis an íomhá le haghaidh feidhmchlár Java.

▍ Íomhá coimeádán a thógáil le haghaidh feidhmchlár Java

Tá a fhios agat cad, agus d'fhoghlaim tú cheana féin gach rud atá uait chun íomhánna coimeádáin a chruthú. Sin é an fáth go mbeidh an chuid seo an-ghearr.

Oscail an comhad Dockerfile, atá suite i bhfillteán an tionscadail sa-webapp. Má léann tú téacs an chomhaid seo, ansin ní bhuailfidh tú ach dhá thógáil nua a thosaíonn le heochairfhocail ENV и EXPOSE:

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

Eochairfhocal ENV ligeann duit athróga timpeallachta a dhearbhú taobh istigh de choimeádáin Docker. Go háirithe, inár gcás, ligeann sé duit URL a shocrú chun rochtain a fháil ar API an fheidhmchláir a dhéanann anailís téacs.

Eochairfhocal EXPOSE ligeann duit insint do Docker port a oscailt. Táimid chun an port seo a úsáid agus muid ag obair leis an bhfeidhmchlár. Anseo is féidir leat é sin a fheiceáil i Dockerfile le hiarratas a dhéanamh SA-Frontend níl aon ordú den sórt sin. Tá sé seo chun críocha doiciméadaithe amháin, i bhfocail eile, tá an tógáil seo le haghaidh an léitheoir Dockerfile.

Breathnaíonn tógáil na híomhá agus é a bhrú chuig an stór díreach cosúil leis an sampla roimhe seo. Mura bhfuil tú an-mhuiníneach as do chumas fós, is féidir na horduithe comhfhreagracha a fháil sa chomhad README.md san fhillteán sa-webapp.

▍ Íomhá coimeádán a thógáil le haghaidh feidhmchlár Python

Má ghlacann tú le breathnú ar a bhfuil sa chomhad Dockerfile san fhillteán sa-logicní bhfaighidh tú aon rud nua ann. Ba cheart go mbeadh eolas agat freisin ar na horduithe chun an íomhá a thógáil agus a bhrú chuig an stór, ach, mar atá i gcás ár bhfeidhmchláir eile, is féidir iad a fháil sa chomhad README.md san fhillteán sa-logic.

▍ Feidhmchláir coimeádaithe a thástáil

An féidir muinín a bheith agat as rud éigin nach bhfuil tástáil déanta agat air? Ní féidir liom freisin. Déanaimis ár gcoimeádáin a thástáil.

  1. Let tús leis an gcoimeádán iarratais sa-logic agus cumraigh é chun éisteacht ar phort 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. Let tús leis an gcoimeádán iarratais sa-webapp agus cumraigh é chun éisteacht ar phort 8080. Ina theannta sin, ní mór dúinn an port a shocrú ar a n-éistfidh feidhmchlár Python le haghaidh iarratais ón bhfeidhmchlár Java tríd an athróg timpeallachta a athshannadh 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

Chun foghlaim conas seoladh IP coimeádán nó Docker VM a fháil amach, déan tagairt don chomhad README.

Let tús leis an gcoimeádán iarratais sa-frontend:

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

Anois tá gach rud réidh le nascleanúint a dhéanamh sa bhrabhsálaí chuig an seoladh localhost:80 agus tástáil an app.

Tabhair faoi deara le do thoil má athraíonn tú an port le haghaidh sa-webapp, nó má tá Docker VM á rith agat, beidh ort an comhad a chur in eagar App.js as fillteán sa-frontendtríd an seoladh IP nó uimhir an chalafoirt a athrú sa mhodh analyzeSentence()trí fhaisnéis reatha a chur in ionad sonraí as feidhm. Tar éis sin, ní mór duit a reassemble an íomhá agus í a úsáid.

Seo an chuma atá ar ár léaráid iarratais anois.

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin
Ritheann micreasheirbhísí i gcoimeádáin

Achoimre: cén fáth a bhfuil braisle Kubernetes de dhíth orainn?

Rinneamar athbhreithniú díreach ar na comhaid Dockerfile, labhair faoi conas íomhánna a thógáil agus iad a bhrú chuig stór Docker. Chomh maith leis sin, d’fhoghlaimíomar conas comhthionól na n-íomhánna a bhrostú ag baint úsáide as an gcomhad .dockerignore. Mar thoradh air sin, tá ár microservices ag rith anois i gcoimeádáin Docker. Anseo b'fhéidir go bhfuil ceist agat go hiomlán inchosanta faoi cén fáth a dteastaíonn Kubernetes uainn. Beidh freagra na ceiste seo dírithe ar an dara cuid den ábhar seo. Idir an dá linn, smaoinigh ar an gceist seo a leanas:
Glacaimid leis go bhfuil an-tóir ar ár bhfeidhmchlár gréasáin anailíse téacs ar fud an domhain. Tagann na milliúin iarratas chuige gach nóiméad. Ciallaíonn sé seo go microservices sa-webapp и sa-logic a bheidh faoi strus ollmhór. Conas coimeádáin a ritheann micreasheirbhísí a scála?

Cuid Teagaisc Kubernetes 1: Feidhmchláir, Microservices, agus Coimeádáin

Foinse: will.com

Add a comment