Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container

Noho ny fangatahanay dia namorona ivon-toerana i Habr Kubernetes ary faly izahay mametraka ny boky voalohany ao. Misoratra anarana!

Mora ny Kubernetes. Nahoana ny banky no mandoa vola be amiko mba hiasa amin'io sehatra io, nefa misy afaka mahafehy an'io teknolojia io ao anatin'ny ora vitsy monja?

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container

Raha misalasala ianao fa azo ianarana haingana ny Kubernetes, dia manoro hevitra anao aho hanandrana izany. Izany hoe, rehefa mahafehy an'io fitaovana io ianao dia afaka mampandeha fampiharana mifototra amin'ny microservices ao anaty cluster Kubernetes. Afaka miantoka izany aho, satria mitovy amin'ny fomba ampiasaina eto ihany no ampianarako ny mpanjifanay hiara-miasa amin'ny Kubernetes. Inona no mampiavaka an'ity torolalana ity amin'ny hafa? Raha ny marina dia misy zavatra maro. Noho izany, ny ankamaroan'ireo fitaovana ireo dia manomboka amin'ny fanazavana zavatra tsotra - ny foto-kevitry ny Kubernetes sy ny endriky ny baiko kubectl. Ireo mpanoratra ireo fitaovana ireo dia mihevitra fa ny mpamaky azy dia zatra amin'ny fampivoarana ny fampiharana, ny microservices ary ny container Docker. Handeha amin'ny lalana hafa isika. Voalohany, hiresaka momba ny fomba fampandehanana fampiharana mifototra amin'ny microservices amin'ny solosaina. Avy eo isika dia hijery ny fananganana sary fitoeran-javatra ho an'ny microservice tsirairay. Ary aorian'izay dia hifankafantatra amin'ny Kubernetes isika ary hijery ny fametrahana fampiharana mifototra amin'ny microservices ao anaty cluster tantanin'ny Kubernetes.

Ity fomba fiasa ity, miaraka amin'ny fomba fiasa miandalana amin'ny Kubernetes, dia hanome ny halalin'ny fahatakarana ny zava-mitranga izay ilain'ny sarambaben'olona mba hahatakarana ny fomba fiasan'ny zava-drehetra ao amin'ny Kubernetes. Azo antoka fa teknolojia tsotra ny Kubernetes, raha toa ka mahafantatra ny toerana sy ny fomba ampiasana azy ireo izay te hianatra azy io.

Ankehitriny, tsy misy resaka intsony, andao isika hanomboka ary hiresaka momba ny fampiharana izay hiarahanay.

Fampiharana andrana

Ny fampiharana ataontsika dia tsy hanao afa-tsy asa iray. Mitaky fehezanteny iray ho fampidirana, ary avy eo, amin'ny fampiasana fitaovana famakafakana lahatsoratra, dia manao famakafakana ny fihetseham-po amin'ity fehezanteny ity izy, hahazoana fanombanana ny toe-tsain'ny mpanoratra ny fehezanteny amin'ny zavatra iray.

Toy izao ny endriky ny varavarankelin'ity fampiharana ity.

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container
Fampiharana an-tranonkala ho an'ny famakafakana fihetseham-po amin'ny lahatsoratra

Avy amin'ny fomba fijery ara-teknika, ny fampiharana dia misy microservices telo, ny tsirairay amin'izy ireo dia mamaha andiana asa manokana:

  • SA-Frontend dia mpizara tranonkala Nginx izay manompo rakitra React static.
  • SA-WebApp dia fampiharana tranonkala nosoratana amin'ny Java izay mamaly ny fangatahana avy amin'ny frontend.
  • SA-Logic dia fampiharana Python izay manao famakafakana fihetseham-po amin'ny lahatsoratra.

Zava-dehibe ny manamarika fa tsy misy mitokana ny microservices. Mampihatra ny hevitra hoe "fisarahan'ny andraikitra" izy ireo, saingy amin'ny fotoana iray ihany dia mila mifandray izy ireo.

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container
Mikoriana ao amin'ny fampiharana ny data

