Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana

Ka kopo ea rona, Habr o ile a theha setsi Kubernetes ’me re thabela ho tsamaisa sengoliloeng sa pele ho eona. Ngodisa!

Kubernetes e bonolo. Ke hobane’ng ha libanka li ntefa chelete e ngata hore ke sebetse sebakeng see, athe mang kapa mang a ka tseba theknoloji ee ka lihora tse seng kae feela?

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana

Haeba u belaela hore Kubernetes e ka ithutoa kapele hakana, ke khothaletsa hore u leke ho e etsa u le mong. Ka mantsoe a mang, ha u se u tseba boitsebiso bona, u tla khona ho tsamaisa kopo e thehiloeng ho microservices sehlopheng sa Kubernetes. Nka netefatsa sena, hobane ke ka mokhoa o ts'oanang oo ke o sebelisang mona moo ke rutang bareki ba rona ho sebetsa le Kubernetes. Ke eng e etsang hore tataiso ee e fapane le e meng? Ha e le hantle, lintho tse ngata. Kahoo, boholo ba lisebelisoa tsena li qala ka tlhaloso ea lintho tse bonolo - mehopolo ea Kubernetes le likarolo tsa taelo ea kubectl. Bangoli ba lingoliloeng tsena ba nka hore 'mali oa bona o tloaelane le nts'etsopele ea ts'ebeliso, li-microservices le lijana tsa Docker. Re tla tsamaea ka tsela e 'ngoe. Taba ea pele, ha re bue ka mokhoa oa ho tsamaisa ts'ebeliso e thehiloeng ho microservices khomphuteng. Ebe re tla sheba ho aha litšoantšo tsa setshelo bakeng sa microservice ka 'ngoe. 'Me ka mor'a moo, re tla tloaelana le Kubernetes le ho sekaseka phepelo ea kopo e thehiloeng ho li-microservices sehlopheng se laoloang ke Kubernetes.

Mokhoa ona, ka mokhoa oa butle-butle oa Kubernetes, o tla fana ka botebo ba kutloisiso ea se etsahalang seo motho ea tloaelehileng a se hlokang e le hore a utloisise hore na ntho e 'ngoe le e' ngoe e hlophisitsoe joang ho Kubernetes. Ka sebele Kubernetes ke theknoloji e bonolo, ha feela mang kapa mang ea batlang ho e tseba o tseba hore na e sebelisoa hokae le joang.

Joale, ntle le ho feta, ha re qaleng ho sebetsa 'me re bue ka kopo eo re tla be re sebetsa ka eona.

Sesebelisoa sa liteko

Sesebelisoa sa rona se tla etsa mosebetsi o le mong feela. Ho nka polelo e le 'ngoe, e le ho kenya letsoho, ka mor'a moo, ho sebelisa lisebelisoa tsa tlhahlobo ea mongolo, ho etsa tlhahlobo ea maikutlo ea polelo ena, ho fumana tlhahlobo ea maikutlo a maikutlo a mongoli oa polelo ho ntho e itseng.

Sena ke seo ka sehloohong fensetere ea kopo ena shebahala joaloka.

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana
Sentiment Analysis Web Application

Ho ea ka pono ea tekheniki, ts'ebeliso e na le li-microservices tse tharo, tseo e 'ngoe le e' ngoe ea tsona e rarollang sehlopha se itseng sa mesebetsi:

  • SA-Frontend ke seva sa marang-rang sa Nginx se sebeletsang lifaele tsa React static.
  • SA-WebApp ke sesebelisoa sa marang-rang se ngotsoeng ka Java se sebetsanang le likopo tse tsoang pele.
  • SA-Logic ke sesebelisoa sa Python se etsang tlhahlobo ea maikutlo a mongolo.

Ke habohlokoa ho hlokomela hore li-microservices ha li teng ka thōko. Ba kenya tšebetsong mohopolo oa "karohano ea mesebetsi", empa ka nako e ts'oanang, ba hloka ho sebelisana.

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana
Lintlha li kena ts'ebetsong

