Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu

I runga i ta maatau tono, i hangaia e Habr he tari Kubernetes a e koa ana matou ki te whakatakoto i te pukapuka tuatahi ki roto. Ohauru!

He ngawari te Kubernetes. He aha nga peeke e utu nui ana ki a au ki te mahi i tenei takiwa, i te mea ka taea e tetahi te mohio ki tenei hangarau i roto i nga haora torutoru?

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu

Mena kei te ruarua koe ka tere te ako a Kubernetes, ka kii ahau me whakamatau koe. Ara, kua mohio koe ki tenei rauemi, ka taea e koe te whakahaere i tetahi tono i runga i nga ratonga miihini i roto i te roopu Kubernetes. Ka taea e au te kii i tenei, na te mea he rite tonu nga tikanga i whakamahia i konei ka ako au i o taatau kiritaki ki te mahi tahi me Kubernetes. He aha te rereketanga o tenei aratohu ki etahi atu? Ko te tikanga, he maha nga mea. Na, ko te nuinga o enei rauemi ka timata ki te whakamaramatanga o nga mea ngawari - nga ariā o Kubernetes me nga ahuatanga o te whakahau kubectl. Ko nga kaituhi o enei rauemi e kii ana kua mohio a raatau kaipānui ki te whakawhanaketanga tono, microservices, me nga ipu Docker. Ka haere tatou ki tetahi atu huarahi. Tuatahi, ka korerohia me pehea te whakahaere i tetahi tono i runga i nga ratonga miihini i runga rorohiko. Na ka titiro tatou ki te hanga whakaahua ipu mo ia ratonga moroiti. A muri iho, ka mohio tatou ki nga Kubernetes ka titiro ki te tuku tono i runga i nga ratonga miihini i roto i te roopu e whakahaerehia ana e Kubernetes.

Ko tenei huarahi, me te huarahi ngawari ki nga Kubernetes, ka homai te hohonutanga o te maarama ki nga mea e tupu ana e tika ana mo te tangata toharite kia mohio ai me pehea te mahi o nga mea katoa i Kubernetes. He tino hangarau ngawari te Kubernetes, mena ka mohio te hunga e hiahia ana ki te ako ki hea me pehea te whakamahi.

Inaianei, kia kore e roa, me timata taatau ki te korero mo te tono ka mahi tahi tatou.

Te tono whakamatautau

Ko ta maatau tono ka mahi kotahi noa te mahi. Kotahi te rerenga korero hei whakaurunga, muri iho, ma te whakamahi i nga taputapu wetewete tuhinga, ka mahia e ia he wetewete kare-a-roto o tenei rerenga korero, ka whiwhi i te aromatawai i te ahua kare a te kaituhi o te rerenga korero ki tetahi mea.

Koinei te ahua o te matapihi matua o tenei tono.

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu
Tono paetukutuku mo te tātaritanga kare o nga tuhinga

Mai i te tirohanga hangarau, ko te tono e toru nga ratonga moroiti, ma ia waahanga e whakaoti ana i nga waahanga mahi:

  • Ko te SA-Frontend he tūmau tukutuku Nginx e mahi ana i nga konae React.
  • Ko te SA-WebApp he tono tukutuku kua tuhia ki Java e tukatuka ana i nga tono mai i te pito o mua.
  • Ko te SA-Logic he tono Python e mahi ana i te tātari karekau i runga i te tuhinga.

He mea nui kia mahara kaore he ratonga moroiti i te noho mokemoke. Ka whakatinanahia e ratou te whakaaro o te "wehenga o nga kawenga", engari i te wa ano me mahi tahi raua.

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu
Ka rere nga raraunga i roto i te tono

I te hoahoa i runga ake nei, ka kite koe i nga wahanga tau o te punaha, e whakaatu ana i nga rerenga raraunga i roto i te tono. Kia titiro tatou ki a raatau:

  1. Ka tono te kaitirotiro i tetahi konae mai i te tūmau index.html (e tango ana i te kete tono React).
  2. Ka taunekeneke te kaiwhakamahi me te tono, na tenei ka puta he waea ki te tono tukutuku e ahu mai ana i te Puna.
  3. Ka tukuna e te tono tukutuku te tono ki te mahi tātari tuhinga ki te tono Python.
  4. Ka mahia e te tono Python te tātari karekau o te tuhinga me te whakahoki i te hua hei whakautu ki te tono.
  5. Ka tukuna e te tono Spring he whakautu ki te tono React (e whakaatu ana i te hua o te tātari tuhinga ki te kaiwhakamahi).

