Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada

Codsigeena, Habr wuxuu abuuray xarun Kubureteska waxaana ku faraxsanahay inaan gelino daabacaadi ugu horeysay. Subscribe dheh!

Kubernetes waa sahlan tahay. Maxay baananku lacag badan iigu siinayaan si aan uga shaqeeyo aaggan, iyadoo qof kastaa uu awood u yeelan karo tignoolajiyadan dhowr saacadood gudahood?

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada

Haddii aad ka shakisan tahay in Kubernetes si dhakhso ah loo baran karo, waxaan kuu soo jeedinayaa inaad adigu isku daydo. Magac ahaan, markaad si fiican u baratay alaabtan, waxaad awoodi doontaa inaad socodsiiso codsi ku salaysan adeeg-yaraha ee kutlada Kubernetes. Waan dammaanad qaadi karaa tan, maadaama ay si sax ah u tahay habka loo isticmaalo halkan ee aan baro macaamiisheena inay la shaqeeyaan Kubernetes. Maxaa hagahan ka dhigaya kuwa kale? Dhab ahaantii, waxaa jira waxyaabo badan. Sidaa darteed, inta badan qalabkani waxay ku bilaabmaan sharaxaad ku saabsan waxyaabaha fudud - fikradaha Kubernetes iyo sifooyinka amarka kubectl. Qorayaasha agabkan waxay u malaynayaan in akhristayaashooda ay yaqaaniin horumarinta codsiga, adeegaha yar yar, iyo weelasha Docker. Waxaan mari doonnaa jid kale. Marka hore, waxaan ka hadli doonaa sida loo socodsiiyo codsi ku saleysan adeegaha yar yar ee kombiyuutarka. Kadib waxaan eegi doonaa sawirada weelka dhismaha ee adeeg kasta oo yar yar. Taas ka dib, waxaanu baran doonaa Kubernetes oo aanu eegi doonaa geynta codsiga ku salaysan adeegaha yar yar ee kutlada ay maamusho Kubernetes.

Habkani, oo leh habka tartiib tartiib ah ee Kubernetes, wuxuu ku siin doonaa qoto dheer ee fahamka waxa dhacaya ee lagama maarmaanka u ah qofka caadiga ah si loo fahmo sida fudud wax kasta oo Kubernetes ah. Kubernetes runtii waa tignoolajiyada fudud, waase haddii kuwa raba inay bartaan ay ogaadaan halka iyo sida loo isticmaalo.

Hadda, annagoo aan ka sheekayn, aan bilowno oo aan ka hadalno codsiga aan kula shaqayn doono.

Codsiga tijaabada ah

Codsigeena wuxuu qaban doonaa hal shaqo oo keliya. Waxa ay qaadanaysaa hal jumlad, ka dib iyada oo adeegsanaysa agabka falanqaynta qoraalka, waxa ay ku samaynaysaa falanqaynta dareenka weedhan, iyada oo qiimaynaysa hab-dhaqanka shucuureed ee qoraaga jumlada shay gaar ah.

Tani waa sida daaqadda ugu weyn ee codsigan u egtahay.

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada
Codsiga shabakadda ee falanqaynta dareenka ee qoraallada

Marka laga eego dhinaca farsamada, codsigu wuxuu ka kooban yahay saddex adeeg oo yar-yar, kuwaas oo mid kastaa xalliyo hawlo gaar ah:

  • SA-Frontend waa server-ka Nginx kaas oo u adeega faylalka React static.
  • SA-WebApp waa codsi shabakadeed oo ku qoran Java kaas oo ka baaraandegaya codsiyada dhinaca hore.
  • SA-Logic waa codsi Python kaas oo sameeya falanqaynta dareenka qoraalka.

Waxaa muhiim ah in la ogaado in adeegaha yar yar aysan ka jirin meel gooni ah. Waxay hirgeliyaan fikradda "kala-soocidda mas'uuliyadda", laakiin waqti isku mid ah waxay u baahan yihiin inay la falgalaan midba midka kale.

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada
Xogtu waxay ku socotaa codsiga