Ao amin'ny kisary etsy ambony dia azonao jerena ireo dingana voaisa ao amin'ny rafitra, mampiseho ny fikorianan'ny data ao amin'ny fampiharana. Andeha hojerentsika izy ireo:

  1. Mangataka rakitra amin'ny mpizara ny navigateur index.html (izay indray misintona ny fonosana fampiharana React).
  2. Mifandray amin'ny fampiharana ny mpampiasa, izany dia miteraka antso amin'ny rindranasa tranonkala mifototra amin'ny Lohataona.
  3. Ny fampiharana tranonkala dia mandefa ny fangatahana hanao fanadihadiana lahatsoratra amin'ny fampiharana Python.
  4. Ny fampiharana Python dia manao famakafakana fihetseham-po momba ny lahatsoratra ary mamerina ny valiny ho valin'ny fangatahana.
  5. Ny fampiharana Lohataona dia mandefa valiny amin'ny rindranasa React (izay, kosa, mampiseho ny vokatry ny famakafakana lahatsoratra amin'ny mpampiasa).

Ny kaody ho an'ireo fampiharana rehetra ireo dia azo jerena eto. Manoro hevitra anao aho handika ity tahiry ity ho anao amin'izao fotoana izao, satria misy andrana mahaliana maro mialoha antsika.

Fampandehanana fampiharana mifototra amin'ny microservices amin'ny milina eo an-toerana

Mba hahafahan'ny fampiharana miasa dia mila manomboka ny microservices telo. Andeha isika hanomboka amin'ny mahafatifaty indrindra amin'izy rehetra - ny fampiharana eo anoloana.

▍Amboary ny React ho an'ny fampandrosoana eo an-toerana

Mba hampandehanana rindranasa React dia mila mametraka ny sehatra Node.js sy NPM amin'ny solosainao ianao. Rehefa voapetrakao daholo izany rehetra izany dia ampiasao ny terminal hivezivezy mankany amin'ny lahatahiry tetikasanao sa-frontend ary araho ity baiko manaraka ity:

npm install

Amin'ny fampandehanana ity baiko ity ao amin'ny lahatahiry node_modules ny fiankinan'ny rindranasa React dia ho fenoina, ny firaketana dia ao anaty rakitra package.json. Raha vao alaina ao amin'ny lahatahiry iray ihany ny fiankinan-doha dia araho ity baiko manaraka ity:

npm start

Izay ihany. Amin'izao fotoana izao dia mandeha ny fampiharana React, azonao atao ny miditra amin'ny adiresy manaraka ao amin'ny navigateur: localhost:3000. Azonao atao ny manova zavatra ao amin'ny code. Ho hitanao avy hatrany ny fiantraikan'ireo fiovana ireo ao amin'ny navigateur. Izany dia azo atao noho ny antsoina hoe "mafana" fanoloana Modules. Izany dia mahatonga ny fampandrosoana eo anoloana ho traikefa tsotra sy mahafinaritra.

▍Manomana fampiharana React amin'ny famokarana

Mba hampiasana ny rindranasa React dia mila mamadika azy ho andian-drakitra static isika ary manompo azy ireo amin'ny mpanjifa mampiasa mpizara tranonkala.

Mba hananganana ny rindranasa React, ampiasao indray ny terminal, mandehana mankany amin'ny lahatahiry sa-frontend ary araho ity baiko manaraka ity:

npm run build

Izany dia hamorona lahatahiry ao amin'ny lahatahiry tetikasa build. Hirakitra ny rakitra static rehetra ilaina amin'ny fampiharana React izy io.

▍Manompo rakitra static mampiasa Nginx

Voalohany dia mila mametraka sy mampandeha ny mpizara tranonkala Nginx ianao. izany afaka misintona azy ianao ary mahita torolàlana momba ny fametrahana sy fampandehanana azy. Avy eo dia mila mandika ny votoatin'ny lahatahiry ianao sa-frontend/build fampirimana [your_nginx_installation_dir]/html.

Miaraka amin'ity fomba ity, ny rakitra novokarina nandritra ny dingan'ny fananganana ny fampiharana React index.html dia ho hita ao amin'ny [your_nginx_installation_dir]/html/index.html. Ity no rakitra izay, amin'ny alàlan'ny default, ny mpizara Nginx dia mamokatra rehefa miditra azy. Ny mpizara dia voarindra hihaino amin'ny seranana 80, saingy azo amboarina araka izay ilainao izany amin'ny alàlan'ny fanitsiana ny rakitra [your_nginx_installation_dir]/conf/nginx.conf.