Ka kitea te waehere mo enei tono katoa konei. Ka tūtohu ahau kia kape koe i tenei putunga maau inaianei, na te mea he maha nga whakamatautau whakamere kei mua i a maatau.

Te whakahaere i tetahi tono moroiti i runga i to miihini rohe

Kia mahi ai te tono, me timata nga ratonga moroiti e toru. Me timata me te tino ataahua o ratou katoa - te tono o mua.

▍Whakaritea te React mo te whanaketanga o te rohe

Hei whakahaere i tetahi tono React, me whakauru e koe te papa Node.js me te NPM ki to rorohiko. Kia oti enei mea katoa, whakamahia te tauranga ki te whakatere ki to kōpaki kaupapa sa-frontend ka whakahaere i te whakahau e whai ake nei:

npm install

Ma te whakahaere i tenei whakahau i roto i te kōpaki node_modules ka utaina nga whakawhirinakitanga o te tono React, kei roto i te konae nga rekoata package.json. Ina tangohia nga whakawhirinakitanga i roto i te kōpaki kotahi, whakahaerehia te whakahau e whai ake nei:

npm start

Heoi ano. Inaianei kei te rere te tono React, ka taea e koe te uru atu ma te haere ki te wahitau e whai ake nei i to kaitirotiro: localhost:3000. Ka taea e koe te huri i tetahi mea i roto i tana waehere. Ka kite tonu koe i te paanga o enei huringa ki te tirotiro. Ka taea tenei na te mea e kiia nei he "wera" whakakapinga o nga waahanga. Ma tenei ka waiho te whanaketanga o mua he wheako ngawari me te ngahau.

▍Te whakarite tono React mo te hanga

Mo te tino whakamahi i te tono React, me huri tatou ki roto i te huinga o nga konae pateko me te mahi ki nga kaihoko ma te whakamahi i te tūmau tukutuku.

Hei hanga i te tono React, ma te whakamahi ano i te tauranga, whakatere ki te kōpaki sa-frontend ka whakahaere i te whakahau e whai ake nei:

npm run build

Ka waihangahia he whaiaronga ki te kōpaki kaupapa build. Kei roto nga konae pateko katoa e tika ana kia mahi te tono React.

▍Te mahi i nga konae pateko ma te whakamahi i te Nginx

Tuatahi me whakauru koe me te whakahaere i te tūmau tukutuku Nginx. ko te reira ka taea e koe te tiki ake me te kimi tohutohu mo te whakauru me te whakahaere. Na ka hiahia koe ki te kape i nga ihirangi o te kōpaki sa-frontend/build ki te kōpaki [your_nginx_installation_dir]/html.

Ma tenei huarahi, ko te konae i hangaia i te wa e hanga ana te tono React index.html ka wātea i [your_nginx_installation_dir]/html/index.html. Koinei te konae, na te taunoa, ka whakaputahia e te tūmau Nginx ina uru atu ana. Kua whirihora te tūmau ki te whakarongo i runga i te tauranga 80, engari ka taea te whakarite kia rite ki taau e hiahia ana ma te whakatika i te konae [your_nginx_installation_dir]/conf/nginx.conf.

Inaianei whakatuwherahia to kaitirotiro ka haere ki localhost:80. Ka kite koe i te wharangi tono React.

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu
Tauhohe tono i tukuna e te tūmau Nginx

Mena ka uru koe ki tetahi mea ki te mara Type your sentence ka pehi i te paatene Send - kaore he mea e tupu. Engari, ki te titiro koe ki te papatohu, ka kite koe i nga karere hapa i reira. Kia mohio ai koe kei hea enei hapa ka puta, me tirotirohia te waehere tono.

▍Te tātari waehere tono-mutunga

Ma te titiro ki te waehere konae App.js, ka kite tatou i te pehi i te paatene Send ka karanga he tikanga analyzeSentence(). Ko te waehere mo tenei tikanga kua hoatu i raro nei. Kia mahara mo ia rarangi he korero mo te puka # Номер, he whakamarama kei raro i te waehere. Ka wetewetehia e matou etahi atu waahanga waehere i te ara ano.

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. Ko te URL i tukuna ai te tono POST. Ko te whakapae he tono kei tenei wahi noho e tatari ana kia penei nga tono.