Jaantuska kore, waxaad ku arki kartaa heerarka nambarada ee nidaamka, oo muujinaya socodka xogta codsiga. Aynu eegno iyaga:

  1. Barrawsarku wuxuu ka codsanayaa fayl server-ka index.html (kaas oo, isna, soo dejinaya xirmada codsiga React).
  2. Isticmaaluhu waxa uu la falgalaa arjiga, tani waxa ay keenaysaa in loo yeedho arjiga shabkada ee Guga.
  3. Codsiga shabakada wuxuu u gudbiyaa codsiga lagu sameeyo falanqaynta qoraalka codsiga Python.
  4. Codsiga Python wuxuu sameeyaa falanqaynta dareenka qoraalka wuxuuna soo celiyaa natiijada iyadoo laga jawaabayo codsiga.
  5. Codsiga gu'ga waxa uu jawaab u diraa arjiga React (kaasoo, isna, tusaya natiijada falanqaynta qoraalka isticmaalaha).

Koodhka codsiyadan oo dhan waa la heli karaa halkan. Waxaan kugula talinayaa in aad nuqul ka sameyso kaydkan naftaada hadda, maadaama ay jiraan tijaabooyin badan oo xiiso leh oo naga horreeya.

Ku socodsiinta arjiga ku salaysan adeeg-yaraha ee mashiinka deegaankaaga

Si codsigu u shaqeeyo, waxaan u baahanahay inaan bilowno dhammaan saddexda adeeg ee yaryar. Aynu ku bilowno kuwa ugu jeexjeexan dhamaantood - codsiga-dhamaadka hore.

▍ Diyaarso falcelinta horumarka deegaanka

Si aad u socodsiiso codsiga React, waxaad u baahan tahay inaad ku rakibto Node.js platformka iyo NPM kombayutarkaaga. Marka aad waxaas oo dhan ku rakibto, isticmaal terminalka si aad ugu socoto galkaaga mashruuca sa-frontend oo socodsii amarka soo socda:

npm install

Adigoo ku socodsiinaya amarkan galka node_modules ku tiirsanaanta codsiga React waa la rari doonaa, diiwaanada kuwaas oo ku jira faylka package.json. Marka ku-tiirsanaanta lagu soo dejiyo isla galka, socodsii amarka soo socda:

npm start

Waa intaas. Hadda codsiga React waa socdaa, waxaad geli kartaa adiga oo aadaya ciwaanka soo socda ee biraawsarkaaga: localhost:3000. Waxaad wax ka bedeli kartaa koodka. Isla markiiba waxaad arki doontaa saamaynta isbeddeladan browserka. Tani waxay suurtogal u tahay iyada oo ay ugu wacan tahay waxa loogu yeero "kulul" beddelka modules. Tani waxay ka dhigaysaa horumarka-dhamaadka hore khibrad fudud oo lagu raaxaysto.

▍Diyaarinta React codsiga wax soo saarka

Ujeedada dhabta ah ee isticmaalka codsiga React, waxaan u baahannahay inaan u beddelno galal aan caadi ahayn oo aan u adeegno macaamiisha annaga oo adeegsanayna server-ka shabakadda.

Si aad u dhisto codsiga React, mar labaad addoo isticmaalaya terminalka, u gudub galka sa-frontend oo socodsii amarka soo socda:

npm run build

Tani waxay abuuri doontaa tusaha galka mashruuca build. Waxay ka koobnaan doontaa dhammaan faylasha taagan ee lagama maarmaanka u ah in codsiga React uu shaqeeyo.

U adeegida faylalka taagan iyadoo la isticmaalayo Nginx

Marka hore waxaad u baahan tahay inaad rakibto oo socodsiiso serverka shabakadda Nginx. waa waad soo dejisan kartaa oo waxaad ka heli kartaa tilmaamo ku saabsan sida loo rakibo oo loo socodsiiyo. Markaa waxaad u baahan tahay inaad nuqul ka sameysato waxa ku jira galka sa-frontend/build gal [your_nginx_installation_dir]/html.

Habkan, faylka la sameeyay inta lagu guda jiro habka dhisitaanka codsiga React index.html waxaa laga heli karaa at [your_nginx_installation_dir]/html/index.html. Kani waa faylka, sida caadiga ah, server-ka Nginx uu soo saaro marka la gelayo. Seerfarka waxa loo habeeyey inuu ku dhegeysto dekedda 80, laakiin waxaa lagu habeyn karaa habka aad u baahan tahay adigoo tafatiraya faylka [your_nginx_installation_dir]/conf/nginx.conf.