Sokafy ny navigateur ary mandehana any localhost:80. Ho hitanao ny pejy fampiharana React.

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container
React application atolotry ny mpizara Nginx

Raha toa ianao ka mampiditra zavatra ao amin'ny saha Type your sentence ary tsindrio ny bokotra Send - tsy hisy na inona na inona hitranga. Saingy, raha mijery ny console ianao dia afaka mahita hafatra diso ao. Mba hahatakarana hoe aiza marina no misy ireo hadisoana ireo, andeha hojerentsika ny code fampiharana.

▍Famakafakana kaody fampiharana eo anoloana

Jereo ny code code App.js, hitantsika fa manindry ny bokotra Send miantso fomba analyzeSentence(). Ny code ho an'ity fomba ity dia omena etsy ambany. Mariho fa ho an'ny andalana tsirairay izay misy fanehoan-kevitra momba ny endrika # Номер, misy fanazavana omena eto ambany ny code. Hamakafaka ireo sombin-kaody hafa amin'ny fomba mitovy isika.

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. Ny URL nanaovana ny fangatahana POST. Heverina fa misy fangatahana amin'ity adiresy ity izay manantena ny fangatahana toy izany.

2.Ny vatana fangatahana nalefa tany amin'ny fampiharana. Ity misy ohatra vatana fangatahana:

{
    sentence: "I like yogobella!"
}

3.Rehefa voaray ny valin'ny fangatahana dia havaozina ny toetry ny singa. Izany dia mahatonga ny singa hamerenana indray. Raha mahazo angon-drakitra izahay (izany hoe, zavatra JSON misy ny angon-drakitra fampidirana sy ny isa kajy) dia hamoaka ilay singa. Polarity, satria ho feno ny fepetra mety. Toy izao ny famaritana ny singa:

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

Toa mandeha tsara ilay kaody. Inona anefa no tsy mety amin'ity? Raha heverinao fa amin'ny adiresin'ny fangatahana handefasana fangatahana POST, dia tsy misy na inona na inona afaka hanaiky sy handamina izany fangatahana izany, dia ho marina tanteraka ianao. Izany hoe, hikarakarana ny fangatahana voaray ao amin'ny http://localhost:8080/sentiment, mila manao fampiharana tranonkala mifototra amin'ny Lohataona isika.

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container
Mila fampiharana Lohataona izahay izay afaka manaiky fangatahana POST

▍Fametrahana fampiharana tranonkala mifototra amin'ny Lohataona

Mba hametrahana rindranasa Lohataona dia mila JDK8 sy Maven ianao ary ny fari-piainan'ny tontolo iainana voarindra tsara. Rehefa voapetrakao ireo rehetra ireo dia afaka manohy miasa amin'ny tetikasanay ianao.

▍Mametaka fampiharana ao anaty rakitra siny

Mandehana, mampiasa terminal, mankany amin'ny lahatahiry sa-webapp ary ampidiro ity baiko manaraka ity:

mvn install

Rehefa avy nandositra ity baiko ity ao amin'ny lahatahiry sa-webapp hatsangana ny lahatahiry target. Eo no hisy ny fampiharana Java, fonosina anaty rakitra siny, asehon'ilay rakitra sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

▍Mampandeha fampiharana Java

Mandehana any amin'ny fampirimana target ary tanteraho ny fampiharana amin'ny baiko manaraka:

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

Hisy hadisoana hitranga eo am-panatanterahana ity baiko ity. Mba hanombohana ny fanamboarana azy dia azontsika atao ny manadihady ny antsipirian'ny fanavahana ao amin'ny angona trace stack:

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

Aminay, ny zava-dehibe indrindra eto dia ny filazana ny tsy fahafahana manazava ny dikany sa.logic.api.url. Andeha hodinihintsika ny kaody misy ny hadisoana.

▍Famakafakana kaody fampiharana Java

Ity ny snippet kaody misy ny hadisoana.