2.I tukuna te tinana tono ki te tono. Anei he tauira tono tinana:

{
    sentence: "I like yogobella!"
}

3.Ina tae mai he whakautu ki tetahi tono, ka whakahouhia te ahua o te waahanga. Ma tenei ka tukuna ano te waahanga. Mena ka whiwhi tatou i nga raraunga (ara, he ahanoa JSON kei ​​roto nga raraunga whakauru me te kaute kuputuhi tatau), ka whakaputahia e matou te waahanga Polarity, i te mea ka tutuki nga tikanga e tika ana. He penei ta matou whakaahua i te waahanga:

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

Te ahua nei he pai te mahi a te waehere. He aha te he o tenei, ahakoa? Mena ka whakaaro koe kei te waahi noho e ngana ana te tono ki te tuku tono POST, kaore ano he mea hei whakaae me te whakahaere i tenei tono, katahi ka tino tika koe. Ara, ki te tukatuka i nga tono kua tae mai i http://localhost:8080/sentiment, me whakahaere he tono tukutuku i runga i te Puna.

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu
Kei te hiahia matou he tono Puna ka taea te whakaae ki te tono POST

▍ Te whakarite i tetahi tono tukutuku e ahu mai ana i te Puna

Hei whakatakoto i tetahi tono Puna, ka hiahia koe ki a JDK8 me Maven me nga taurangi taiao kua whirihora tika. Ina oti enei mea katoa ki a koe te whakauru, ka taea e koe te mahi tonu i to maatau kaupapa.

▍Te takai tono ki roto i te konae ipu

Whakatere, ma te whakamahi i te tauranga, ki te kōpaki sa-webapp ka tomo i te whakahau e whai ake nei:

mvn install

I muri i te whakahaere i tenei whakahau i roto i te kōpaki sa-webapp ka hangaia he whaiaronga target. Koinei te waahi ka tuuhia te tono Java, ka kohia ki roto i te konae ipu, e tohuhia ana e te konae sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

▍Te whakahaere tono Java

Haere ki te kōpaki target ka whakahaere i te tono me te whakahau e whai ake nei:

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

Ka puta he hapa i te wa e mahia ana tenei tono. Hei timata ki te whakatika, ka taea e taatau te tarai i nga korero motuhake i roto i nga raraunga whakapapa taapu:

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

Ki a matou, ko te mea nui i konei ko te whakahua i te kore e taea te whakamarama i te tikanga sa.logic.api.url. Kia tātarihia te waehere i puta ai te hapa.

▍Ko te tātari waehere tono Java

Anei te snippet waehere kei hea te hapa.

@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 roto i te SentimentController he mara saLogicApiUrl. Ko tona uara kua tohua e te taonga sa.logic.api.url.
  2. Raina saLogicApiUrl ka hono ki te uara /analyse/sentiment. Ka hangaia e raua te wahitau mo te waea ki te microservice e mahi ana i te tātari tuhinga.

▍Tautuhi he uara taonga

I te Koanga, ko te puna paerewa o nga uara taonga he konae application.properties, ka kitea i sa-webapp/src/main/resources. Engari ehara i te mea ko tana whakamahi anake te huarahi ki te whakarite uara rawa. Ka taea hoki tenei ma te whakamahi i te whakahau e whai ake nei:

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

Ko te uara o tenei rawa me tohu ki te wahitau o ta maatau tono Python.

Ma te whirihora, ka korero matou ki te tono paetukutuku Spring me haere ki te mahi i nga tono tātari tuhinga.

Kia kore ai e whakararuraru i to maatau oranga, ka whakatauhia ka waatea te tono Python i localhost:5000 a kia ngana tatou kia kaua e wareware. Ko te mutunga, ka penei te ahua o te whakahau ki te whakarewa i te tono Puna:

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

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu
Kei te ngaro to tatou punaha he tono Python

Inaianei ko ta maatau mahi ko te whakahaere i te tono Python ka mahi te punaha i runga i te tumanako.

▍ Te whakarite tono Python

Hei whakahaere i tetahi tono Python, me whakauru koe i te Python 3 me te Pip, a me whakarite tika nga taurangi taiao e tika ana.

▍Tāutahia ngā whakawhirinakitanga