Hadda fur browser-kaaga oo tag localhost:80. Waxaad arki doontaa bogga codsiga React.

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada
Codsiga jawaab celinta ee u adeego server-ka Nginx

Haddaad hadda wax gasho garoonka Type your sentence oo taabo badhanka Send - waxba dhici maayo. Laakiin, haddii aad eegto console-ka, waxaad ku arki kartaa farriimaha khaladka ah halkaas. Si loo fahmo halka saxda ah ee khaladaadkani ka dhacaan, aynu falanqeyno code-ka codsiga.

▍ Falanqaynta koodhka codsiga dhamaadka-hore

Sida loo furo koodka faylka App.js, waan arki karnaa in la riixo badhanka Send wuxuu ugu yeeraa hab analyzeSentence(). Xeerka habkan ayaa hoos ku qoran. Fadlan la soco in sadar kasta oo leh faallo foomka # Номер, waxaa jira sharaxaad lagu bixiyay hoos code. Waxaan u falanqeyn doonaa jajabyada code ee kale si la mid ah.

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 kaas oo codsiga POST la sameeyay. Waxa loo malaynayaa in uu jiro codsi ciwaankan ka sugaya codsiyadaas.

2.Guddiga codsiga loo diray codsiga. Waa kan tusaale ahaan guddiga codsiga:

{
    sentence: "I like yogobella!"
}

3.Marka jawaabta codsiga la helo, xaaladda qaybta waa la cusboonaysiiyaa. Tani waxay keenaysaa in qaybta dib loo sameeyo. Haddii aan helno xogta (taas oo ah, shay JSON ka kooban xogta gelinta iyo dhibcaha qoraalka la xisaabiyay), waxaanu soo saari doonaa qaybta Polarity, maadaama shuruudaha ku habboon la buuxin doono. Sidan ayaanu ku qeexnay qaybta:

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

Koodhku wuxuu u muuqdaa inuu si fiican u shaqeeyo. Maxaa ka qaldan kan, si kastaba? Haddii aad u maleyso in ciwaanka uu codsigu isku dayayo in uu u soo diro codsiga POST, aysan jirin wax wali aqbali kara oo ka baaraandegi kara codsigan, markaas waxaad noqon doontaa mid sax ah. Magac ahaan, si loo habeeyo codsiyada lagu helo http://localhost:8080/sentiment, waxaan u baahanahay inaan wadno codsi shabakadeed ku salaysan gu'ga.

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada
Waxaan u baahanahay codsi gu'ga oo aqbali kara codsiga POST

▍ Dejinta codsi shabakad ku salaysan Guga

Si loo geeyo codsiga guga, waxaad u baahan doontaa JDK8 iyo Maven iyo doorsoomayaal deegaan oo si habboon loo habeeyey. Marka lagu rakibo waxaas oo dhan, waxaad sii wadi kartaa shaqada mashruucayaga.

▍ Baakad arji gal gashad

U soco, addoo isticmaalaya terminal, gal galka sa-webapp oo geli amarka soo socda:

mvn install

Ka dib markii amarkan ku socodsiiyo galka sa-webapp hagaha ayaa la abuuri doonaa target. Halkani waa halka uu ku yaalo codsiga Java, oo lagu baakadeeyay fayl jar ah, oo uu matalo faylka sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

▍Ku socodsiinta codsiga Java

Tag gal target oo ku socodsii codsiga amarkan soo socda:

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

Cilad ayaa dhici doonta marka la fulinayo amarkan. Si aan u bilowno hagaajinteeda, waxaan ku falanqeyn karnaa tafaasiisha ka reeban ee ku jirta xogta raad-raaceedka:

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

Annaga, waxa ugu muhiimsan halkan waa sheegida suurtagalnimada in la caddeeyo macnaha sa.logic.api.url. Aynu falanqeyno koodka uu khaladku ku dhaco.

▍ Falanqaynta code codsiga Java

Halkan waxaa ah godadka koodka halka uu khaladku ka dhaco.