@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. Ao amin'ny SentimentController misy saha saLogicApiUrl. Ny sandany dia voafaritra amin'ny fananana sa.logic.api.url.
  2. -dalana, saLogicApiUrl mitambatra amin'ny sandany /analyse/sentiment. Miara-mamorona ny adiresy hanaovana antso amin'ny microservice izay manao famakafakana lahatsoratra.

▍Mametraha sandan'ny fananana

Amin'ny lohataona, ny loharano mahazatra ny soatoavin'ny fananana dia rakitra application.properties, izay azo jerena ao amin'ny sa-webapp/src/main/resources. Saingy tsy ny fampiasana azy ihany no fomba hametrahana ny soatoavin'ny fananana. Azo atao koa ity baiko manaraka ity:

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

Ny sandan'ity fananana ity dia tokony hanondro ny adiresin'ny fampiharana Python.

Amin'ny alàlan'ny fanamafisana azy dia lazaintsika amin'ny rindranasa tranonkala Lohataona ny toerana tokony halehany hanaovana fangatahana fanadihadiana lahatsoratra.

Mba tsy hanasarotra ny fiainantsika dia hanapa-kevitra izahay fa ho hita ao ny fampiharana Python localhost:5000 ary andeha isika tsy hanadino izany. Vokatr'izany dia ho toy izao ny baiko hanombohana ny fampiharana Lohataona:

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

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container
Tsy ampy fampiharana Python ny rafitray

Ankehitriny ny hany tsy maintsy ataontsika dia ny mampandeha ny rindranasa Python ary ny rafitra dia hiasa araka ny efa nampoizina.

▍Manangana rindranasa Python

Mba hampandehanana fampiharana Python dia tsy maintsy mametraka Python 3 sy Pip ianao, ary tsy maintsy apetraka tsara ny fari-piainan'ny tontolo iainana.

▍Fametrahana miankina

Mandehana any amin'ny lahatahiry tetikasanao sa-logic/sa ary araho ireto baiko manaraka ireto:

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

▍ Sokafy ny fampiharana

Aorian'ny fametrahana ny fiankinan-doha dia vonona ny hanatanteraka ny fampiharana izahay:

python sentiment_analysis.py

Aorian'ny fampandehanana ity baiko ity dia hilazana izao manaraka izao isika:

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

Midika izany fa mandeha ny fampiharana ary miandry fangatahana amin'ny localhost:5000/

▍Kaody fikarohana

Andeha hojerentsika ny kaody fampiharana Python mba hahatakarana ny fomba famaliny ny fangatahana:

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. Fanombohana zavatra iray Flask.
  2. Famaritana adiresy hanaovana fangatahana POST aminy.
  3. Famerenana fananana sentence avy amin'ny vatana fangatahana.
  4. Fanombohana zavatra tsy fantatra anarana TextBlob ary mahazo ny sandany polarity ho an'ny fehezanteny voalohany voaray ao amin'ny vatan'ny fangatahana (amin'ny tranga misy antsika dia io ihany no fehezanteny nalefa ho an'ny fanadihadiana).
  5. Famerenana valinteny izay misy ny lahatsoratry ny fehezanteny sy ny tondro kajy momba izany ny vatany polarity.
  6. Manomboha fampiharana Flask, izay ho hita ao amin'ny 0.0.0.0:5000 (azonao atao koa ny miditra amin'ny fampiasana ny fananganana ny endrika localhost:5000).

Efa mandeha izao ny microservices mandrafitra ny fampiharana. Izy ireo dia natao hifaneraserana amin'ny tsirairay. Toy izao ny endriky ny kisary fampiharana amin'ity dingana ity.

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container
Ny microservices rehetra mandrafitra ny fampiharana dia entina amin'ny filaminana miasa

Ankehitriny, alohan'ny hanohizanao, sokafy ny rindranasa React anao amin'ny navigateur ary andramo mamaha fehezanteny miaraka aminy. Raha vita tsara ny zava-drehetra - rehefa avy manindry ny bokotra Send ho hitanao eo ambanin'ny saha lahatsoratra ny valin'ny fanadihadiana.

Ao amin'ny fizarana manaraka dia hiresaka momba ny fomba fampandehanana ny microservices ao anaty container Docker isika. Ilaina izany mba hanomanana ny fampiharana handeha amin'ny cluster Kubernetes.