Haere ki to kōpaki kaupapa sa-logic/sa ka whakahaere i nga whakahau e whai ake nei:

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

▍Whakarewahia te tono

I muri i te whakauru i nga whakawhirinaki, kua rite matou ki te whakahaere i te tono:

python sentiment_analysis.py

I muri i te whakahaere i tenei whakahau ka korerotia mai ki a maatau e whai ake nei:

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

Ko te tikanga kei te rere te tono me te tatari mo nga tono i localhost:5000/

▍ Rangahau Waehere

Me titiro ki te waehere tono Python kia mohio ai me pehea tana whakautu ki nga tono:

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. Te arataki i tetahi mea Flask.
  2. Te tautuhi i tetahi wahitau mo te mahi tono POST ki a ia.
  3. Te Tiki Taonga sentence mai i te tinana tono.
  4. Te Arataki i tetahi Ahanoa Ingoakore TextBlob me te whiwhi i te uara polarity mo te rerenga tuatahi i tae mai ki roto i te tinana o te tono (i ta matou keehi, koinei anake te rerenga i tukuna hei tātari).
  5. Te whakahoki i tetahi whakautu kei roto i tona tinana te tuhinga o te rerenga korero me te tohu tatau mo taua mea polarity.
  6. Whakarewahia he tono Flask, ka watea mai i 0.0.0.0:5000 (Ka taea hoki e koe te uru atu ma te whakamahi i te hanga o te puka localhost:5000).

Ko nga ratonga moroiti e hanga ana i te tono kei te haere inaianei. Kua whakahāngaitia rātou ki te taunekeneke ki waenga i a rātou anō. Koinei te ahua o te hoahoa tono i tenei wahanga mahi.

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu
Ko nga ratonga moroiti katoa e hanga ana i te tono ka kawea mai ki te raupapa mahi

Inaianei, i mua i to haere tonu, whakatuwherahia to tono React i roto i te kaitirotiro ka ngana ki te tarai i etahi rerenga korero. Mena kua tika nga mea katoa - i muri i te pehi i te paatene Send ka kite koe i nga hua tātari i raro i te mara kuputuhi.

I te waahanga e whai ake nei, ka korerohia me pehea te whakahaere i a maatau miihini miihini i roto i nga ipu Docker. He mea tika tenei hei whakarite i te tono kia rere i runga i te roopu Kubernetes.

Nga ipu Docker

Kubernetes he punaha mo te whakaaunoa i te horahanga, te whakahiato me te whakahaere i nga tono whakauru. Ka kiia hoki he "kaiwhakahaere ipu". Mena ka mahi a Kubernetes me nga ipu, na i mua i te whakamahi i tenei punaha me hoko tuatahi enei ipu. Engari ko te tuatahi, me korero tatou he aha nga ipu. Tena pea ko te whakautu pai ki te patai he aha te mea ka kitea i roto tuhinga ki Docker:

Ko te ahua o te ipu he putunga mama, kei roto i a ia ano, kei roto he tono, kei roto nga mea katoa e tika ana hei whakahaere: te waehere tono, te taiao mahi, nga taputapu punaha me nga whare pukapuka, nga tautuhinga. Ka taea te whakamahi i nga papatono i roto i nga taiao Linux me Windows, ka rite tonu te mahi ahakoa te hanganga.

Ko te tikanga ka taea te whakahaere i nga ipu ki runga i tetahi rorohiko, tae atu ki nga kaitoro whakangao, a ko nga tono kei roto ka mahi pera i roto i tetahi taiao.

Hei tuhura i nga ahuatanga o nga ipu me te whakataurite ki etahi atu huarahi ki te whakahaere tono, me titiro ki tetahi tauira o te tuku tono React ma te whakamahi i te miihini mariko me te ipu.

▍Te mahi i nga konae pateko o te tono React ma te whakamahi miihini mariko

Ko te ngana ki te whakarite i te ratonga o nga konae pateko ma te whakamahi i nga miihini mariko, ka pa ki nga ngoikoretanga e whai ake nei:

  1. He koretake te whakamahi rauemi, na te mea he punaha whakahaere katoa ia miihini mariko.
  2. Te whakawhirinaki o te papa. Ko nga mea e mahi ana i runga i te rorohiko o te rohe kare pea e mahi i runga i te tūmau whakaputa.
  3. Whakanuia puhoi me te kaha rawa o te otinga miihini mariko.

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu
Ko te tūmau tukutuku Nginx e mahi ana i nga konae pateko e rere ana i runga i te miihini mariko