@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. In SentimentController beer baa jirta saLogicApiUrl. Qiimaheeda waxaa lagu qeexay hantida sa.logic.api.url.
  2. String saLogicApiUrl waxay kuxirantahay qiimaha /analyse/sentiment. Si wada jir ah ayey u sameeynayaan ciwaanka loogu yeero adeegaha yar yar ee sameeya falanqaynta qoraalka.

▍ Deji qiimaha hantida

Guga, isha caadiga ah ee qiyamka hantidu waa fayl application.properties, kaas oo laga heli karo sa-webapp/src/main/resources. Laakiin isticmaalkeedu maaha habka kaliya ee lagu dejiyo qiyamka hantida. Tan waxa kale oo lagu samayn karaa iyadoo la isticmaalayo amarka soo socda:

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

Qiimaha gurigan waa inuu tilmaamaa ciwaanka codsigayaga Python.

Marka la habeeyo, waxaanu u sheegaynaa arjiga mareegta Guga halka uu u baahan yahay inuu tago si uu u sameeyo codsiyada falanqaynta qoraalka.

Si aan nolosheenna u adkayn, waxaan go'aansan doonaa in codsiga Python laga heli karo goobta localhost:5000 oo aynu isku dayno inaynaan ilaawin. Natiijo ahaan, amarka lagu bilaabayo arjiga gu'ga wuxuu u ekaan doonaa sidan:

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

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada
Nidaamkeena waxaa ka maqan codsi Python ah

Hadda waxa kaliya ee ay tahay inaan sameyno waa inaan wadno arjiga Python nidaamkuna wuxuu u shaqeyn doonaa sidii la filayay.

▍ Dejinta codsiga Python

Si aad u socodsiiso arjiga Python, waa inaad haysaa Python 3 iyo Pip oo lagu rakibay, doorsoomayaasha deegaanka ee habboon waa in si sax ah loo dejiyaa.

▍Ku-tiirsanaanta rakibidda

Tag galka mashruucaaga sa-logic/sa oo socodsii amarada soo socda:

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

▍Bilow codsiga

Kadib rakibida ku tiirsanaanta, waxaan diyaar u nahay inaan socodsiino codsiga:

python sentiment_analysis.py

Kadib socodsiinta amarkan waxaa naloo sheegi doona kuwa soo socda:

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

Tani waxay ka dhigan tahay in codsigu socdo oo uu sugayo codsiyada localhost:5000/

▍Code Research

Aynu eegno koodka codsiga Python si aan u fahanno sida uu uga jawaabo codsiyada:

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. Bilaabida shay Flask.
  2. Sheegista ciwaanka fulinta codsiyada POST.
  3. Soo Celinta Hanti sentence laga soo bilaabo guddiga codsiga.
  4. Bilaabida Shayga Qarsoon TextBlob iyo helitaanka qiimaha polarity jumlada ugu horeysa ee lagu helo jirka codsiga (xaaladkeena, tani waa jumlada kaliya ee loo diro falanqaynta).
  5. Soo celinta jawaabta jirkeedu ka kooban yahay qoraalka jumlada iyo tilmaame la xisaabiyay polarity.
  6. Bilow codsiga Flask, kaas oo laga heli karo 0.0.0.0:5000 (waxaad sidoo kale ku heli kartaa adigoo isticmaalaya qaab dhismeed foomka ah localhost:5000).

Adeegga yar-yar ee ka kooban codsiga ayaa hadda socda. Waa la habeeyey si ay isula falgalaan. Tani waa sida jaantuska codsigu u eg yahay heerkan shaqo.

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada
Dhammaan adeegaha yar yar ee ka kooban codsiga waxa loo keenay hab shaqo

Hadda, ka hor intaadan sii wadin, ku fur arjigaaga React browserka oo isku day inaad jumlada ku kala qaybiso. Haddii wax walba si sax ah loo sameeyo - ka dib markaad riixdo badhanka Send waxaad arki doontaa natiijada falanqaynta ka hooseeya goobta qoraalka.

Qaybta soo socota, waxaan uga hadli doonaa sida loogu socodsiiyo adeegyadeena yaryar weelasha Docker. Tani waxay lagama maarmaan u tahay si loogu diyaariyo arjiga si loogu shaqeeyo kutlada Kubernetes.

Weelasha docker