Docker containers

Kubernetes dia rafitra ho an'ny automatique ny fametrahana, ny fanamafisam-peo ary ny fitantanana ireo rindranasa efa misy container. Antsoina koa hoe "orchestrator container". Raha miasa miaraka amin'ny kaontenera i Kubernetes, dia alohan'ny hampiasana an'ity rafitra ity dia tsy maintsy maka ireo kaontenera ireo aloha isika. Fa aloha, andeha isika hiresaka momba ny atao hoe kaontenera. Angamba ny valiny tsara indrindra amin'ny fanontaniana momba ny inona no hita ao tahirin-kevitra mankany Docker:

Ny sary kaontenera dia fonosana maivana, tsy misy afa-tsy, azo tanterahana misy fampiharana iray, izay ahitana ny zavatra rehetra ilaina amin'ny fampandehanana azy: fehezan-dalàna fampiharana, tontolo iainana famonoana, fitaovana sy tranomboky rafitra, fikandrana. Azo ampiasaina amin'ny tontolon'ny Linux sy Windows ny programa voatahiry, ary hiasa mitovy foana izy ireo na inona na inona fotodrafitrasa.

Midika izany fa azo atao amin'ny solosaina rehetra ny kaontenera, ao anatin'izany ny lohamilina famokarana, ary ny fampiharana voarakitra ao anatiny dia hiasa mitovy amin'ny tontolo rehetra.

Raha hijery ny endrik'ireo kaontenera sy hampitaha azy ireo amin'ny fomba hafa hampandehanana rindranasa, andao hijery ohatra iray amin'ny fandefasana rindranasa React mampiasa milina virtoaly sy container.

▍Manompo rakitra static amin'ny rindranasa React mampiasa milina virtoaly

Miezaka mandamina ny serivisy rakitra static amin'ny alàlan'ny milina virtoaly, dia ho tojo ireto fatiantoka manaraka ireto isika:

  1. Fampiasana tsy mahomby, satria ny milina virtoaly tsirairay dia rafitra fiasana feno.
  2. Fiankinan-doha amin'ny sehatra. Izay miasa amin'ny solosaina eo an-toerana dia mety tsy miasa amin'ny mpizara famokarana.
  3. Fanamafisana miadana sy be loharanon-karena amin'ny vahaolana mifototra amin'ny milina virtoaly.

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container
Nginx web server manolotra rakitra static mandeha amin'ny milina virtoaly

Raha ampiasaina hamahana olana mitovy amin'izany ny kaontenera, raha ampitahaina amin'ny milina virtoaly, dia azo marihina ireto tanjaka manaraka ireto:

  1. Fampiasana loharanon-karena mahomby: miasa miaraka amin'ny rafitra miasa amin'ny Docker.
  2. Tsy miankina amin'ny sehatra. Ny kaontenera iray azon'ny developer mandeha amin'ny solosainy dia hiasa na aiza na aiza.
  3. Fametrahana maivana amin'ny alàlan'ny fampiasana sosona sary.

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container
Nginx web server manolotra rakitra static mihazakazaka ao anaty container

Nampitahainay tamin'ny teboka vitsivitsy ihany ny milina virtoaly sy ny kaontenera, fa na izany aza dia ampy hitsapana ny tanjaky ny kaontenera. izany Azonao atao ny mahita antsipiriany momba ny container Docker.

▍Manangana sary fitoeran-javatra ho an'ny fampiharana React

Ny singa fototra amin'ny container Docker dia ny rakitra Dockerfile. Eo am-piandohan'ity rakitra ity dia misy firaketana atao amin'ny sary fototra amin'ny fitoeran-javatra, avy eo dia misy filaharan'ny toromarika manondro ny fomba hamoronana kaontenera izay mahafeno ny filan'ny fampiharana iray.

Alohan'ny hanombohantsika miasa amin'ny rakitra Dockerfile, andao hotadidintsika ny nataonay hanomanana ny rakitra fampiharana React ho alefa any amin'ny mpizara Nginx:

  1. Manangana fonosana fampiharana React (npm run build).
  2. Manomboka ny mpizara Nginx.
  3. Mandika ny votoatin'ny lahatahiry build avy amin'ny lahatahiry tetikasa sa-frontend mankany amin'ny lahatahiry mpizara nginx/html.

