ProHoster > Blogi > antaminen > Kubernetes Tutorial Osa 1: Sovellukset, mikropalvelut ja säiliöt
Kubernetes Tutorial Osa 1: Sovellukset, mikropalvelut ja säiliöt
Pyynnöstämme Habr loi keskuksen Kubernetes ja meillä on ilo julkaista ensimmäinen julkaisu siihen. Tilaa!
Kubernetes on helppoa. Miksi pankit maksavat minulle paljon rahaa työskennelläkseni tällä alalla, vaikka kuka tahansa voi hallita tämän tekniikan muutamassa tunnissa?
Jos epäilet, että Kubernetes voidaan oppia niin nopeasti, suosittelen, että yrität tehdä sen itse. Nimittäin tämän materiaalin hallittuasi pystyt ajamaan mikropalveluihin perustuvan sovelluksen Kubernetes-klusterissa. Voin taata tämän, koska samalla menetelmällä, jota käytän täällä, opetan asiakkaillemme työskentelemään Kubernetesin kanssa. Mikä tekee tästä oppaasta erilaisen kuin muut? Itse asiassa paljon asioita. Joten suurin osa näistä materiaaleista alkaa selittämällä yksinkertaisia asioita - Kubernetesin käsitteitä ja kubectl-komennon ominaisuuksia. Näiden artikkeleiden kirjoittajat olettavat, että heidän lukijansa tuntee sovelluskehityksen, mikropalvelut ja Docker-säiliöt. Menemme toiseen suuntaan. Puhutaanpa ensin mikropalveluihin perustuvan sovelluksen suorittamisesta tietokoneessa. Sitten tarkastellaan kunkin mikropalvelun konttikuvien rakentamista. Ja sen jälkeen tutustutaan Kubernetesiin ja analysoidaan mikropalveluihin perustuvan sovelluksen käyttöönottoa Kubernetesin hallinnoimassa klusterissa.
Tämä lähestymistapa, jossa on asteittainen lähestymistapa Kubernetesiin, antaa syventävän ymmärryksen siitä, mitä tapahtuu, mitä tavallinen ihminen tarvitsee ymmärtääkseen, kuinka yksinkertaisesti kaikki on järjestetty Kubernetesissa. Kubernetes on varmasti yksinkertainen tekniikka, kunhan se, joka haluaa hallita, tietää missä ja miten sitä käytetään.
Nyt, ilman pitkiä puheita, ryhdytään työhön ja puhutaan sovelluksesta, jonka kanssa työskentelemme.
Kokeellinen sovellus
Sovelluksemme suorittaa vain yhden toiminnon. Se ottaa syötteenä yhden lauseen, jonka jälkeen se suorittaa tekstianalyysityökalujen avulla tämän lauseen tunneanalyysin saadakseen arvion lauseen kirjoittajan emotionaalisesta asenteesta tiettyyn kohteeseen.
Tämän sovelluksen pääikkuna näyttää tältä.
Sentimenttianalyysin verkkosovellus
Tekniseltä kannalta katsottuna sovellus koostuu kolmesta mikropalvelusta, joista jokainen ratkaisee tietyn joukon tehtäviä:
SA-Frontend on Nginx-verkkopalvelin, joka palvelee staattisia React-tiedostoja.
SA-WebApp on Java-kielellä kirjoitettu verkkosovellus, joka käsittelee käyttöliittymän pyyntöjä.
SA-Logic on Python-sovellus, joka suorittaa tekstin tunteiden analysointia.
On tärkeää huomata, että mikropalvelut eivät ole olemassa erillään. He toteuttavat ajatusta "tehtävien erottamisesta", mutta samalla heidän on oltava vuorovaikutuksessa toistensa kanssa.
Data virtaa sovelluksessa
Yllä olevasta kaaviosta näet järjestelmän numeroidut vaiheet, jotka kuvaavat sovelluksen tietovirtoja. Puretaan ne:
Selain pyytää tiedostoa palvelimelta index.html (joka puolestaan lataa React-sovelluspaketin).
Käyttäjä on vuorovaikutuksessa sovelluksen kanssa, mikä aiheuttaa kutsun Spring-pohjaiseen verkkosovellukseen.
Verkkosovellus välittää tekstin jäsennyspyynnön Python-sovellukselle.
Python-sovellus analysoi tekstin tunteen ja palauttaa tuloksen vastauksena pyyntöön.
Spring-sovellus lähettää vastauksen React-sovellukselle (joka puolestaan näyttää käyttäjälle jäsennetyn tekstin tuloksen).
Kaikkien näiden sovellusten koodi löytyy täällä. Suosittelen, että kopioit tämän arkiston itsellesi heti, sillä meillä on edessämme monia mielenkiintoisia kokeiluja sen kanssa.
Mikropalveluihin perustuvan sovelluksen suorittaminen paikallisessa koneessa
Jotta sovellus toimisi, meidän on käynnistettävä kaikki kolme mikropalvelua. Aloitetaan niistä kauneimmalla - käyttöliittymäsovelluksella.
▍Reactin perustaminen paikallista kehitystä varten
React-sovelluksen suorittamiseksi sinun on asennettava Node.js-kehys ja NPM tietokoneellesi. Kun olet asentanut kaiken tämän, siirry terminaalilla projektikansioon sa-frontend ja suorita seuraava komento:
npm install
Suorittamalla tämän komennon kansiossa node_modules latautuu React-sovelluksen riippuvuudet, joiden tietueet ovat tiedostossa package.json. Kun olet ladannut riippuvuudet samassa kansiossa, suorita seuraava komento:
npm start
Siinä kaikki. React-sovellus on nyt käynnissä ja siihen pääsee navigoimalla selaimen osoitteeseen localhost:3000. Voit muuttaa jotain hänen koodissaan. Näet heti näiden muutosten vaikutuksen selaimessa. Tämä on mahdollista moduulien niin kutsutun "kuuman" vaihdon ansiosta. Tämän ansiosta etupään kehitys muuttuu yksinkertaiseksi ja nautinnolliseksi kokemukseksi.
▍React-sovelluksen valmistelu tuotantoa varten
React-sovelluksen todellista käyttöä varten meidän on muunnettava se staattisiksi tiedostoiksi ja toimitettava ne asiakkaille verkkopalvelimen avulla.
Luodaksesi React-sovelluksen, siirry kansioon uudelleen päätelaitteen avulla sa-frontend ja suorita seuraava komento:
npm run build
Tämä luo hakemiston projektikansioon build. Se sisältää kaikki staattiset tiedostot, joita React-sovellus tarvitsee toimiakseen.
▍Staattisten tiedostojen palveleminen Nginxillä
Ensin sinun on asennettava ja suoritettava Nginx-verkkopalvelin. Täällä voit ladata sen ja löytää ohjeet sen asentamiseen ja käyttöön. Sitten sinun on kopioitava kansion sisältö sa-frontend/build kansioon [your_nginx_installation_dir]/html.
Tällä lähestymistavalla React-sovelluksen kokoonpanon aikana luotu tiedosto index.html on saatavilla osoitteessa [your_nginx_installation_dir]/html/index.html. Tämä on tiedosto, jonka Nginx-palvelin antaa oletusarvoisesti käyttäessään sitä. Palvelin on määritetty kuuntelemaan porttia 80, mutta voit muokata sitä haluamallasi tavalla muokkaamalla tiedostoa [your_nginx_installation_dir]/conf/nginx.conf.
Avaa nyt selain ja siirry kohtaan localhost:80. Näet React-sovellussivun.
Nginx-palvelimen tarjoama React-sovellus
Jos nyt syötät jotain kenttään Type your sentence ja paina painiketta Send - mitään ei tule tapahtumaan. Mutta jos katsot konsolia, näet siellä virheilmoituksia. Ymmärtääksemme tarkalleen, missä nämä virheet tapahtuvat, analysoidaan sovelluskoodi.
▍Etuliittymäsovelluksen koodin analyysi
Katsotaan tiedoston koodia App.js, näemme sen napsauttamalla painiketta Send kutsuu menetelmää analyzeSentence(). Tämän menetelmän koodi on esitetty alla. Kiinnitä samalla huomiota siihen, että jokaiselle riville, johon on lomakkeen kommentti # Номер, koodin alla on selitys. Samalla tavalla jäsennämme muita koodinpätkiä.
1. URL-osoite, johon POST-pyyntö tehdään. Tämän osoitteen oletetaan olevan sovellus, joka odottaa tällaisia pyyntöjä.
2.Hakemukseen lähetetty pyyntöelin. Tässä on esimerkkipyynnön runko:
{
sentence: "I like yogobella!"
}
3.Kun vastaus pyyntöön vastaanotetaan, komponentin tila päivitetään. Tämä saa komponentin hahmontamaan uudelleen. Jos saamme dataa (eli JSON-objektin, joka sisältää syötetyt tiedot ja lasketun tekstipisteen), tulostamme komponentin Polarityniin kauan kuin ehdot täyttyvät. Näin kuvailemme komponenttia:
Koodi näyttää toimivan varsin hyvin. Mikä tässä muuten on vialla? Jos oletat, että osoitteessa, johon sovellus yrittää lähettää POST-pyynnön, ei ole vielä mitään, joka voi hyväksyä ja käsitellä tämän pyynnön, olet täysin oikeassa. Nimittäin osoitteeseen tulevien pyyntöjen käsittelyyn http://localhost:8080/sentiment, meidän on suoritettava kevääseen perustuva verkkosovellus.
Tarvitsemme keväthakemuksen, joka voi hyväksyä POST-pyynnön
▍Kevääseen perustuvan verkkosovelluksen määrittäminen
Spring-sovelluksen käyttöönottoon tarvitaan JDK8 ja Maven sekä oikein konfiguroidut ympäristömuuttujat. Kun olet asentanut tämän kaiken, voit jatkaa projektiamme.
▍ Sovelluksen pakkaaminen jar-tiedostoon
Navigoi kansioon päätelaitteen avulla sa-webapp ja kirjoita seuraava komento:
mvn install
Suoritettuasi tämän komennon kansiossa sa-webapp hakemisto luodaan target. Tämä on paikka, jossa Java-sovellus sijaitsee, pakattuna jar-tiedostoon, jota tiedosto edustaa sentiment-analysis-web-0.0.1-SNAPSHOT.jar.
▍Java-sovelluksen käynnistäminen
Siirry kansioon target ja suorita sovellus seuraavalla komennolla:
Tätä komentoa suoritettaessa tapahtuu virhe. Aloittaaksemme sen korjaamisen, voimme jäsentää poikkeuksen tiedot pinon jäljitystiedoissa:
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}"
Meille tärkeintä tässä on maininta merkityksen selkeyttämisen mahdottomuudesta sa.logic.api.url. Analysoidaan koodia, jossa virhe tapahtuu.
▍Java-sovelluskoodianalyysi
Tässä on koodinpätkä, jossa virhe tapahtuu.
@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();
}
}
Kirjassa SentimentController siellä on kenttä saLogicApiUrl. Sen arvon määrää omaisuus sa.logic.api.url.
Linja saLogicApiUrl ketjuttaa arvoa /analyse/sentiment. Yhdessä ne muodostavat osoitteen, jolla voidaan soittaa tekstianalyysiä tekevään mikropalveluun.
▍Ominaisuuden arvon asettaminen
Keväällä ominaisuusarvojen oletuslähde on tiedosto application.properties, joka löytyy osoitteesta sa-webapp/src/main/resources. Mutta sen käyttö ei ole ainoa tapa määrittää ominaisuusarvoja. Voit tehdä tämän myös seuraavalla komennolla:
Tämän ominaisuuden arvon tulee osoittaa Python-sovelluksemme osoitteeseen.
Määrittämällä sen kerromme Spring-verkkosovellukselle, minne sen on mentävä suorittaakseen tekstin jäsennyspyyntöjä.
Jotta emme vaikeuttaisi elämäämme, päätämme, että Python-sovellus on saatavilla osoitteessa localhost:5000 ja yritä olla unohtamatta sitä. Tämän seurauksena komento Spring-sovelluksen käynnistämiseksi näyttää tältä:
Osoitteen määrittäminen POST-pyyntöjen lähettämistä varten.
Omaisuuden hakeminen sentence pyynnön esittäneeltä elimeltä.
Nimettömän objektin alustus TextBlob ja saada arvo polarity ensimmäiselle pyynnön tekstiosassa vastaanotetulle ehdotukselle (meidän tapauksessamme tämä on ainoa analysoitavaksi jätetty ehdotus).
Palautetaan vastaus, jonka runko sisältää tarjouksen tekstin ja sille lasketun indikaattorin polarity.
Flask-sovelluksen käynnistäminen, joka on saatavilla osoitteessa 0.0.0.0:5000 (pääset siihen myös käyttämällä lomakkeen rakennetta localhost:5000).
Nyt sovelluksen muodostavat mikropalvelut ovat käynnissä. Ne on asetettu olemaan vuorovaikutuksessa toistensa kanssa. Tältä sovelluskaavio näyttää tässä työvaiheessa.
Kaikki sovelluksen muodostavat mikropalvelut saatetaan terveeseen tilaan
Ennen kuin jatkamme, avaa React-sovellus selaimessa ja yritä jäsentää lausetta sen avulla. Jos kaikki on tehty oikein - painikkeen painamisen jälkeen Send näet analyysitulokset tekstiruudun alla.
Seuraavassa osiossa puhumme mikropalveluidemme ajamisesta Docker-säiliöissä. Tämä on tarpeen sovelluksen valmistelemiseksi toimimaan Kubernetes-klusterissa.
Docker-kontit
Kubernetes on järjestelmä konttisovellusten käyttöönoton, skaalauksen ja hallinnan automatisointiin. Sitä kutsutaan myös "konttiorkesteriksi". Jos Kubernetes toimii säiliöiden kanssa, meidän on ensin hankittava nämä kontit ennen tämän järjestelmän käyttöä. Mutta ensin puhutaan siitä, mitä säiliöt ovat. Ehkä paras vastaus kysymykseen, mitä se on, löytyy dokumentointi Dockeriin:
Säilökuva on kevyt, itsenäinen, suoritettava paketti, joka sisältää sovelluksen, joka sisältää kaiken sen suorittamiseen tarvittavan: sovelluskoodin, ajonaikaisen ympäristön, järjestelmätyökalut ja kirjastot, asetukset. Säilöttyjä ohjelmia voidaan käyttää sekä Linux- että Windows-ympäristöissä ja ne toimivat aina samalla tavalla infrastruktuurista riippumatta.
Tämä tarkoittaa, että säiliöitä voidaan ajaa millä tahansa tietokoneella, myös tuotantopalvelimilla, ja missä tahansa ympäristössä niiden sisällä olevat sovellukset toimivat samalla tavalla.
Tutustuaksesi säilöjen ominaisuuksiin ja verrataksesi niitä muihin sovellusten ajamiseen, katsotaanpa esimerkkiä React-sovelluksen palvelemisesta virtuaalikoneen ja säilön avulla.
▍React-sovelluksen staattisten tiedostojen palveleminen virtuaalikoneen avulla
Kun yritetään järjestää staattisten tiedostojen ylläpito virtuaalikoneiden avulla, kohtaamme seuraavat haitat:
Resurssien tehoton käyttö, koska jokainen virtuaalikone on täydellinen käyttöjärjestelmä.
Alustariippuvuus. Se, mikä toimii joissakin paikallisissa tietokoneissa, ei välttämättä toimi tuotantopalvelimella.
Virtuaalikoneratkaisun hidas ja resurssiintensiivinen skaalaus.
Nginx-verkkopalvelin, joka palvelee staattisia tiedostoja virtuaalikoneessa
Jos säiliöitä käytetään samanlaisen ongelman ratkaisemiseen, virtuaalikoneisiin verrattuna voidaan havaita seuraavat vahvuudet:
Tehokas resurssien käyttö: työskentele käyttöjärjestelmän kanssa Dockerin avulla.
Alustan riippumattomuus. Säilö, jota kehittäjä voi käyttää omalla tietokoneella, toimii missä tahansa.
Kevyt käyttöönotto kuvakerrosten avulla.
Nginx-verkkopalvelin, joka palvelee staattisia tiedostoja, jotka ovat käynnissä säilössä
Olemme vertailleet virtuaalikoneita ja säiliöitä vain muutamassa kohdassa, mutta sekin riittää saamaan käsityksen konttien vahvuuksista. Täällä Löydät lisätietoja Docker-konteista.
▍Säilökuvan rakentaminen React-sovellukselle
Docker-säilön perusrakennuspalikka on tiedosto Dockerfile. Tämän tiedoston alkuun tallennetaan säilön peruskuva, jonka jälkeen mukana on ohjesarja, joka kertoo kuinka luodaan sovelluksen tarpeita vastaava säilö.
Ennen kuin alamme työskennellä tiedoston kanssa Dockerfile, muista mitä teimme valmistellaksemme React-sovelluksen tiedostot ladattavaksi Nginx-palvelimelle:
React-sovelluspaketin rakentaminen (npm run build).
Mukana tulevat ohjeet Dockerfile soveltamista varten SA-Frontend, koostuu vain kahdesta komennosta. Tosiasia on, että Nginx-kehitystiimi on valmistellut perustiedot kuva Nginxille, jota käytämme imagomme rakentamiseen. Tässä on kaksi vaihetta, jotka meidän on kuvattava:
Sinun täytyy tehdä Nginx-kuvasta kuvan perusta.
Kansion sisältö sa-frontend/build täytyy kopioida kuvakansioon nginx/html.
Jos siirrymme tästä kuvauksesta tiedostoon Dockerfile, niin se näyttää tältä:
FROM nginx
COPY build /usr/share/nginx/html
Kuten näet, kaikki täällä on hyvin yksinkertaista, kun taas tiedoston sisältö osoittautuu jopa melko luettavaksi ja ymmärrettäväksi. Tämä tiedosto käskee järjestelmän ottamaan kuvan nginx kaikella, mitä sillä jo on, ja kopioi hakemiston sisältö build hakemistoon nginx/html.
Täällä sinulla voi olla kysymys siitä, kuinka tiedän, mihin tarkalleen kopioin tiedostot kansiosta buildeli mistä polku tuli /usr/share/nginx/html. Itse asiassa tässäkään ei ole mitään monimutkaista. Tosiasia on, että asiaankuuluvat tiedot löytyvät osoitteesta kuvaus kuva.
▍Kuvan kokoaminen ja lataaminen arkistoon
Ennen kuin voimme työskennellä valmiin kuvan kanssa, meidän on lähetettävä se kuvavarastoon. Käytämme tähän ilmaista pilvipohjaista kuvanhallintaalustaa Docker Hub. Tässä työvaiheessa sinun on tehtävä seuraavat:
Tässä ja alla samanlaisissa komennoissa $DOCKER_USER_ID tulee korvata käyttäjänimelläsi Docker Hubissa. Esimerkiksi tämä komennon osa voi näyttää tältä: rinormaloku/sentiment-analysis-frontend.
Tässä tapauksessa tätä komentoa voidaan lyhentää poistamalla siitä -f Dockerfile, koska kansiossa, jossa suoritamme tämän komennon, on jo tämä tiedosto.
Jotta voimme lähettää valmiin kuvan arkistoon, tarvitsemme seuraavan komennon:
Kun se on valmis, tarkista Docker Hubin arkistoluettelosi nähdäksesi, onko kuva onnistuneesti siirretty pilvitallennustilaan.
▍ Säiliön käynnistäminen
Nyt kuka tahansa voi ladata ja käyttää nimellä tunnetun kuvan $DOCKER_USER_ID/sentiment-analysis-frontend. Jotta voit tehdä tämän, sinun on suoritettava seuraava komentosarja:
docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend
Nyt kontti on käynnissä, ja voimme jatkaa työtä luomalla muita tarvitsemiamme kuvia. Mutta ennen kuin jatkamme, ymmärrämme suunnittelun 80:80, joka löytyy kuvan suorittamiskomennosta ja saattaa vaikuttaa hämmentävältä.
Ensimmäinen numero 80 on isännän (eli paikallisen tietokoneen) porttinumero.
Toinen numero 80 on kontin satama, johon pyyntö tulee ohjata.
Harkitse seuraavaa kuvaa.
Portin uudelleenohjaus
Järjestelmä välittää pyynnöt portista <hostPort> satamaan <containerPort>. Eli pääsy satamaan 80 tietokone ohjataan porttiin 80 kontti.
Satamasta lähtien 80 avattu paikallisella tietokoneella, voit käyttää sovellusta tältä tietokoneelta osoitteessa localhost:80. Jos järjestelmäsi ei tue Dockeria, voit ajaa sovelluksen Docker-virtuaalikoneessa, jonka osoite näyttää tältä <docker-machine ip>:80. Voit selvittää Docker-virtuaalikoneen IP-osoitteen käyttämällä komentoa docker-machine ip.
Tässä vaiheessa, kun käyttöliittymän sovellussäilö on käynnistetty onnistuneesti, sinun pitäisi pystyä avaamaan sen sivu selaimessa.
▍.dockerignore-tiedosto
Sovelluskuvan rakentaminen SA-Frontend, voimme huomata, että tämä prosessi on erittäin hidas. Tämä johtuu siitä, että kuvan koontikonteksti on lähetettävä Docker-daemonille. Koontikontekstia edustava hakemisto annetaan komennon viimeisenä argumenttina docker build. Meidän tapauksessamme tämän komennon lopussa on piste. Tämä johtaa seuraavan rakenteen sisällyttämiseen kokoonpanokontekstiin:
Mutta kaikista täällä olevista kansioista tarvitsemme vain kansion build. Kaiken muun lataaminen on ajanhukkaa. Voit nopeuttaa rakentamista kertomalla Dockerille, mitkä hakemistot jätetään huomiotta. Tätä varten tarvitsemme tiedoston .dockerignore. Sinä, jos olet perehtynyt tiedostoon .gitignore, tämän tiedoston rakenne näyttää todennäköisesti tutulta. Se luettelee hakemistoja, jotka kuvanrakennusjärjestelmä voi jättää huomiotta. Meidän tapauksessamme tämän tiedoston sisältö näyttää tältä:
node_modules
src
public
tiedosto .dockerignore on oltava samassa kansiossa kuin tiedosto Dockerfile. Nyt kuvan kokoaminen kestää muutaman sekunnin.
Käsitellään nyt Java-sovelluksen kuvaa.
▍Säilökuvan rakentaminen Java-sovellukselle
Tiedät mitä, ja olet jo oppinut kaiken, mitä tarvitset säilökuvien luomiseen. Tästä syystä tämä osa tulee olemaan hyvin lyhyt.
Avaa tiedosto Dockerfile, joka sijaitsee projektikansiossa sa-webapp. Jos luet tämän tiedoston tekstin, kohtaat siinä vain kaksi uutta rakennetta, jotka alkavat avainsanoilla ENV и EXPOSE:
Avainsana ENV mahdollistaa ympäristömuuttujien ilmoittamisen Docker-säiliöiden sisällä. Erityisesti meidän tapauksessamme sen avulla voit asettaa URL-osoitteen, jolla pääset tekstianalyysiä suorittavan sovelluksen sovellusliittymään.
Avainsana EXPOSE antaa sinun käskeä Dockeria avaamaan portin. Aiomme käyttää tätä porttia työskennellessämme sovelluksen kanssa. Tästä näet sen Dockerfile soveltamista varten SA-Frontend sellaista käskyä ei ole. Tämä on vain dokumentointia varten, toisin sanoen tämä rakenne on lukijalle Dockerfile.
Kuvan rakentaminen ja siirtäminen arkistoon näyttää täsmälleen samalta kuin edellinen esimerkki. Jos et ole vielä kovin varma kyvyistäsi, vastaavat komennot löytyvät tiedostosta README.md kansiossa sa-webapp.
▍Säilökuvan rakentaminen Python-sovellukselle
Jos katsot tiedoston sisältöä Dockerfile kansiossa sa-logicet löydä sieltä mitään uutta. Komennot kuvan rakentamiseen ja arkistoon työntämiseen pitäisi olla sinulle jo tuttuja, mutta kuten muissakin sovelluksissamme, ne löytyvät tiedostosta README.md kansiossa sa-logic.
▍Testataan konttisovelluksia
Voitko luottaa johonkin, jota et ole testannut? En myöskään voi. Testataan konttejamme.
Aloitetaan sovellussäilö sa-logic ja määritä se kuuntelemaan portissa 5050:
docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
Aloitetaan sovellussäilö sa-webapp ja määritä se kuuntelemaan portissa 8080. Lisäksi meidän on asetettava portti, jolla Python-sovellus kuuntelee Java-sovelluksen pyyntöjä määrittämällä ympäristömuuttuja uudelleen 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
Lisätietoja säilön tai Docker VM:n IP-osoitteen selvittämisestä on tiedostossa LUEMINUT.
Aloitetaan sovellussäilö sa-frontend:
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend
Nyt kaikki on valmis navigoimaan selaimessa osoitteeseen localhost:80 ja testaa sovellusta.
Huomaa, että jos vaihdat portin sa-webapp, tai jos käytät Docker VM:ää, sinun on muokattava tiedostoa App.js kansiosta sa-frontendmuuttamalla menetelmän IP-osoitetta tai portin numeroa analyzeSentence()korvaamalla nykyiset tiedot vanhentuneiden tietojen sijaan. Sen jälkeen sinun on koottava kuva uudelleen ja käytettävä sitä.
Tältä sovelluskaaviomme näyttää nyt.
Mikropalvelut toimivat konteissa
Yhteenveto: miksi tarvitsemme Kubernetes-klusterin?
Tarkistimme juuri tiedostot Dockerfile, puhui kuvien rakentamisesta ja siirtämisestä Docker-arkistoon. Lisäksi opimme nopeuttamaan kuvien kokoamista tiedoston avulla .dockerignore. Tämän seurauksena mikropalvelumme toimivat nyt Docker-konteissa. Täällä sinulla voi olla täysin perusteltu kysymys siitä, miksi tarvitsemme Kubernetesia. Vastaus tähän kysymykseen on omistettu tämän materiaalin toiselle osalle. Mieti sillä välin seuraavaa kysymystä:
Oletetaan, että tekstianalyysiverkkosovelluksestamme on tullut suosittu maailmanlaajuisesti. Hänelle tulee miljoonia pyyntöjä joka minuutti. Tämä tarkoittaa, että mikropalvelut sa-webapp и sa-logic tulee olemaan valtavan stressin alla. Kuinka skaalata kontit, jotka tarjoavat mikropalveluita?