Kubureteska waa nidaam si otomaatig ah u dirida, cabirida iyo maaraynta codsiyada weelka ku jira. Waxa kale oo loo yaqaan "container orchesterrator". Haddii Kubernetes la shaqeeyo weelasha, ka hor inta aan la isticmaalin nidaamkan waa in aan marka hore helno weelashaas. Laakiin marka hore, aan ka hadalno waxa weelku yihiin. Waxaa laga yaabaa in jawaabta ugu fiican ee su'aasha ah waxa ay tahay waxaa laga heli karaa dukumentiyo Docker:

Sawirka weelku waa xirmo fudud, iskiis ah, la fulin karo oo ka kooban codsi, kaas oo ay ku jiraan wax kasta oo lagama maarmaanka u ah in lagu socodsiiyo: code code, deegaanka fulinta, qalabka nidaamka iyo maktabadaha, goobaha. Barnaamijyada kontaynarada ah waxaa lagu isticmaali karaa Linux iyo deegaanka Windows, waxayna had iyo jeer u shaqeyn doonaan si isku mid ah iyada oo aan loo eegin kaabayaasha.

Tani waxay ka dhigan tahay in weelasha lagu shaqeyn karo kombiyuutar kasta, oo ay ku jiraan server-yada wax soo saarka, iyo codsiyada ku jira waxay u shaqeyn doonaan si la mid ah deegaan kasta.

Si aad u sahamiso sifooyinka weelasha oo aynu u barbar dhigno siyaabaha kale ee loo socodsiiyo codsiyada, aynu eegno tusaale u adeegida codsiga falcelinta iyadoo la adeegsanayo mishiinka farsamada iyo weel.

▍ U adeegida faylasha static ee codsiga React iyadoo la isticmaalayo mishiin dalwad ah

Isku day in aan abaabulo adeegga faylalka taagan iyadoo la adeegsanayo mashiinnada farsamada gacanta, waxaan la kulmi doonaa khasaarooyinka soo socda:

  1. Isticmaalka aan waxtarka lahayn ee agabka, maadaama mashiinka farsamada gacanta uu yahay nidaam hawleed buuxa.
  2. Ku-tiirsanaanta Platform. Waxa ku shaqeeya kombuyuutar maxalli ah ayaa laga yaabaa in aanu ku shaqayn server-ka wax soo saarka.
  3. Qunyar-socod iyo miisaan-dhaqaaleed-dhaqdhaqaaqa leh ee xalka mashiinka ku-saleysan.

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada
Adeegga shabakada Nginx oo u adeegaya faylal aan caadi ahayn oo ku shaqeeya mishiinka farsamada

Haddii weelasha loo isticmaalo in lagu xalliyo dhibaato la mid ah, markaa, marka la barbardhigo mishiinnada farsamada, awoodaha soo socda ayaa la ogaan karaa:

  1. Isticmaalka hufan ee ilaha: la shaqeynta nidaamka qalliinka iyadoo la adeegsanayo Docker.
  2. Platform madax banaan. Weelka uu horumariyuhu ku shaqayn karo kumbiyuutarkiisa ayaa meel kasta ka shaqayn doona.
  3. Hawlgelinta fudud iyadoo la isticmaalayo lakabyo muuqaal ah.

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada
Adeegga shabakada Nginx oo u adeegaya faylal aan caadi ahayn oo ku dhex socda weel

Waxaan kaliya barbar dhignay mashiinnada farsamada iyo weelasha dhowr dhibcood, laakiin xitaa tani waa ku filan tahay in la dareemo xoogga weelasha. waa Waxaad ka heli kartaa faahfaahin ku saabsan weelasha Docker.

▍ Dhisidda sawirka weelka ee codsiga falcelinta

Dhismaha aasaasiga ah ee weelka Docker waa faylka Dockerfile. Bilowga faylkan, diiwaan ayaa laga sameeyaa sawirka aasaasiga ah ee weelka, ka dibna waxaa jira tilmaamo isku xigxiga oo tilmaamaya sida loo sameeyo weel daboolaya baahida codsi gaar ah.

Kahor intaanan bilaabin la shaqaynta faylka DockerfileAan xasuusano wixii aan sameynay si aan u diyaarino faylalka arjiga React ee loogu shubayo server-ka Nginx:

  1. Dhisida xidhmada codsiga React (npm run build).
  2. Bilaabida serverka Nginx
  3. Koobiyaynta waxa ku jira hagaha build ka galka mashruuca sa-frontend gal server-ka nginx/html.