Mena ka whakamahia nga ipu ki te whakaoti rapanga rite, na, ki te whakataurite ki nga miihini mariko, ka taea te tohu i nga kaha e whai ake nei:

  1. Te whakamahi pai i nga rauemi: te mahi tahi me te punaha whakahaere ma te whakamahi i a Docker.
  2. He turanga motuhake. He ipu ka taea e te kaiwhakawhanake te whakahaere i runga i tana rorohiko ka mahi ki hea.
  3. Ko te whakatakotoranga ngawari ma te whakamahi i nga paparanga whakaahua.

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu
Ko te tūmau tukutuku Nginx e mahi ana i nga konae pateko e rere ana i roto i te ipu

I whakatauritehia e matou nga miihini mariko me nga ipu i runga i etahi waahi, engari he nui noa tenei ki te mohio ki nga kaha o nga ipu. ko te reira Ka kitea e koe nga korero mo nga ipu Docker.

▍Te hanga pikitia ipu mo te tono React

Ko te paraka hanga taketake o te ipu Docker ko te konae Dockerfile. I te timatanga o tenei konae, ka mahia he rekoata mo te ahua taketake o te ipu, katahi he raupapa tohutohu e tohu ana me pehea te hanga ipu e tutuki ai nga hiahia o tetahi tono.

I mua i to tiimata ki te mahi me te konae Dockerfile, kia mahara ki ta matou i mahi ki te whakarite i nga konae tono React mo te tuku ki te tūmau Nginx:

  1. Hangaia he kete tono React (npm run build).
  2. Ka timata i te tūmau Nginx.
  3. Te kape i nga ihirangi whaiaronga build mai i te kōpaki kaupapa sa-frontend ki te kōpaki tūmau nginx/html.

Kei raro ka kite koe i nga whakarara i waenga i te hanga ipu me nga mahi o runga ake nei i mahia i runga i to rorohiko rohe.

▍Te whakarite i te Dockerfile mo te tono SA-Frontend

Ko nga tohutohu ka mau ki roto Dockerfile mo te tono SA-Frontend, e rua noa nga kapa. Ko te meka ko te roopu whanaketanga Nginx kua whakaritea he kaupapa image mo Nginx, ka whakamahia e matou hei hanga i to maatau ahua. Ko enei nga waahanga e rua hei whakaahua maatau:

  1. Ko te kaupapa o te ahua ko te ahua Nginx.
  2. Ihirangi Kōpaki sa-frontend/build me tārua ki te kōpaki whakaahua nginx/html.

Mena ka haere koe mai i tenei whakaahuatanga ki te konae Dockerfile, ka penei te ahua:

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

Ka taea e koe te kite, he tino ngawari nga mea katoa i konei, a ko nga mea kei roto i te konae ka puta he maamaa me te maarama. Ko tenei konae ka korero ki te punaha ki te tango i te ahua nginx me nga mea katoa kei roto, ka kape i nga ihirangi o te whaiaronga build ki te whaiaronga nginx/html.

I konei ka whai patai pea koe me pehea taku mohio ki hea e tika ana kia kape koe i nga konae mai i te kōpaki build, ara, no hea te huarahi /usr/share/nginx/html. Ina hoki, kaore he mea uaua i konei. Ko te meka ko nga korero e tika ana ka kitea i roto whakaahuatanga whakaahua.

▍Te hanga i te ahua me te tuku ki te putunga

I mua i te mahi me te ahua kua oti, me pana ki te putunga whakaahua. Ki te mahi i tenei, ka whakamahia e matou te kaupapa manaaki whakaahua kapua koreutu Docker Hub. I tenei wahanga o te mahi me mahi koe i nga mea e whai ake nei:

  1. Tāuta Docker.
  2. Rēhita ki te paetukutuku Docker Hub.
  3. Takiuru ki to putea ma te whakahaere i te whakahau e whai ake nei i te tauranga:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

Inaianei me whakamahi koe i te tauranga ki te haere ki te whaiaronga sa-frontend ka whakahaere i te whakahau e whai ake nei ki reira:

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