Setšoantšong se kaholimo, u ka bona mekhahlelo e baloang ea sistimi, e bonts'ang phallo ea data ts'ebelisong. A re li aroleng:

  1. Sebatli se kopa faele ho tsoa ho seva index.html (e leng eona e kenyang sephutheloana sa React app).
  2. Mosebelisi o sebelisana le kopo, sena se baka mohala ho ts'ebeliso ea webo e thehiloeng ho Spring.
  3. Sesebelisoa sa marang-rang se fetisetsa kopo ea ho fetisa mongolo ho ts'ebeliso ea Python.
  4. Kopo ea Python e sekaseka maikutlo a mongolo mme e khutlisetsa sephetho e le karabo ea kopo.
  5. Sesebelisoa sa Spring se romela karabo ho React application (eo le eona e bonts'ang sephetho sa mongolo o arotsoeng ho mosebelisi).

Khoutu ea lits'ebetso tsena kaofela e ka fumanoa mona. Ke khothaletsa hore u kopitse polokelo ena ho uena hona joale, kaha ho na le liteko tse ngata tse khahlisang ka pele ho rona.

Ho tsamaisa ts'ebeliso e ipapisitseng le li-microservices mochining oa lehae

E le hore kopo e sebetse, re hloka ho qala li-microservices tse tharo. Ha re qaleng ka tse ntle ka ho fetisisa ho tsona - ts'ebeliso ea pheletso e ka pele.

▍Ho theha React bakeng sa ntlafatso ea lehae

E le hore u tsamaise kopo ea React, u lokela ho kenya moralo oa Node.js le NPM khomphuteng ea hau. Kamora ho kenya tsena tsohle, e-ea u sebelisa terminal ho foldara ea projeke sa-frontend ebe o tsamaisa taelo e latelang:

npm install

Ka ho phethahatsa taelo ena foldareng node_modules litšepeho tsa kopo ea React li tla kenngoa, lirekoto tsa tsona li ka faeleng package.json. Ka mor'a ho khoasolla lintho tse itšetlehileng ka foldareng e le 'ngoe, tsamaisa taelo e latelang:

npm start

Ke phetho. Sesebelisoa sa React se se se sebetsa 'me se ka fumaneha ka ho ea atereseng ea sebatli localhost:3000. U ka fetola ntho e itseng khoutu ea hae. Hang-hang u tla bona phello ea liphetoho tsena ho sebatli. Sena se ka khoneha ka lebaka la seo ho thoeng ke "hot" ea li-modules. Ka lebaka la sena, tsoelo-pele ea pele e fetoha phihlelo e bonolo le e monate.

▍Ho lokisa sesebelisoa sa React bakeng sa tlhahiso

Bakeng sa merero ea ho sebelisa sesebelisoa sa React, re hloka ho e fetolela ho sete ea lifaele tse tsitsitseng ebe re li sebeletsa ho bareki ba sebelisang seva ea webo.

Ho aha sesebelisoa sa React, hape u sebelisa terminal, ea ho foldareng sa-frontend ebe o tsamaisa taelo e latelang:

npm run build

Sena se tla theha directory foldareng ea projeke build. E tla ba le lifaele tsohle tse tsitsitseng tse hlokehang hore sesebelisoa sa React se sebetse.

▍ Ho sebeletsa lifaele tse tsitsitseng ka Nginx

Pele o hloka ho kenya le ho tsamaisa seva sa marang-rang sa Nginx. ke u ka e khoasolla 'me u fumane litaelo tsa ho e kenya le ho e sebelisa. Ebe o hloka ho kopitsa litaba tsa foldara sa-frontend/build ho tsamaisetsa foldareng [your_nginx_installation_dir]/html.

Ka mokhoa ona, faele e hlahisitsoeng nakong ea kopano ea kopo ea React index.html e tla fumaneha ho [your_nginx_installation_dir]/html/index.html. Ena ke faele eo, ka ho sa feleng, seva sa Nginx e fanang ka eona ha e fihla ho eona. Seva e hlophisitsoe hore e mamele boema-kepe 80, empa u ka e etsa ka tsela eo u e batlang ka ho hlophisa faele [your_nginx_installation_dir]/conf/nginx.conf.

Joale bula sebatli sa hau ebe u ea ho localhost:80. U tla bona leqephe la app ea React.

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana
Sesebelisoa sa React se fanoang ke seva sa Nginx

Haeba joale u kenya ntho e itseng tšimong Type your sentence ebe o tobetsa konopo Send - ha ho letho le tla etsahala. Empa, ha u sheba console, u ka bona melaetsa ea phoso moo. E le hore re utloisise hantle hore na liphoso tsena li etsahala hokae, a re hlahlobeng khoutu ea kopo.

▍ Tlhahlobo ea khoutu ea ts'ebeliso ea pele

Ho sheba khoutu ea faele App.js, re ka bona hore ho tobetsa konopo Send bitsa mokhoa analyzeSentence(). Khoutu ea mokhoa ona e bontšitsoe ka tlase. Ka nako e ts'oanang, ela hloko taba ea hore moleng o mong le o mong oo ho oona ho nang le tlhaloso ea foromo # Номер, ho na le tlhaloso e fanoeng ka tlase ho khoutu. Ka mokhoa o ts'oanang, re tla arola likarolo tse ling tsa khoutu.

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. URL eo kopo ea POST e etsoang ho eona. Aterese ena e nkoa e le kopo e emetseng likopo tse joalo.

2.Sehlopha sa kopo se rometsoe ho kopo. Mona ke sehlopha sa kopo ea mohlala:

{
    sentence: "I like yogobella!"
}

3.Ha karabo ea kopo e amoheloa, boemo ba karolo boa ntlafatsoa. Sena se etsa hore karolo e fane hape. Haeba re amohela data (ke hore, ntho ea JSON e nang le data e kentsoeng le lintlha tse baloang), re tla ntša karolo. Polarityha feela maemo a phethiloe. Mona ke kamoo re hlalosang karolo ena:

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

Khoutu e bonahala e sebetsa hantle haholo. Phoso ke efe moo? Haeba u nahana hore atereseng eo kopo e lekang ho romela kopo ea POST ho eona, ha ho letho le teng le ka amohelang le ho sebetsana le kopo ena, joale u tla be u nepile ka ho feletseng. E leng, ho sebetsa likopo tse tlang atereseng http://localhost:8080/sentiment, re hloka ho tsamaisa ts'ebeliso ea webo e thehiloeng ho Spring.

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana
Re hloka kopo ea Selemo e ka amohelang kopo ea POST

▍Ho theha ts'ebeliso ea tepo ho latela Spring

Bakeng sa ho kenya ts'ebeliso ea Spring, o hloka JDK8 le Maven le mefuta e fapaneng ea tikoloho e hlophisitsoeng hantle. Ka mor'a hore u kenye tsena tsohle, u ka tsoela pele ho sebetsa morerong oa rona.

▍ Ho paka sesebelisoa ka har'a faele ea nkho

Tsamaea, u sebelisa terminal, ho ea foldareng sa-webapp ebe o kenya taelo e latelang:

mvn install

Ka mor'a ho phethahatsa taelo ena foldareng sa-webapp directory e tla etsoa target. Mona ke moo ts'ebeliso ea Java e tla be e le teng, e kentsoeng ka har'a faele ea nkho, e emetsoeng ke faele sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

▍Ho qala Sesebelisoa sa Java

Eya ho foldara target 'me u tsamaise kopo ka taelo e latelang:

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

Phoso e tla etsahala ha o ntse o phethahatsa taelo ena. E le ho qala ho e lokisa, re ka bapisa lintlha tsa mokhelo ho data trace trace:

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

Ho rona, ntho ea bohlokoa ka ho fetisisa mona ke ho bua ka ho se khonehe ho hlakisa moelelo sa.logic.api.url. Ha re hlahlobe khoutu moo phoso e hlahang teng.

▍ Tlhahlobo ea khoutu ea kopo ea Java

Mona ke snippet ea khoutu moo phoso e etsahalang.

@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. Ho SentimentController ho na le tšimo saLogicApiUrl. Boleng ba eona bo behiloe ke thepa sa.logic.api.url.
  2. Lintja saLogicApiUrl e tsamaellana le boleng /analyse/sentiment. Ka kopanelo ba theha aterese bakeng sa ho letsetsa microservice e etsang tlhahlobo ea mongolo.

▍Ho beha boleng ba thepa

Nakong ea selemo, mohloli oa kamehla oa boleng ba thepa ke faele application.properties, e ka fumanoang ho sa-webapp/src/main/resources. Empa ho e sebelisa ha se eona feela tsela ea ho beha boleng ba thepa. U ka boela ua etsa sena ka taelo e latelang:

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

Boleng ba thepa ena bo lokela ho supa atereseng ea kopo ea rona ea Python.

Ka ho e hlophisa, re bolella ts'ebeliso ea webo ea Spring moo e hlokang ho ea ho etsa likopo tsa tlhahlobo ea mongolo.

E le hore re se ke ra thatafatsa bophelo ba rona, re tla etsa qeto ea hore kopo ea Python e tla fumaneha ho localhost:5000 'me u leke ho se lebale ka eona. Ka lebaka leo, taelo ea ho qala ts'ebeliso ea Spring e tla shebahala tjena:

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

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana
Sistimi ea rona e haelloa ke ts'ebeliso ea Python

Joale re tlameha feela ho tsamaisa ts'ebeliso ea Python mme sistimi e tla sebetsa joalo ka ha ho lebelletsoe.

▍Ho theha sesebelisoa sa Python

E le hore u tsamaise kopo ea Python, u tlameha ho kenya Python 3 le Pip, 'me u tlameha ho ba le mefuta e nepahetseng ea tikoloho e behiloeng ka nepo.

▍ Kenya lintho tse itšetlehileng ka tsona

Eya ho foldara ea projeke sa-logic/sa ebe u tsamaisa litaelo tse latelang:

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

▍ Ho qala ha sesebelisoa

Ka li- dependencies tse kentsoeng, re se re loketse ho sebelisa kopo:

python sentiment_analysis.py

Ka mor'a ho phethahatsa taelo ena, re tla bolelloa tse latelang:

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

Sena se bolela hore kopo e ntse e sebetsa 'me e emetse likopo ho localhost:5000/

▍ Patlisiso ea khoutu

Ha re shebeng khoutu ea kopo ea Python ho utloisisa hore na e arabela joang likopo:

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. Ho qala ntho Flask.
  2. E hlakisa aterese ea ho etsa likopo tsa POST ho eona.
  3. Ho fumana thepa sentence ho tsoa sehlopheng sa kopo.
  4. Ho qala ntho e sa tsejoeng TextBlob le ho fumana boleng polarity bakeng sa tlhahiso ea pele e fumanoeng 'meleng oa kopo (tabeng ea rona, ena ke eona feela tlhahiso e rometsoeng bakeng sa tlhahlobo).
  5. Ho khutlisa karabo, 'mele oa eona o nang le mongolo oa tlhahiso le sesupo se baliloeng bakeng sa sona polarity.
  6. Ho qala kopo ea Flask, e tla fumaneha ho 0.0.0.0:5000 (u ka e fumana hape u sebelisa sebopeho sa foromo localhost:5000).

Hona joale li-microservices tse etsang kopo lia sebetsa. Ba behiloe hore ba sebelisane hammoho. Mona ke hore na setšoantšo sa kopo se shebahala joang sethaleng sena sa mosebetsi.

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana
Li-microservices tsohle tse etsang kopo li tlisoa boemong bo botle

Joale, pele re tsoela pele, bula sesebelisoa sa React ho sebatli 'me u leke ho bapisa polelo e itseng ka eona. Haeba tsohle li etsoa ka nepo - ka mor'a ho tobetsa konopo Send u tla bona liphetho tsa tlhahlobo ka tlase ho lebokose la mongolo.

Karolong e latelang, re tla bua ka mokhoa oa ho tsamaisa li-microservices tsa rona ka har'a lijana tsa Docker. Sena sea hlokahala bakeng sa ho lokisa kopo ea ho sebetsa sehlopheng sa Kubernetes.

Lijana tsa Docker

Kubernetes ke mokhoa o ikemetseng oa ho tsamaisa, ho phahamisa le ho laola lits'ebetso tse nang le lik'hontheinara. E boetse e bitsoa "container orchestrator". Haeba Kubernetes e sebetsa le lijana, joale pele re sebelisa sistimi ena, re lokela ho qala ka ho fumana lijana tsena. Empa pele, a re ke re bue ka hore na linkho ke eng. Mohlomong karabo e ntle ka ho fetisisa potsong ea hore na ke eng e ka fumanoa ho litokomane ho Docker:

Setšoantšo sa setshelo ke sephutheloana se bobebe, se ikemetseng, se sebetsang se nang le kopo, e kenyelletsang ntho e 'ngoe le e' ngoe e hlokahalang ho e tsamaisa: khoutu ea kopo, tikoloho ea nako ea ho sebetsa, lisebelisoa tsa tsamaiso le lilaebrari, litlhophiso. Mananeo a Container a ka sebelisoa libakeng tsa Linux le Windows mme a tla lula a sebetsa ka mokhoa o ts'oanang ho sa tsotelehe lisebelisoa.

Sena se bolela hore lijana li ka tsamaisoa k'homphieutheng efe kapa efe, ho kenyelletsa le li-server tsa tlhahiso, 'me tikolohong efe kapa efe, lits'ebetso tse kentsoeng ho tsona li tla sebetsa ka tsela e ts'oanang.

Ho hlahloba likarolo tsa lijana le ho li bapisa le mekhoa e meng ea ho tsamaisa lits'ebetso, ha re shebeng mohlala oa ho sebeletsa sesebelisoa sa React ho sebelisa mochini o hlakileng le setshelo.

▍ Ho fana ka lifaele tse tsitsitseng tsa sesebelisoa sa React u sebelisa mochini o sebetsang

Ha re leka ho hlophisa tokiso ea lifaele tse tsitsitseng re sebelisa mechini ea sebele, re tla kopana le mathata a latelang:

  1. Tšebeliso e mpe ea lisebelisoa, kaha mochine o mong le o mong oa sebele ke mokhoa o feletseng oa ho sebetsa.
  2. Ho itšetleha ka sethala. Se sebetsang komporong e 'ngoe ea lehae se kanna sa se sebetse ho seva sa tlhahiso.
  3. Ho eketsa butle-butle le lisebelisoa tse matla tsa tharollo ea mochine oa sebele.

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana
Seva ea marang-rang ea Nginx e sebeletsang lifaele tse tsitsitseng tse sebetsang ka mochini o sebetsang

Haeba lijana li sebelisoa ho rarolla bothata bo tšoanang, joale, ha ho bapisoa le mechini ea sebele, ho ka hlokomeloa matla a latelang:

  1. Tšebeliso e nepahetseng ea lisebelisoa: sebetsa le sistimi e sebelisang Docker.
  2. Boikemelo ba sethaleng. Sets'oants'o seo moqapi a ka se tsamaisang khomphuteng ea hae se tla sebetsa kae kapa kae.
  3. Ho tsamaisoa ha bobebe ka tšebeliso ea likarolo tsa litšoantšo.

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana
Seva ea websaete ea Nginx e sebeletsang lifaele tse tsitsitseng tse tsamaeang ka har'a setshelo

Re bapisitse metjhini le lijana tsa nnete feela ka lintlha tse 'maloa, empa ho lekane ho utloa matla a lijana. ke U ka fumana lintlha tse mabapi le lijana tsa Docker.

▍ Ho aha setšoantšo sa setshelo bakeng sa sesebelisoa sa React

Mohaho oa motheo oa setshelo sa Docker ke faele Dockerfile. Qalong ea faele ena, setšoantšo sa motheo sa setshelo se ngotsoe, joale tatellano ea litaelo e kenyelelitsoe ho bontša mokhoa oa ho etsa setshelo se tla finyella litlhoko tsa kopo.

Pele re qala ho sebetsa le faele Dockerfile, hopola seo re se entseng ho lokisa lifaele tsa kopo ea React bakeng sa ho kenya ho seva sa Nginx:

  1. Ho aha sephutheloana sa app ea React (npm run build).
  2. Ho qala seva sa Nginx.
  3. Ho kopitsa litaba tsa bukana build ho tsoa foldareng ea morero sa-frontend ho foldara ea seva nginx/html.

Ka tlaase u ka bona ho tšoana pakeng tsa ho theha setshelo le liketso tse ka holimo tse etsoang khomphuteng ea sebaka seo.

▍Ho lokisa Dockerfile bakeng sa Kopo ea SA-Frontend

Litaelo tse tla kenyelletsoa ho Dockerfile bakeng sa kopo SA-Frontend, e na le lihlopha tse peli feela. 'Nete ke hore sehlopha sa nts'etsopele ea Nginx se lokiselitse motheo setšoantšo bakeng sa Nginx, eo re tla e sebelisa ho haha ​​​​setšoantšo sa rona. Mehato e 'meli eo re lokelang ho e hlalosa ke ena:

  1. U hloka ho etsa setšoantšo sa Nginx motheo oa setšoantšo.
  2. Litaba tsa sephutheli sa-frontend/build o hloka ho kopitsa foldareng ea setšoantšo nginx/html.

Haeba re tloha tlhalosong ena ho ea faeleng Dockerfile, joale e tla shebahala tjena:

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

Joalokaha u ka bona, ntho e 'ngoe le e' ngoe mona e bonolo haholo, ha litaba tsa faele li bile li bonahala li le bonolo ebile li utloahala. Faele ena e bolella sistimi hore e nke setšoantšo nginx ka ntho e 'ngoe le e' ngoe eo e seng e na le eona, 'me u kopitse litaba tsa bukana build ho directory nginx/html.

Mona o kanna oa ba le potso mabapi le hore na ke tseba joang moo ke lokelang ho kopitsa lifaele ho tsoa foldareng build, ke hore tsela e tsoa kae /usr/share/nginx/html. Ha e le hantle, ha ho letho le rarahaneng le mona. 'Nete ke hore lintlha tse nepahetseng li ka fumanoa ho tlhaloso setšoantšo.

▍ Ho kopanya setšoantšo le ho se kenya sebakeng sa polokelo

Pele re ka sebetsa ka setšoantšo se phethiloeng, re hloka ho se isa sebakeng sa polokelo ea litšoantšo. Ho etsa sena, re tla sebelisa sethala sa mahala sa ho amohela litšoantšo se thehiloeng marung Docker Hub. Nakong ena ea mosebetsi, o lokela ho etsa tse latelang:

  1. Kenya Docker.
  2. Ngolisa sebakeng sa marang-rang sa Docker Hub.
  3. Kena akhaonteng ea hau ka ho sebelisa taelo e latelang ho terminal:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

Joale o hloka, o sebelisa terminal, e-ea bukeng sa-frontend 'me u tsamaise taelo e latelang moo:

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

Mona le ka tlase ho litaelo tse tšoanang $DOCKER_USER_ID e lokela ho nkeloa sebaka ke lebitso la hau la mosebelisi ho Docker Hub. Ka mohlala, karolo ena ea taelo e ka shebahala tjena: rinormaloku/sentiment-analysis-frontend.

Tabeng ena, taelo ena e ka khutsufatsoa ka ho tlosa ho eona -f Dockerfile, kaha foldareng eo re phethisang taelo ena ho eona e se e ntse e na le faele ena.

E le ho romela setšoantšo se phethiloeng sebakeng sa polokelo, re hloka taelo e latelang:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

Kamora ho e qeta, sheba lenane la hau la polokelo ho Docker Hub ho bona hore na setšoantšo se sutumelitsoe ka katleho polokelong ea leru.

▍Ho qala setshelo

Hona joale mang kapa mang a ka khoasolla le ho tsamaisa setšoantšo se tsejoang e le $DOCKER_USER_ID/sentiment-analysis-frontend. Ho etsa sena, o hloka ho tsamaisa tatellano e latelang ea litaelo:

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

Hona joale setshelo se ntse se sebetsa, 'me re ka tsoela pele ho sebetsa ka ho etsa litšoantšo tse ling tseo re li hlokang. Empa pele re tsoela pele, a re utloisiseng moralo 80:80, e fumanoang taelong ea ho tsamaisa setšoantšo 'me e ka bonahala e ferekanya.

  • Nomoro ea pele 80 ke nomoro ea boema-kepe ea moamoheli (ke hore komporo ea lehae).
  • Nomoro ea bobeli 80 ke kou ea sets'oants'o seo kopo e lokelang ho fetisetsoa ho sona.

Nahana ka papiso e latelang.

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana
Phetiso ea Boema-kepe

Sistimi e fetisetsa likopo tse tsoang boema-kepeng <hostPort> ho ea boema-kepeng <containerPort>. Ke hore, ho kena boema-kepeng 80 komporo e fetisetsoa boema-kepe 80 setshelo.

Ho tloha koung 80 e butsoeng komporong ea lehae, o ka fihlella ts'ebeliso ho tsoa komporong ena ho localhost:80. Haeba sistimi ea hau e sa tšehetse Docker, o ka tsamaisa ts'ebeliso mochining oa Docker, oo aterese ea oona e tla shebahala joalo. <docker-machine ip>:80. Ho fumana aterese ea IP ea mochini o sebetsang oa Docker, o ka sebelisa taelo docker-machine ip.

Mothating ona, hang ha sets'oants'o sa sesebelisoa se ka pele se qalile ka katleho, u lokela ho khona ho bula leqephe la sona ho sebatli.

▍.dockerignore faele

Ho aha setšoantšo sa ts'ebeliso SA-Frontend, re ka hlokomela hore ts'ebetso ena e lieha haholo. Lebaka ke hobane moelelo oa kaho ea setšoantšo o tlameha ho romelloa ho daemon ea Docker. Bukana e emelang moelelo oa mohaho e fanoe e le khang ea ho qetela ea taelo docker build. Tabeng ea rona, ho na le letheba qetellong ea taelo ena. Sena se fella ka hore sebopeho se latelang se kenyelelitsoe moelelong oa kopano:

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

Empa ho lifoldara tsohle tse teng mona, re hloka feela foldara build. Ho jarolla ntho efe kapa efe ke tšenyo ea nako. U ka potlakisa moaho ka ho bolella Docker hore na ke li-directory life tseo u lokelang ho li hlokomoloha. Ho etsa sena, re hloka faele .dockerignore. Uena, haeba u tloaelane le faele .gitignore, sebopeho sa faele ena mohlomong se tla shebahala se tloaelehile. E thathamisa li-directory tseo sistimi ea kaho ea litšoantšo e ka e hlokomolohang. Tabeng ea rona, litaba tsa faele ena li shebahala tjena:

node_modules
src
public

faele .dockerignore e tlameha ho ba foldareng e tšoanang le faele Dockerfile. Hona joale kopano ea setšoantšo e tla nka metsotsoana e seng mekae.

Ha re sebetsanang le setšoantšo sa sesebelisoa sa Java.

▍ Ho aha sets'oants'o sa setshelo bakeng sa sesebelisoa sa Java

U tseba eng, 'me u se u ithutile tsohle tseo u li hlokang ho etsa litšoantšo tsa setshelo. Ke kahoo karolo ena e tla ba khutšoanyane haholo.

Bula faele Dockerfile, e fumanehang foldareng ea morero sa-webapp. Haeba u bala mongolo oa faele ena, joale ho eona u tla kopana le meaho e 'meli e mecha e qalang ka mantsoe a bohlokoa ENV и EXPOSE:

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

Lentsoe la sehlooho ENV e o lumella ho phatlalatsa mefuta e fapaneng ea tikoloho ka har'a lijana tsa Docker. Haholo-holo, molemong oa rona, e u lumella ho beha URL ho fihlella API ea kopo e etsang tlhahlobo ea mongolo.

Lentsoe la sehlooho EXPOSE e o lumella ho bolella Docker ho bula boema-kepe. Re tla sebelisa boema-kepe bona ha re ntse re sebetsa le kopo. Mona u ka bona seo Dockerfile bakeng sa kopo SA-Frontend ha ho taelo e joalo. Sena ke sa merero ea litokomane feela, ka mantsoe a mang, moaho ona ke oa 'mali Dockerfile.

Ho aha setšoantšo le ho se sutumelletsa sebakeng sa polokelo ho shebahala hantle joalo ka mohlala o fetileng. Haeba ha u e-s'o itšepe haholo ka bokhoni ba hau, litaelo tse lumellanang li ka fumanoa faeleng README.md foldareng sa-webapp.

▍ Ho aha setšoantšo sa setshelo bakeng sa ts'ebeliso ea Python

Haeba u sheba litaba tsa faele Dockerfile foldareng sa-logicu ke ke ua fumana letho le lecha moo. Litaelo tsa ho haha ​​​​sets'oants'o le ho se sutumelletsa sebakeng sa polokelo le tsona li lokela ho tloaeleha ho uena, empa, joalo ka ha ho le joalo ka lits'ebetso tsa rona tse ling, li ka fumanoa faeleng. README.md foldareng sa-logic.

▍Lekola lits'ebetso tse kentsoeng ka har'a linkho

A na u ka tšepa ntho eo u e-s'o e hlahlobe? Le 'na nke ke ka khona. Ha re lekeng lijana tsa rona.

  1. Ha re qale setshelo sa kopo sa-logic 'me u e hlophise hore e mamele boema-kepe 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. Ha re qale setshelo sa kopo sa-webapp 'me u e hlophise hore e mamele boema-kepe 8080. Ntle le moo, re hloka ho beha boema-kepe boo sesebelisoa sa Python se tla mamela likopo ho tsoa ho sesebelisoa sa Java ka ho abela sebaka se fapaneng sa tikoloho. 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

Ho ithuta ho fumana aterese ea IP ea setshelo kapa Docker VM, sheba faele README.

Ha re qale setshelo sa kopo sa-frontend:

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

Hona joale ntho e 'ngoe le e' ngoe e loketse ho tsamaea ka har'a sebatli ho ea atereseng localhost:80 le ho leka app.

Ka kopo hlokomela hore haeba u fetola koung bakeng sa sa-webapp, kapa haeba u ntse u sebelisa Docker VM, u tla hloka ho hlophisa faele App.js ho tsoa sephuthelong sa-frontendka ho fetola aterese ea IP kapa nomoro ea boema-kepe ka mokhoa analyzeSentence()ka ho kenya tlhahisoleseling ea hajoale sebakeng sa data e sa sebetseng. Ka mor'a moo, o hloka ho kopanya setšoantšo hape ebe o se sebelisa.

Sena ke seo sets'oants'o sa rona sa ts'ebeliso se shebahalang joale.

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana
Li-microservices li tsamaisoa ka har'a lijana

Kakaretso: hobaneng re hloka sehlopha sa Kubernetes?

Re sa tsoa hlahloba lifaele Dockerfile, o buile ka mokhoa oa ho aha litšoantšo le ho li sutumelletsa sebakeng sa polokelo ea Docker. Ho phaella moo, re ithutile mokhoa oa ho potlakisa kopano ea litšoantšo ka ho sebelisa faele .dockerignore. Ka lebaka leo, li-microservices tsa rona li se li sebetsa ka har'a lijana tsa Docker. Mona o kanna oa ba le potso e nepahetseng ka botlalo mabapi le hore na hobaneng re hloka Kubernetes. Karabo ea potso ena e tla neheloa karolong ea bobeli ea boitsebiso bona. Khabareng, nahana ka potso e latelang:
Ha re nke hore ts'ebeliso ea rona ea tlhahlobo ea mongolo e se e tumme lefatšeng ka bophara. Likopo tse limilione li tla ho eena motsotso o mong le o mong. Sena se bolela hore microservices sa-webapp и sa-logic e tla ba tlas'a khatello e matla haholo. Mokhoa oa ho lekanya lijana tse tsamaisang li-microservices?

Kubernetes Tutorial Karolo ea 1: Likopo, Litšebeletso tse nyane, le lijana

Source: www.habr.com

Eketsa ka tlhaloso