Eto ambany ianao dia afaka mahita ny fitoviana misy eo amin'ny famoronana fitoeran-javatra sy ireo dingana etsy ambony atao amin'ny solosainao eo an-toerana.

▍Manomana ny Dockerfile ho an'ny fampiharana SA-Frontend

Ny toromarika izay ho voarakitra ao Dockerfile ho an'ny fangatahana SA-Frontend, tsy misy afa-tsy ekipa roa. Ny zava-misy dia ny ekipa fampandrosoana Nginx dia nanomana fototra iray sary ho an'ny Nginx, izay hampiasaintsika hamoronana ny sarintsika. Ireto ny dingana roa ilaintsika hamaritana:

  1. Ny fototry ny sary dia tokony ho sary Nginx.
  2. Ny votoatin'ny lahatahiry sa-frontend/build mila adika amin'ny lahatahiry sary nginx/html.

Raha miala amin'ity famaritana ity mankany amin'ny rakitra ianao Dockerfile, dia ho toy izao izany:

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

Araka ny hitanao, ny zava-drehetra eto dia tena tsotra, ary ny votoatin'ny rakitra dia lasa mora vakiana sy azo takarina. Ity rakitra ity dia milaza ny rafitra haka ny sary nginx miaraka amin'izay rehetra efa ao anatiny, ary kopia ny votoatin'ny lahatahiry build mankany amin'ny lahatahiry nginx/html.

Eto ianao dia mety manana fanontaniana mikasika ny fomba ahafantarako hoe aiza marina no ilainao handikana rakitra avy amin'ny lahatahiry build, izany hoe avy aiza ny lalana /usr/share/nginx/html. Raha ny marina, tsy misy zavatra sarotra ihany koa eto. Ny zava-misy dia ny fampahalalana mifandraika dia azo jerena ao Description sary.

▍Manangana ny sary ary mampiakatra azy any amin'ny tahiry

Alohan'ny ahafahantsika miasa amin'ny sary vita dia mila manosika azy ho any amin'ny fitahirizana sary. Mba hanaovana izany dia hampiasa ny sehatra fampiantranoana sary rahona maimaim-poana Docker Hub izahay. Amin'ity dingana ity dia mila manao izao manaraka izao ianao:

  1. mametraka Docker.
  2. Misoratra anarana amin'ny tranokala Docker Hub.
  3. Midira ao amin'ny kaontinao amin'ny alàlan'ny baiko manaraka ao amin'ny terminal:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

Ankehitriny dia mila mampiasa ny terminal ianao handehanana any amin'ny lahatahiry sa-frontend ary tanteraho ao ity baiko manaraka ity:

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

Eto sy ny hafa amin'ny baiko mitovy $DOCKER_USER_ID tokony hosoloina amin'ny anaranao Docker Hub. Ohatra, ity ampahany amin'ny baiko ity dia mety ho toy izao: rinormaloku/sentiment-analysis-frontend.

Amin'ity tranga ity, ity baiko ity dia azo hafohezina amin'ny fanesorana azy -f Dockerfile, satria efa misy ity rakitra ity ao amin'ny lahatahiry izay anatanterahantsika ity baiko ity.

Mba handefasana ny sary vita amin'ny tahiry dia mila izao baiko manaraka izao:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

Rehefa vita izany dia jereo ny lisitry ny trano fitehirizanao ao amin'ny Docker Hub mba hahafantarana raha nahomby ny fampiakarana ny sary tao amin'ny fitahirizana rahona.

▍Mampandeha kaontenera

Afaka misintona sy mampandeha ilay sary, fantatra amin'ny anarana hoe $DOCKER_USER_ID/sentiment-analysis-frontend. Mba hanaovana izany, dia mila mihazakazaka manaraka ireto baiko manaraka ireto ianao:

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