I konei me etahi atu i roto i nga whakahau rite $DOCKER_USER_ID me whakakapi ki to ingoa ingoa Docker Hub. Hei tauira, penei pea te ahua o tenei waahanga o te whakahau: rinormaloku/sentiment-analysis-frontend.

I tenei keehi, ka taea te whakapoto i tenei whakahau ma te tango mai i a ia -f Dockerfile, i te mea kei te noho tonu tenei konae i roto i te kōpaki e mahia ana e matou tenei whakahau.

Hei tuku i te ahua kua oti ki te putunga, me whai whakahau e whai ake nei:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

Ka oti ana, tirohia te rarangi o o putunga i runga i te Docker Hub kia mohio ai mena i angitu te tukunga o te ahua ki te rokiroki kapua.

▍Te whakahaere ipu

Inaianei ka taea e tetahi te tango me te whakahaere i te ahua, e kiia nei ko $DOCKER_USER_ID/sentiment-analysis-frontend. Hei mahi i tenei, me whakahaere e koe te raupapa whakahau e whai ake nei:

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

Inaianei kei te rere te ipu, ka taea e taatau te mahi tonu ma te hanga i etahi atu whakaahua e hiahiatia ana. Engari i mua i te haere tonu, kia mohio tatou ki te hoahoa 80:80, ka puta i roto i te whakahau whakarewatanga ahua me te ahua rangirua.

  • Tau tuatahi 80 — koinei te tau tauranga kaihautu (ara, te rorohiko o te rohe).
  • Tau tuarua 80 ko te tauranga o te ipu ka tukuna atu te tono.

A hi‘o na i te faahoho‘araa i muri nei.

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu
Tauranga Whakamua

Ka tukuna e te punaha nga tono mai i te tauranga <hostPort> ki te tauranga <containerPort>. Arā, te uru ki te tauranga 80 ka tukuna te rorohiko ki te tauranga 80 ipu.

Mai i te tauranga 80 kua tuwhera ki te rorohiko o te rohe, katahi ka taea e koe te uru atu ki te tono mai i tenei rorohiko i localhost:80. Mena kaore to punaha i te tautoko i a Docker, ka taea te whakahaere i te tono ki runga i te miihini mariko Docker, ka rite te ahua o te waahi noho. <docker-machine ip>:80. Hei rapu i te wahitau IP o te miihini mariko Docker, ka taea e koe te whakamahi i te whakahau docker-machine ip.

I tenei wa, i muri i te whakarewanga angitu o te ipu tono o mua, me taea e koe te whakatuwhera i tana wharangi ki te tirotiro.

▍Ko te kōnae .dockerignore

Te kohikohi whakaahua tono SA-Frontend, ka kite pea tatou he tino puhoi tenei mahi. Ka puta tenei na te mea me tuku te horopaki hanga pikitia ki te daemon Docker. Ko te whaiaronga e tohu ana i te horopaki hanga kua tohua hei tohenga whakamutunga o te whakahau docker build. I a maatau, he ira kei te mutunga o tenei whakahau. Na tenei ka whakaurua te hanganga e whai ake nei ki te horopaki hanga:

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

Engari o nga kōpaki katoa kei konei, ko te kōpaki anake e hiahiatia ana build. Ko te uta i tetahi atu mea he moumou taima. Ka taea e koe te tere ake te hanga ma te korero ki a Docker ko nga raarangi ka warewarehia. Hei mahi i tenei ka hiahia tatou ki te konae .dockerignore. Ko koe, mena kei te mohio koe ki te konae .gitignore, ka ahua taunga pea te hanga o tenei konae. Ka whakarārangihia nga raarangi ka taea e te punaha hanga whakaahua te warewarehia. I roto i a maatau, penei te ahua o nga ihirangi o tenei konae:

node_modules
src
public

kōnae .dockerignore me noho ki te kōpaki rite ki te konae Dockerfile. Inaianei ko te hanga i te ahua ka roa he hēkona.

Me mahi inaianei mo te ahua mo te tono Java.

▍Te hanga whakaahua ipu mo te tono Java

E mohio ana koe, kua ako ke koe i nga mea katoa e hiahia ana koe ki te mohio ki te hanga whakaahua ipu. No reira ka poto rawa tenei waahanga.

Whakatuwheratia te kōnae Dockerfilekei roto i te kōpaki kaupapa sa-webapp. Mena ka panui koe i nga tuhinga o tenei konae, ka kite koe i nga hangahanga hou e rua anake, timata mai i nga kupu matua ENV и EXPOSE:

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