Hoos waxaad ka arki kartaa isbarbardhigga u dhexeeya abuurista weel iyo tillaabooyinka kore ee lagu sameeyay kombuyutarka deegaankaaga.

▍ Diyaarinta Dockerfile ee codsiga SA-Frontend

Tilmaamaha ku jiri doona Dockerfile codsi SA-Frontend, oo ka kooban laba kooxood oo kaliya. Xaqiiqdu waxay tahay in kooxda horumarinta Nginx ay diyaariyeen aasaas sawir Nginx, kaas oo aan u isticmaali doono si aan u abuurno sawirkayaga. Waa kuwan labada tallaabo ee aan u baahannahay inaan ku tilmaamno:

  1. Saldhigga sawirku waa inuu noqdaa sawirka Nginx.
  2. Tusmada Faylka sa-frontend/build waxay u baahan tahay in lagu koobiyeeyo galka sawirka nginx/html.

Haddii aad ka baxdo sharaxaaddan oo aad u gudubto faylka Dockerfile, markaas waxay u ekaan doontaa sidan:

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

Sida aad arki karto, wax kasta oo halkan ku yaal waa mid aad u fudud, iyo waxa ku jira faylka xitaa waxay noqdaan kuwo la akhriyi karo oo la fahmi karo. Faylkan ayaa u sheegaya nidaamka inuu sawirka qaado nginx oo leh wax kasta oo horeba ugu jiray, oo koobbi waxa ku jira hagaha build ilaa tusaha nginx/html.

Halkan waxaa laga yaabaa inaad hayso su'aal ku saabsan sidaan ku ogaanayo meesha saxda ah ee aad uga baahan tahay inaad ka nuqul ka sameyso faylasha galka build, taas oo ah, meesha waddadu ka timid /usr/share/nginx/html. Dhab ahaantii, ma jiraan wax adag halkan sidoo kale. Xaqiiqdu waxay tahay in macluumaadka la xidhiidha laga heli karo sharaxaad sawir.

▍ Dhisidda sawirka oo ku dhejinta kaydka

Kahor intaanan la shaqeynin sawirka la dhammeeyey, waxaan u baahanahay inaan ku riixno bakhaarka sawirka. Si tan loo sameeyo, waxaan isticmaali doonaa goobta martigelinta sawirka daruurta bilaashka ah ee Docker Hub. Marxaladdan shaqada waxaad u baahan tahay inaad sameyso waxyaabaha soo socda:

  1. Rakib Docker.
  2. Iska diiwaan geli shabakada Docker Hub
  3. Gal akoonkaaga adiga oo ku socodsiinaya amarka soo socda ee terminalka:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

Hadda waxaad u baahan tahay inaad isticmaasho terminalka si aad u tagto hagaha sa-frontend oo halkaa ku socodsii amarka soo socda:

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

Halkan iyo dheeraad ah amarrada la midka ah $DOCKER_USER_ID waa in lagu beddelaa magacaaga isticmaale ee Docker Hub. Tusaale ahaan, qaybtan amarku waxay u ekaan kartaa sidan: rinormaloku/sentiment-analysis-frontend.

Xaaladdan oo kale, amarkan waa la soo gaabin karaa marka laga saaro -f Dockerfile, maadaama faylkan uu horey ugu jiray gal-galka aan ku fulineyno amarkan.

Si aan sawirka dhammaysan ugu dirno kaydka, waxaan u baahanahay amarka soo socda:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

Kadib markaad dhamaystirto, hubi liiska kaydadkaaga Docker Hub si aad u fahanto soo galinta sawirka kaydinta daruuraha in lagu guulaystay.

▍Keenista weel

Hadda qof kastaa wuu soo dejisan karaa oo ordi karaa sawirka, oo loo yaqaan $DOCKER_USER_ID/sentiment-analysis-frontend. Si tan loo sameeyo, waxaad u baahan tahay inaad socodsiiso amarradan taxanaha ah:

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