Efa mandeha izao ny kaontenera, afaka manohy miasa isika amin'ny famoronana sary hafa ilaintsika. Alohan'ny hanohizantsika anefa dia aoka isika hahatakatra ny famolavolana 80:80, izay hita ao amin'ny baiko fandefasana sary ary mety ho sahiran-tsaina.

  • Isa voalohany 80 — ity no laharana seranan-tsambo mpampiantrano (izany hoe solosaina eo an-toerana).
  • laharana faharoa 80 dia ny seranan-tsambon'ny kaontenera izay tokony handefasana ny fangatahana.

Diniho ity fanoharana manaraka ity.

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container
Port forwarding

Mamindra ny fangatahana avy amin'ny seranan-tsambo ny rafitra <hostPort> mankany amin'ny seranana <containerPort>. Izany hoe fidirana amin’ny seranana 80 averina mankany amin'ny seranana ny solosaina 80 fitoeran-javatra.

Hatramin'ny seranana 80 misokatra amin'ny solosaina eo an-toerana, dia afaka miditra amin'ny fampiharana avy amin'ity solosaina ity ianao amin'ny localhost:80. Raha tsy manohana an'i Docker ny rafitrao, dia azo atao amin'ny milina virtoaly Docker ny fampiharana, ny adiresiny dia ho toy ny <docker-machine ip>:80. Mba hahitana ny adiresy IP an'ny milina virtoaly Docker dia azonao atao ny mampiasa ny baiko docker-machine ip.

Amin'izao fotoana izao, aorian'ny famoahana am-pahombiazana ny kaontenera fampiharana eo anoloana dia tokony ho afaka manokatra ny pejiny amin'ny navigateur ianao.

▍Ny rakitra .dockerignore

Manangona sary fampiharana SA-Frontend, azontsika tsikaritra fa miadana be io dingana io. Mitranga izany satria tsy maintsy alefa any amin'ny daemon Docker ny tontolon'ny fananganana sary. Ny lahatahiry maneho ny contexte fananganana dia voafaritra ho tohan-kevitra farany amin'ny baiko docker build. Amin'ny tranga misy antsika dia misy teboka eo amin'ny faran'ity baiko ity. Izany dia mahatonga ity rafitra manaraka ity hampidirina ao amin'ny contexte fananganana:

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

Fa amin'ireo lahatahiry rehetra misy eto dia ny lahatahiry ihany no ilaintsika build. Fandaniam-potoana ny fandefasana zavatra hafa. Azonao atao ny manafaingana ny fananganana amin'ny filazana an'i Docker izay lahatahiry tsy hojerena. Mba hanaovana izany no ilaintsika ny rakitra .dockerignore. Ianao, raha efa mahazatra ny rakitra .gitignore, mety ho toa mahazatra ny firafitry ity rakitra ity. Izy io dia mitanisa lahatahiry izay tsy azon'ny rafitra fananganana sary. Amin'ity tranga ity dia toy izao ny votoatin'ity rakitra ity:

node_modules
src
public

rakitra .dockerignore dia tsy maintsy ao amin'ny lahatahiry mitovy amin'ny rakitra Dockerfile. Haharitra segondra vitsy izao ny fananganana ilay sary.

Andeha isika izao hiasa amin'ny sary ho an'ny fampiharana Java.

▍Manangana sary kaontenera ho an'ny fampiharana Java

Fantatrao hoe, efa nianatra ny zavatra rehetra ilainao ianao mba hamoronana sary fitoeran-javatra. Izany no mahatonga ity fizarana ity ho tena fohy.

Sokafy ny rakitra Dockerfileizay ao amin'ny lahatahiry tetikasa sa-webapp. Raha mamaky ny lahatsoratr'ity rakitra ity ianao dia tsy hahita afa-tsy fanorenana roa vaovao ao, manomboka amin'ny teny fanalahidy ENV и EXPOSE:

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

Teny lakile ENV Mamela anao hanambara ny fari-piainan'ny tontolo iainana ao anaty container Docker. Amin'ny ankapobeny, amin'ny tranga misy anay, dia ahafahanao mamaritra URL iray hidirana amin'ny API amin'ny fampiharana izay manao famakafakana lahatsoratra.