Kupu matua ENV Ka taea e koe te whakaatu i nga taurangi taiao i roto i nga ipu Docker. Ina koa, i roto i ta maatau keehi, ka taea e koe te tautuhi i tetahi URL kia uru atu ki te API o te tono e mahi ana i te tātari tuhinga.

Kupu matua EXPOSE ka taea e koe te korero ki a Docker ki te whakatuwhera i tetahi tauranga. Ka whakamahia e matou tenei tauranga i te wa e whakahaere ana i te tono. I konei ka kite koe i tera i roto Dockerfile mo te tono SA-Frontend kahore he whakahau pera. Ko tenei mo nga kaupapa tuhinga anake, ara, ko te hanga tenei mo te tangata ka panui Dockerfile.

Ko te hanga i te ahua me te pana ki te putunga he rite tonu te ahua ki te tauira o mua. Mena kaore koe i te tino maia ki o kaha, ka kitea nga whakahau e pa ana ki te konae README.md i roto i te kōpaki sa-webapp.

▍Te hanga pikitia ipu mo te tono Python

Mena ka titiro koe ki nga ihirangi o te konae Dockerfile i roto i te kōpaki sa-logic, ka kore koe e kitea he mea hou mo koe ki reira. Ko nga whakahau mo te hanga i te ahua me te tuku ki te putunga me mohio ano koe, engari, pera me etahi atu tono, ka kitea i roto i te konae README.md i roto i te kōpaki sa-logic.

▍Whakamātautau tono ipu

Ka taea e koe te whakawhirinaki ki tetahi mea kaore ano koe i whakamatau? Kaore e taea e au ano. Me whakamatau a tatou ipu.

  1. Kia whakarewahia te ipu tono sa-logic ka whirihora ki te whakarongo i runga i te tauranga 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. Kia whakarewahia te ipu tono sa-webapp ka whirihora ki te whakarongo i runga i te tauranga 8080. I tua atu, me whirihora i te tauranga e whakarongo ai te tono Python mo nga tono mai i te tono Java ma te whakarereke i te taurangi taiao. 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

Ki te ako me pehea te rapu i te wahitau IP o tetahi ipu Docker, miihini mariko ranei, tirohia te konae README.

Kia whakarewahia te ipu tono sa-frontend:

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

Inaianei kua rite nga mea katoa ki te haere ki te wahitau kei te tirotiro localhost:80 ka whakamatau i te tono.

Kia mahara mai mena kua hurihia e koe te tauranga mo sa-webapp, mena kei te whakahaere koe i tetahi miihini mariko Docker, me whakatika koe i te konae App.js mai i te kōpaki sa-frontendmā te huri i te wāhitau IP, tau tauranga ranei i roto i te tikanga analyzeSentence(), ka whakakapi i nga korero o naianei hei utu mo nga raraunga tawhito. I muri i tenei, me whakahiatohia e koe te ahua me te whakamahi.

Koinei te ahua o ta maatau hoahoa tono inaianei.

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu
Ka rere nga ratonga miihini ki roto i nga ipu

Whakarāpopototanga: he aha te take e hiahia ana tatou ki te roopu Kubernetes?

Katahi ano matou ki te tirotiro i nga konae Dockerfile, i korero me pehea te hanga whakaahua me te pana ki te putunga Docker. I tua atu, i ako matou ki te tere ake i te huihuinga whakaahua ma te whakamahi i te konae .dockerignore. Ko te mutunga mai, ka rere a maatau ratonga miihini i nga ipu Docker. Kei konei pea he patai tika mo te take e hiahia ana matou ki a Kubernetes. Ko te waahanga tuarua o tenei rauemi ka whakatapua ki te whakautu i tenei patai. I tenei wa, whakaarohia te patai e whai ake nei:
Me whakaaro kua rongonuihia to maatau paetukutuku mo te tātari tuhinga ki te ao. E hia miriona nga tono ka tae mai ki a ia i ia meneti. Ko te tikanga ko nga microservices sa-webapp и sa-logic ka waiho i raro i te kawenga nui. Me pehea te tauine i nga ipu e whakahaere ana i nga ratonga miihini?

Akoranga Kubernetes Wāhanga 1: Taupānga, Ratonga Micro, me nga ipu

Source: will.com

Tāpiri i te kōrero