Hadda weelku wuu socdaa, waxaan sii wadi karnaa shaqada annaga oo abuuraya sawirro kale oo aan u baahanahay. Laakiin ka hor intaanan sii wadin, aan fahanno naqshadeynta 80:80, kaas oo ka muuqda amarka bilaabista sawirka oo laga yaabo inuu u muuqdo jahawareer.

  • Lambarka koowaad 80 — kani waa lambarka dekedda martida loo yahay (taasi waa kombuyuutarka deegaanka).
  • Lambarka labaad 80 waa dekedda weelka ee ay tahay in codsiga loo gudbiyo.

Tixgeli sawirka soo socda.

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada
Soo Gudbinta Dekedda

Nidaamku wuxuu dib u jiheeyaa codsiyada dekedda <hostPort> dekedda <containerPort>. Taasi waa, gelitaanka dekedda 80 kombuyuutarku waxa loo weeciyay dekedda 80 weel.

Tan iyo dekedda 80 laga furay kombayutarka maxaliga ah, markaas waxaad ka heli kartaa codsiga kombiyuutarkan at localhost:80. Haddii nidaamkaagu aanu taageerin Docker, arjiga waxa lagu socodsiin karaa mashiinka farsamada ee Docker, ciwaanka kaas oo u ekaan doona <docker-machine ip>:80. Si aad u ogaato ciwaanka IP-ga ee mashiinka farsamada Docker, waxaad isticmaali kartaa amarka docker-machine ip.

Halkaa marka ay marayso, ka dib markaad si guul leh u bilawdo weelka arjiga hore, waa inaad awood u leedahay inaad furto boggeeda browserka.

▍Faylka .dockerignore

Ururinta sawirka codsiga SA-Frontend, waxaan ogaan karnaa in habkani uu u noqdo mid aad u gaabis ah. Tani waxay dhacdaa sababtoo ah muuqaalka dhismaha sawirka waa in loo diraa daemon Docker. Tusaha ka tarjumaya macnaha guud waxaa lagu tilmaamay inuu yahay doodda ugu dambeysa ee amarka docker build. Xaaladeena, waxaa jira dhibic dhamaadka amarkan. Tani waxay keenaysaa in qaabka soo socda lagu daro macnaha guud:

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

Laakiin dhammaan faylalka halkan ku yaal, waxaan u baahanahay oo keliya galka build. Wax kasta oo kale oo la raro waa wakhti lumis. Waxaad dedejin kartaa dhismaha adiga oo u sheegaya Docker tusaha la iska indhatiro. Waa si aan tan u samayno waxaan u baahanahay faylka .dockerignore. Adiga, haddii aad aqoon u leedahay faylka .gitignore, qaab dhismeedka faylkani wuxuu u ekaan doonaa mid la yaqaan. Waxay taxday hagayaal uu nidaamka dhisidda sawirku iska indho tiri karo. Xaaladeena, waxa ku jira faylkan ayaa u eg sidan:

node_modules
src
public

file .dockerignore waa inuu ku jiraa galka isla faylka Dockerfile. Hadda dhisida sawirka waxay qaadan doontaa arrin ilbiriqsiyo ah.

Aynu hadda ka shaqayno sawirka codsiga Java.

▍ Dhisidda sawirka weelka ee codsiga Java

Waad ogtahay waxa, waxaad horay u baratay wax walba oo aad u baahan tahay inaad ogaato si aad u abuurto sawirada weelka. Taasi waa sababta qaybtani ay noqon doonto mid aad u gaaban.

Fur faylka Dockerfilekaas oo ku jira gal mashruuca sa-webapp. Haddii aad akhrido qoraalka faylkan, waxaad arki doontaa kaliya laba dhismo oo cusub oo ku dhex jira, oo ka bilaabaya ereyada muhiimka ah ENV и EXPOSE:

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

Ereyga muhiimka ah ENV Waxay kuu ogolaataa inaad ku dhawaaqdo doorsoomayaasha deegaanka gudaha weelasha Docker. Gaar ahaan, kiiskeena, waxay kuu ogolaaneysaa inaad qeexdo URL si aad u gasho API-ga codsiga ee sameeya falanqaynta qoraalka.