Teny lakile EXPOSE mamela anao hilaza amin'i Docker hanokatra seranana. Hampiasa ity seranan-tsambo ity izahay rehefa mampandeha ny fampiharana. Eto ianao dia afaka mahita izany amin'ny Dockerfile ho an'ny fangatahana SA-Frontend tsy misy baiko toy izany. Natao ho an'ny antontan-taratasy ihany izany, izany hoe natao ho an'izay mamaky ity fanorenana ity Dockerfile.

Ny fananganana ny sary sy ny fanosehana azy ho any amin'ny tahiry dia mitovy tanteraka amin'ny ohatra teo aloha. Raha mbola tsy matoky tena amin'ny fahaizanao ianao dia hita ao amin'ny rakitra ny baiko mifanaraka amin'izany README.md ao anaty fampirimana sa-webapp.

▍Manangana sary kaontenera ho an'ny fampiharana Python

Raha mijery ny votoatin'ny rakitra ianao Dockerfile ao anaty fampirimana sa-logic, dia tsy hahita zava-baovao ho anao ianao any. Ny baiko amin'ny fananganana ny sary sy ny fandefasana azy any amin'ny tahiry dia tokony ho efa mahazatra anao ihany koa, fa, toy ny amin'ny fampiharana hafa, dia hita ao amin'ny rakitra. README.md ao anaty fampirimana sa-logic.

▍Fitsapana fampiharana efa voatahiry

Afaka matoky zavatra tsy mbola nosedrainao ve ianao? tsy afaka koa aho. Andao hizaha toetra ny fitoerantsika.

  1. Andao hanomboka ny fitoeran'ny fampiharana sa-logic ary amboary izany mba hihainoana eo amin'ny seranana 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. Andao hanomboka ny fitoeran'ny fampiharana sa-webapp ary amboary izany mba hihainoana eo amin'ny seranana 8080. Ankoatr'izay, mila manamboatra ny seranan-tsambo izay hihainoan'ny fampiharana Python ny fangatahana avy amin'ny fampiharana Java amin'ny alàlan'ny famerenana ny fari-piainan'ny tontolo iainana. 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

Raha te hianatra ny fomba hahitana ny adiresy IP an'ny container Docker na milina virtoaly dia jereo ny rakitra README.

Andao hanomboka ny fitoeran'ny fampiharana sa-frontend:

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

Ankehitriny dia vonona ny handeha ho any amin'ny adiresy ao amin'ny navigateur localhost:80 ary andramo ny fampiharana.

Mariho fa raha nanova ny seranan-tsambo ianao sa-webapp, na raha mampiasa milina virtoaly Docker ianao dia mila manitsy ny rakitra App.js avy amina lahatahiry iray sa-frontendamin'ny fanovana ny adiresy IP na ny laharan'ny seranan-tsambo amin'ny fomba analyzeSentence(), manolo ny vaovao ankehitriny fa tsy angon-drakitra efa lany andro. Aorian'izany dia mila manangona indray ny sary ianao ary ampiasao izany.

Toy izao ny endriky ny kisary fampiharana anay.

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container
Microservices mandeha amin'ny kaontenera

Famintinana: nahoana isika no mila cluster Kubernetes?

Vao avy nandinika ny antontan-taratasy izahay Dockerfile, niresaka momba ny fomba fananganana sary sy manosika azy ireo ho any amin'ny tahiry Docker. Ankoatra izany, nianatra ny fomba hanafainganana ny fanangonana sary amin'ny fampiasana ny rakitra .dockerignore. Vokatr'izany, ny microservices dia mandeha ao anaty container Docker. Eto ianao dia mety manana fanontaniana marim-pototra momba ny antony ilantsika Kubernetes. Ny ampahany faharoa amin'ity fitaovana ity dia hatokana hamaliana io fanontaniana io. Mandra-pahatongan'izany, diniho ity fanontaniana manaraka ity:
Andeha hatao hoe lasa malaza eran-tany ny fampiharana tranonkalantsika ho an'ny famakafakana lahatsoratra. Fangatahana an-tapitrisany no tonga any aminy isa-minitra. Midika izany fa ny microservices sa-webapp и sa-logic ho eo ambany enta-mavesatra lehibe. Ahoana ny fampitomboana ny kaontenera mihazakazaka microservices?

Kubernetes Tutorial Fizarana 1: Fampiharana, Microservices ary container

Source: www.habr.com

Add a comment