Ereyga muhiimka ah EXPOSE wuxuu kuu ogolaanayaa inaad u sheegto Docker inuu furo deked. Waxaan isticmaaleynaa dekeddan inta aan wadno codsiga. Halkan waxaad ku ogaan kartaa in Dockerfile codsi SA-Frontend amar caynkaas ah ma jiro. Tan waxaa loogu talagalay oo keliya ujeeddooyin dukumeenti ah, si kale haddii loo dhigo, dhismahan waxaa loogu talagalay qofka akhrin doona Dockerfile.

Dhisidda sawirka iyo ku riixida bakhaarka waxay u egtahay mid la mid ah tusaalihii hore. Haddii aadan weli aad ugu kalsoonayn kartidaada, amarrada ku habboon waxaa laga heli karaa faylka README.md faylka sa-webapp.

▍ Dhisidda sawirka weelka ee codsiga Python

Haddii aad eegto waxa ku jira faylka Dockerfile faylka sa-logic, ka dibna ma heli doontid wax cusub naftaada halkaas. Awaamiirta dhismaha sawirka iyo u dirida kaydka waa inay sidoo kale horeba u yaqaaniin, laakiin, sida codsiyadayada kale, waxaa laga heli karaa faylka README.md faylka sa-logic.

▍ Tijaabinta codsiyada weelka ku jira

Ma aamini kartaa wax aanad tijaabin? Aniguna ma awoodo. Aan tijaabinno weelashayada.

  1. Aan bilowno weelka codsiga sa-logic una habeeyaan si ay u dhegaystaan ​​dekedda 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. Aan bilowno weelka codsiga sa-webapp una habeeyaan si ay u dhegaystaan ​​dekedda 8080. Intaa waxaa dheer, waxaan u baahanahay inaan habeyno dekedda uu codsiga Python ku dhageysan doono codsiyada Java-ga annaga oo dib u habeyn ku sameynayno doorsoomiyaha deegaanka 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

Si aad u barato sida loo ogaado ciwaanka IP-ga ee weelka Docker ama mashiinka farsamada, tixraac faylka README.

Aan bilowno weelka codsiga sa-frontend:

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

Hadda wax walba waxay diyaar u yihiin inay tagaan ciwaanka browserka localhost:80 oo tijaabi codsiga

Fadlan ogow haddii aad u bedeshay dekedda sa-webapp, ama haddii aad ku shaqaynayso mashiinka farsamada ee Docker, waxaad u baahan doontaa inaad wax ka beddesho faylka App.js ka gal gal sa-frontendadigoo bedelaya ciwaanka IP-ga ama lambarka dekedda ee habka analyzeSentence(), bedelida macluumaadka hadda jira halkii aad ka ahaan lahayd xogta duugowday. Taas ka dib, waxaad u baahan tahay inaad dib u ururiso sawirka oo aad isticmaasho.

Tani waa sida jaantuska codsigeenu u eg yahay hadda.

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada
Adeegyada yaryar waxay ku shaqeeyaan weel

Soo koobid: maxaan ugu baahanahay kooxda Kubernetes?

Waxaan hadda baarnay faylalka Dockerfile, wuxuu ka hadlay sida loo dhiso sawirada oo loogu riixo kaydka Docker. Intaa waxaa dheer, waxaan baranay sida loo dedejiyo isu imaatinka sawirka iyadoo la adeegsanayo faylka .dockerignore. Natiijo ahaan, adeegyadeenna yar-yar ayaa hadda ku shaqeeya weelasha Docker. Halkan waxaa laga yaabaa inaad hayso su'aal si buuxda loo caddeeyey oo ku saabsan sababta aan ugu baahanahay Kubernetes. Qaybta labaad ee qoraalkan waxa loo go'aamin doonaa ka jawaabista su'aashan. Dhanka kale, tixgeli su'aasha soo socota:
Aynu ka soo qaadno in codsigayaga shabakadda ee falanqaynta qoraalka uu noqday mid caan ka ah adduunka oo dhan. Malaayiin codsi ah ayaa u yimaada isaga daqiiqad kasta. Tani waxay ka dhigan tahay in adeegaha yar yar sa-webapp и sa-logic waxaa saaran culeys weyn. Sidee loo cabbiraa weelasha ku shaqeeya adeegyada yar yar?

Casharka Kubernetes Qaybta 1: Codsiyada, Adeegga yar yar, iyo Konteenarada

Source: www.habr.com

Add a comment