Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers

I la matou talosaga, na faia ai e Habr se nofoaga Kubernetes ma ua matou fiafia e tuu le lomiga muamua i totonu. Fa'asoa!

Kubernetes e faigofie. Aisea e totogi ai e faletupe le tele o tupe e galue ai i lenei vaega, ae e mafai e se tasi ona faʻatautaia lenei tekinolosi i ni nai itula?

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers

Afai e te masalosalo e mafai ona vave aʻoaʻoina Kubernetes, ou te fautua atu e te faʻataʻitaʻi oe lava ia. O lona uiga, a maeʻa ona e faʻaogaina lenei mea, o le a mafai ona e faʻatautaia se talosaga e faʻavae i luga o microservices i totonu o le Kubernetes cluster. E mafai ona ou faʻamaonia lenei mea, talu ai o le auala lava lea e tasi o loʻo faʻaogaina iinei ou te aʻoaʻoina ai a matou tagata faʻatau e galulue ma Kubernetes. O le a le mea e ese ai lenei taiala mai isi? O le mea moni, e tele naua mea. O lea la, o le tele o nei mea e amata i se faʻamatalaga o mea faigofie - o manatu o Kubernetes ma foliga o le kubectl command. O tusitala o nei mea e manatu o latou au faitau e masani i le atinaʻeina o talosaga, microservices, ma Docker containers. O le a tatou o i le isi auala. Muamua, o le a tatou talanoa e uiga i le faʻaogaina o se talosaga e faʻavae i luga o microservices i luga o se komepiuta. Ona tatou vaʻavaʻai lea i le fausiaina o ata atigipusa mo microservice taʻitasi. Ma a maeʻa lena, o le a tatou masani ma Kubernetes ma vaʻavaʻai i le faʻaogaina o se talosaga e faʻavae i luga o microservices i se fuifui e pulea e Kubernetes.

O lenei faiga, faʻatasi ai ma se faʻasolosolo malie i Kubernetes, o le a tuʻuina atu ai le loloto o le malamalama i mea o loʻo tupu e manaʻomia mo le averesi tagata ina ia malamalama i le faigofie o mea uma e galue i Kubernetes. O le Kubernetes e mautinoa lava o se tekinolosi faigofie, pe afai oi latou e fia aʻoaʻoina e iloa le mea ma pe faʻapefea ona faʻaaogaina.

Ia, e aunoa ma se toe faʻalavelave, seʻi o tatou amata ma talanoa e uiga i le talosaga o le a tatou galulue ai.

Fa'ata'ita'iga fa'aoga

O la matou talosaga o le a faia na o le tasi le galuega. E manaʻomia se fuaiupu e tasi e fai ma faʻaoga, a maeʻa, e faʻaaoga ai meafaigaluega auʻiliʻiliga o tusitusiga, e faia ai le iloiloga o lagona o lenei fuaiupu, maua se iloiloga o uiga faʻalagona o le tusitala o le fuaiupu i se mea patino.

O le foliga lea o le faamalama autu o lenei talosaga.

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers
Upega tafa'ilagi mo su'esu'ega lagona o tusitusiga

Mai se vaaiga faʻapitoa, o le talosaga e aofia ai le tolu microservices, o ia mea taʻitasi e foia ai se seti o galuega:

  • SA-Frontend o se 'upega tafaʻilagi Nginx e faʻaogaina faila React static.
  • SA-WebApp o se 'upega tafaʻilagi e tusia i Java e faʻatautaia talosaga mai le pito i luma.
  • SA-Logic o se Python application e faʻatino ai suʻesuʻega lagona i luga o tusitusiga.

E taua le maitauina o microservices e le o iai fa'atasi. Latou te faʻatinoina le manatu o le "vavaeeseina o matafaioi", ae i le taimi lava e tasi latou te manaʻomia le fegalegaleai ma le tasi.

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers
Fa'amatalaga e tafe i totonu o le talosaga

I le ata o loʻo i luga, e mafai ona e vaʻai i laʻasaga faʻanumera o le faiga, faʻaalia ai faʻamatalaga o loʻo tafe i totonu o le talosaga. Sei o tatou vaai ia i latou:

  1. E mana'omia e le su'esu'e se faila mai le server index.html (lea, i le isi itu, e sii maia le React application package).
  2. E fegalegaleai le tagata faʻaoga ma le talosaga, e mafua ai se valaau i le Spring-based web application.
  3. O le upega tafaʻilagi e tuʻuina atu le talosaga e fai suʻesuʻega tusitusiga i le Python application.
  4. O le talosaga a le Python e fa'atino ai su'esu'ega lagona o le tusitusiga ma toe fa'afo'i le taunu'uga o se tali i le talosaga.
  5. O le Spring application e tuʻuina atu se tali i le React application (lea, i le isi itu, e faʻaalia ai le iʻuga o le suʻesuʻega o tusitusiga i le tagata faʻaoga).

O le code mo nei talosaga uma e mafai ona maua iinei. Ou te fautua atu ia e kopiina lenei faleteuoloa mo oe i le taimi nei, talu ai o loʻo i ai le tele o faʻataʻitaʻiga manaia i luma atu o matou.

Fa'atino se talosaga fa'avae microservices i lau masini fa'apitonu'u

Ina ia mafai ona galue le talosaga, e tatau ona tatou amataina uma microservices e tolu. Tatou amata i le sili ona manaia o latou uma - o le pito i luma talosaga.

▍ Seti React mo atina'e fa'apitonu'u

Ina ia faʻatautaia se talosaga React, e tatau ona e faʻapipiʻi le Node.js platform ma le NPM i lau komepiuta. A mae'a ona fa'apipi'i nei mea uma, fa'aoga le fa'ailoga e fa'afeiloa'i ai i lau faila o le poloketi sa-frontend ma tamomoe le poloaiga lenei:

npm install

E ala i le faʻatinoina o lenei faʻatonuga i totonu o le faila node_modules o faʻalagolago i le React talosaga o le a utaina, faʻamaumauga o loʻo i totonu o le faila package.json. O le taimi lava e sii mai ai faʻalagolago i le pusa lava e tasi, faʻataʻitaʻi le poloaiga lenei:

npm start

Pau lava lena. O lea la o loʻo faʻagasolo le talosaga React, e mafai ona e mauaina e ala i le alu i le tuatusi lea i lau suʻega: localhost:3000. E mafai ona e suia se mea i lona code. O le a vave ona e vaʻai i le aʻafiaga o nei suiga i le browser. E mafai lenei mea faʻafetai i le mea ua taʻua o le "vevela" sui o modules. O le mea lea ua avea ai le atina'e pito i luma o se aafiaga faigofie ma fiafia.

▍ Saunia se talosaga React mo le gaosiga

Mo le faʻamoemoe o le faʻaaogaina moni o le React application, e manaʻomia ona tatou faʻaliliuina i se seti o faila faʻamau ma tuʻuina atu i tagata faʻatau e faʻaaoga ai se upega tafaʻilagi.

Ina ia fausia le React application, toe faʻaaoga le laina, faʻafeiloaʻi i le faila sa-frontend ma tamomoe le poloaiga lenei:

npm run build

Ole mea lea ole a faia ai se fa'atonuga ile faila ole poloketi build. O le a iai uma faila fa'amau e mana'omia mo le React application e galue ai.

▍ Tuuina atu faila faʻamaufaʻailoga e faʻaaoga ai le Nginx

Muamua e tatau ona e faʻapipiʻi ma taʻavale le Nginx web server. o e mafai ona e sii maia ma maua faatonuga i le auala e faʻapipiʻi ma taʻavale ai. Ona e manaʻomia lea ona kopi mea o loʻo i totonu o le faila sa-frontend/build i faila [your_nginx_installation_dir]/html.

Faatasi ai ma lenei auala, o le faila na faia i le faagasologa o le fausiaina o le React application index.html o le a maua i [your_nginx_installation_dir]/html/index.html. O le faila lea, ona o le faaletonu, e maua e le Nginx server pe a maua. Ua fa'atulagaina le 'au'aunaga e fa'alogo i luga o le taulaga 80, ae e mafai ona faʻavasegaina i le auala e te manaʻomia e ala i le faʻasaʻoina o le faila [your_nginx_installation_dir]/conf/nginx.conf.

Tatala nei lau su'esu'ega ma alu i localhost:80. O le a e vaʻai i le React application page.

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers
React talosaga na tuʻuina atu e le Nginx server

Afai e te ulufale nei i se mea i totonu o le fanua Type your sentence ma oomi le faamau Send - e leai se mea e tupu. Ae, afai e te tilotilo i le faʻamafanafanaga, e mafai ona e vaʻai i faʻamatalaga sese iina. Ina ia malamalama pe o fea tonu e tupu ai nei mea sese, seʻi o tatou suʻesuʻeina le code code.

▍Su'esu'ega tulafono ole talosaga pito i luma

Vaʻai i le faila faila App.js, e mafai ona tatou iloa o le oomiina o le faamau Send e taʻua se metotia analyzeSentence(). O le code mo lenei metotia o loʻo tuʻuina atu i lalo. Faamolemole ia matau o laina taitasi e iai se faamatalaga o le fomu # Номер, o loʻo i ai se faʻamatalaga o loʻo tuʻuina atu i lalo ole code. O le a matou suʻesuʻeina isi vaega code i le auala lava e tasi.

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. Le URL lea e fai ai le talosaga POST. E fa'apea o lo'o i ai se talosaga i lenei tuatusi o lo'o fa'amoemoeina ai ia talosaga.

2.O le tino talosaga na lafo i le talosaga. Ole fa'ata'ita'iga ole tino ole talosaga:

{
    sentence: "I like yogobella!"
}

3.A maua se tali i se talosaga, o le tulaga o le vaega e toe faafou. O le mea lea e mafua ai ona toe faʻaleleia le vaega. Afai matou te mauaina faʻamatalaga (o lona uiga, o se mea JSON o loʻo i ai faʻamatalaga faʻapipiʻi ma le sikoa faʻatulagaina), matou te faʻaalia le vaega. Polarity, talu ai o le a ausia tulaga talafeagai. O le auala lenei matou te faʻamatalaina ai le vaega:

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

E foliga mai o loʻo galue lelei le code. Ae o le a le mea o tupu i lenei mea? Afai e te manatu i le tuatusi o loʻo taumafai ai le talosaga e tuʻuina atu se talosaga POST, e leai se mea e mafai ona talia ma faʻatautaia lenei talosaga, ona e saʻo atoatoa lea. O lona uiga, ia fa'agasolo talosaga na maua i http://localhost:8080/sentiment, matou te manaʻomia le faʻaogaina o se upega tafaʻilagi e faʻavae i le Spring.

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers
Matou te manaʻomia se talosaga Spring e mafai ona talia se talosaga POST

▍Fa'atūina se talosaga i luga ole laiga ole Spring

Ina ia faʻapipiʻi se talosaga Spring, e te manaʻomia JDK8 ma Maven ma faʻapipiʻi lelei suiga o le siosiomaga. A mae'a ona fa'apipi'i uma nei mea, e mafai ona e fa'aauau le galue i la matou poloketi.

▍ Fa'apipi'i se talosaga i totonu o se faila fagu

Su'e, fa'aaoga se fa'amau, i le faila sa-webapp ma ulufale i le poloaiga lenei:

mvn install

A maeʻa le faʻatonuina o lenei poloaiga i totonu o le faila sa-webapp o le a faia se lisi target. O le mea lea o le a maua ai le Java application, afifi i totonu o se faila fagu, faʻatusalia e le faila sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

▍Fa'aola se talosaga Java

Alu i le faila target ma taʻavale le talosaga ma le faʻatonuga lea:

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

O le a tupu se mea sese a'o fa'atinoina lenei fa'atonuga. Ina ia amata faʻapipiʻi, e mafai ona tatou auʻiliʻili faʻamatalaga faʻapitoa i faʻamaumauga o faʻamaumauga:

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

Mo i matou, o le mea sili ona taua iinei o le taʻua o le le mafai ona faʻamalamalamaina le uiga sa.logic.api.url. Sei o tatou iloiloina le code lea e tupu ai le mea sese.

▍ Java applicate code analysis

O le snippet code lea e tupu ai le mea sese.

@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 le SentimentController e iai le fanua saLogicApiUrl. O lona tau e faʻamaonia e le meatotino sa.logic.api.url.
  2. Laina saLogicApiUrl fa'atasi ma le tau /analyse/sentiment. Faʻatasi latou te faia le tuatusi mo le faia o se telefoni i le microservice o loʻo faia suʻesuʻega tusitusiga.

▍ Seti se tau o meatotino

I le tautotogo, o le punavai masani o tau o meatotino o se faila application.properties, lea e mafai ona maua i sa-webapp/src/main/resources. Ae o lona faʻaaogaina e le naʻo le pau lea o le auala e faʻatulaga ai tau o meatotino. E mafai foi ona faia lenei mea e faʻaaoga ai le poloaiga lenei:

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

O le tau o lenei meatotino e tatau ona faasino i le tuatusi o la matou talosaga Python.

E ala i le faʻatulagaina, matou te taʻu atu i le Spring web application le mea e manaʻomia e alu ai e faʻatino ai suʻesuʻega faʻamatalaga.

Ina ia aua nei faʻalavelaveina o matou olaga, matou te filifili o le a maua le Python application i localhost:5000 ma ia tatou taumafai e aua nei galo. O se taunuuga, o le poloaiga e faʻalauiloa le Spring application o le a pei o lenei:

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

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers
O la matou polokalama o loʻo misi se talosaga Python

O le taimi nei na pau lava le mea e tatau ona tatou faia o le faʻaogaina o le Python application ma o le a galue le polokalama e pei ona faʻamoemoeina.

▍Fa'atūina se talosaga Python

Ina ia faʻatautaia se talosaga Python, e tatau ona e faʻapipiʻi le Python 3 ma Pip, ma e tatau ona faʻatulaga saʻo suiga o le siosiomaga talafeagai.

▍ Fa'apipi'i fa'alagolago

Alu i lau faila o le poloketi sa-logic/sa ma fa'atonu tulafono nei:

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

▍Tatala le talosaga

A maeʻa ona faʻapipiʻi faʻalagolago, ua matou sauni e faʻatautaia le talosaga:

python sentiment_analysis.py

A maeʻa le faʻatonuga o le a taʻuina mai ia i matou mea nei:

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

O lona uiga o loʻo faʻagasolo le talosaga ma o loʻo faʻatali mo talosaga ile localhost:5000/

▍ Su'esu'ega Fa'asinomaga

Sei o tatou vaʻai i le Python code code e malamalama ai pe faʻafefea ona tali atu i talosaga:

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. Amataina o se mea Flask.
  2. Fa'amaoti se tuatusi mo le fa'atinoina o talosaga POST i ai.
  3. Toe aumai se Meatotino sentence mai le tino talosaga.
  4. Fa'amataina o se mea e le ta'ua TextBlob ma maua le tau polarity mo le fuaiupu muamua na maua i totonu o le tino o le talosaga (i lo matou tulaga, naʻo le pau lea o le faʻasalaga na lafoina mo suʻesuʻega).
  5. Fa'afo'i se tali o lo'o i ai i lona tino le anotusi o le fuaiupu ma le fa'ailoga fuafuaina mo ia polarity.
  6. Tatala se talosaga Flask, lea o le a maua i 0.0.0.0:5000 (e mafai foʻi ona e mauaina i le faʻaogaina o le fausiaina o le fomu localhost:5000).

O lo'o fa'agasolo nei auaunaga laiti o lo'o faia ai le talosaga. Ua fa'alogoina e fegalegaleai ai le tasi ma le isi. O le foliga lea o le ata o le talosaga i lenei laasaga o galuega.

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers
O microservices uma o loʻo faʻapipiʻiina ai le talosaga o loʻo tuʻuina atu i le faʻatonuga

Ia, ae e te leʻi faʻaauau, tatala lau React application i totonu o se suʻega ma taumafai e faʻapipiʻi se fuaiupu i ai. Afai e saʻo mea uma - pe a uma ona oomi le ki Send o le a e va'ai i'uga au'ili'ili i lalo ole fanua o tusitusiga.

I le isi vaega, o le a tatou talanoa pe faʻafefea ona faʻatautaia a matou microservices i Docker containers. E mana'omia lenei mea ina ia mafai ai ona saunia le talosaga e fa'agasolo i luga o le Kubernetes cluster.

Koneteina Docker

Kubernetes ose faiga mo le otometi le faʻapipiʻiina, faʻavasegaina ma le puleaina o talosaga faʻapipiʻi. E ta'ua foi o le “container orchestrator”. Afai e galue Kubernetes ma containers, aʻo leʻi faʻaogaina lenei faiga e tatau ona tatou mauaina muamua nei koneteina. Ae muamua, se'i o tatou talanoa po oa containers. Masalo o le tali sili i le fesili o le a le mea e mafai ona maua i totonu fa'amaumauga ia Docker:

O se ata atigipusa o se mea mama, faʻapipiʻi, faʻapipiʻi faʻapipiʻi o loʻo i ai se talosaga, lea e aofia ai mea uma e manaʻomia e faʻatino ai: code talosaga, siosiomaga faʻatinoina, mea faigaluega ma faletusi, faʻatulagaga. E mafai ona fa'aogaina polokalame fa'apipi'i i totonu o Linux ma Windows si'osi'omaga, ma o le a tutusa lava le galulue e tusa lava po'o le a le atina'e.

O lona uiga o koneteina e mafai ona faʻatautaia i luga o soʻo se komepiuta, e aofia ai le gaosiga o sapalai, ma o talosaga o loʻo i ai o le a tutusa le aoga i soʻo se siosiomaga.

Ina ia suʻesuʻe foliga o pusa ma faʻatusatusa i isi auala e faʻatautaia ai talosaga, seʻi o tatou vaʻai i se faʻataʻitaʻiga o le tuʻuina atu o le React application e faʻaaoga ai se masini masini ma se atigipusa.

▍ Tu'uina atu faila fa'apitoa o se talosaga React e fa'aoga ai se masini fa'asolo

O le taumafai e faʻatulagaina le tautua o faila faila e faʻaaoga ai masini masini, o le a tatou feagai ma mea le lelei nei:

  1. Le faʻaogaina o punaoa, talu ai o masini komepiuta taʻitasi o se faiga faʻaogaina atoatoa.
  2. Fa'alagolago fa'avae. O mea e galue i luga o se komepiuta fa'apitonu'u atonu e le aoga i luga o se fa'aumau gaosiga.
  3. Fa'ase'e lemu ma le tele o puna'oa o se vaifofo fa'avae masini.

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers
Nginx web server o loʻo tuʻuina atu faila faʻapitoa o loʻo taʻavale i luga o se masini masini

Afai e faʻaaogaina pusa e foia ai se faʻafitauli tutusa, o lona uiga, pe a faʻatusatusa i masini masini, o malosiaga nei e mafai ona matauina:

  1. Fa'aoga lelei o punaoa: galue ma le faiga faʻaogaina e faʻaaoga ai Docker.
  2. Tuto'atasi tulaga. O se atigipusa e mafai e se tagata atiae ona taʻavale i luga o lana komepiuta o le a aoga i soʻo se mea.
  3. Faʻapipiʻiina mama e ala i le faʻaogaina o ata faʻapipiʻi.

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers
Nginx web server o loʻo tuʻuina atu faila faʻapitoa o loʻo taʻavale i totonu o se atigipusa

Na matou faʻatusatusaina masini masini ma koneteina i ni nai mea, ae e oʻo lava i lenei mea e lava e maua ai se lagona mo le malosi o pusa. o E mafai ona e mauaina faʻamatalaga e uiga i pusa Docker.

▍Fausia se ata atigipusa mo se talosaga React

O le faavae autu o le Docker container o le faila Dockerfile. I le amataga o lenei faila, o se faʻamaumauga o loʻo faia i le ata pito i lalo o le koneteina, ona iai lea o se faʻasologa o faʻatonuga e faʻaalia ai le auala e fai ai se atigipusa e fetaui ma manaʻoga o se faʻaoga patino.

Ae tatou te leʻi amata galue i le faila Dockerfile, tatou manatua le mea na matou faia e saunia ai faila talosaga React mo le tuʻuina atu i le Nginx server:

  1. Fausia se pusa talosaga React (npm run build).
  2. Amataina le server Nginx.
  3. Kopi o mea o lo'o i totonu o le fa'atonuga build mai le faila o galuega sa-frontend i le faila server nginx/html.

I lalo e mafai ona e vaʻai i mea tutusa i le va o le fatuina o se atigipusa ma laasaga o loʻo i luga na faia i lau komepiuta i le lotoifale.

▍ Saunia le Dockerfile mo le talosaga SA-Frontend

O faatonuga o le a aofia i totonu Dockerfile mo talosaga SA-Frontend, e aofia ai na'o le lua 'au. O le mea moni o le Nginx development team ua saunia se faʻavae ata mo Nginx, lea o le a matou faʻaogaina e fatu ai a matou ata. O laasaga nei e lua e manaʻomia ona matou faʻamatalaina:

  1. O le faavae o le ata e tatau ona avea ma ata Nginx.
  2. Fa'amau i totonu sa-frontend/build e tatau ona kopi i le faila ata nginx/html.

Afai e te alu mai lenei faʻamatalaga i le faila Dockerfile, ona foliga mai lea:

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

E pei ona mafai ona e vaʻaia, o mea uma iinei e matua faigofie lava, ma o mea o loʻo i totonu o le faila e oʻo lava ina faʻaalia e matua faigofie ma malamalama. O lenei faila e taʻu atu i le faiga e ave le ata nginx ma mea uma ua uma ona i ai, ma kopi mea o loʻo i totonu o le lisi build i le lisi nginx/html.

Atonu e iai sau fesili pe fa'afefea ona ou iloa le mea tonu e te mana'omia e kopi ai faila mai le faila build, o lona uiga, o fea na sau ai le ala /usr/share/nginx/html. O le mea moni, e leai se mea faigata foi iinei. O le mea moni o faʻamatalaga talafeagai e mafai ona maua i totonu fa'amatalaga ata.

▍ Fausiaina o le ata ma lafo i le fale teu oloa

Aʻo leʻi mafai ona tatou galulue faʻatasi ma le ata ua maeʻa, e tatau ona tatou tuleia i le fale teu ata. Ina ia faia lenei mea, matou te faʻaogaina le free cloud image hosting platform Docker Hub. I lenei tulaga o le galuega e tatau ona e faia mea nei:

  1. Faʻamau Docker.
  2. Resitala ile Docker Hub website.
  3. Fa'ailoga i lau fa'amatalaga e ala i le fa'atinoina o le fa'atonuga lea i le fa'ailoga:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

Ole taimi nei e te mana'omia le fa'aogaina o le laina e alu ai ile fa'atonuga sa-frontend ma tamomoe le poloaiga lenei iina:

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

O iinei ma isi poloaiga faapena $DOCKER_USER_ID e tatau ona sui i lou igoa ole Docker Hub. Mo se faʻataʻitaʻiga, o lenei vaega o le faʻatonuga atonu e pei o lenei: rinormaloku/sentiment-analysis-frontend.

I lenei tulaga, e mafai ona faapuupuuina lenei poloaiga e ala i le aveesea mai ai -f Dockerfile, talu ai o lenei faila ua uma ona i ai i totonu o le faila lea o loʻo matou faʻatinoina ai lenei poloaiga.

Ina ia auina atu le ata ua maeʻa i le fale teu oloa, matou te manaʻomia le poloaiga lenei:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

A maeʻa, siaki le lisi o au faleoloa ile Docker Hub ina ia malamalama pe na manuia le faʻapipiʻiina o le ata i le teuina o ao.

▍Ta'e se koneteina

Ole taimi nei e mafai e soʻo se tasi ona sii mai ma faʻataʻitaʻi le ata, ua taʻua o $DOCKER_USER_ID/sentiment-analysis-frontend. Ina ia faia lenei mea, e tatau ona e tamoe i le faasologa o poloaiga:

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

O lea la o loʻo taʻavale le koneteina, e mafai ona faʻaauau le galulue e ala i le fatuina o isi ata matou te manaʻomia. Ae tatou te leʻi faʻaauau, ia tatou malamalama i le mamanu 80:80, lea e aliali mai i le faʻatonuga faʻalauiloa ata ma e foliga mai e le mautonu.

  • Numera muamua 80 - o le numera o le taulaga talimalo (o lona uiga, le komepiuta i le lotoifale).
  • Numera lona lua 80 o le uafu o le container lea e tatau ona lafo i ai le talosaga.

Seʻi manatu i le talafaatusa lea.

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers
Taulaga Taulaga

O le faiga e toe faʻafeiloaʻi talosaga mai le taulaga <hostPort> i le uafu <containerPort>. O lona uiga, avanoa i le uafu 80 komipiuta ua toe faasino i le uafu 80 pusa.

Talu mai le uafu 80 tatala i luga o le komepiuta i le lotoifale, ona mafai lea ona e mauaina le talosaga mai lenei komepiuta i localhost:80. Afai e le lagolagoina e lau polokalama Docker, e mafai ona faʻatautaia le talosaga i luga o se masini komepiuta Docker, o le tuatusi o le a foliga mai. <docker-machine ip>:80. Ina ia maua le tuatusi IP o le Docker virtual machine, e mafai ona e faʻaogaina le poloaiga docker-machine ip.

I le taimi lea, a maeʻa ona faʻalauiloa le pusa talosaga pito i luma, e tatau ona e tatalaina lona itulau i le suʻega.

▍O le faila .dockerignore

Aoina o se ata talosaga SA-Frontend, e mafai ona tatou maitauina o lenei faagasologa e matua tuai lava. E tupu lenei mea ona e tatau ona auina atu le ata fausia i le Docker daemon. O le fa'atonuga o lo'o fa'atusalia le tala faufale o lo'o fa'amaoti mai o le finauga mulimuli o le fa'atonuga docker build. I la matou tulaga, o loʻo i ai se togi i le pito o lenei poloaiga. O le mea lea e mafua ai le faʻapipiʻiina o le fausaga o loʻo i lalo i totonu o le faʻatulagaga o le fausiaina:

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

Ae o faila uma o loʻo i ai iinei, matou te manaʻomia naʻo le faila build. O le utaina o soʻo se isi mea o se faʻamaumau taimi. E mafai ona e faʻavaveina le fausiaina e ala i le taʻu atu ia Docker poʻo fea lisi e le amanaiaina. Ina ia faia lenei mea matou te manaʻomia le faila .dockerignore. O oe, pe afai e te masani i le faila .gitignore, atonu e foliga masani le fausaga o lenei faila. O lo'o lisiina ai fa'atonuga e mafai ona le amana'ia e le faiga o ata fausia. I la matou tulaga, o mea o loʻo i totonu o lenei faila e pei o lenei:

node_modules
src
public

faila .dockerignore e tatau ona i totonu o le faila tutusa ma le faila Dockerfile. I le taimi nei, o le fausiaina o le ata o le a alu na o sina sekone.

Tatou galulue nei i le ata mo le talosaga Java.

▍Fausia se ata atigipusa mo se talosaga Java

E te iloa o le a, ua uma ona e aʻoaʻoina mea uma e tatau ona e iloa e fai ai ata atigipusa. O le mafuaaga lena o le a matua puupuu ai lenei vaega.

Tatala le faila Dockerfilelea o loo i totonu o le faila o le poloketi sa-webapp. Afai e te faitau i le tusiga o lenei faila, o le a e vaʻaia naʻo le lua fausaga fou i totonu, amata i upu autu ENV и EXPOSE:

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

Upu autu ENV Fa'ataga oe e fa'ailoa suiga o le si'osi'omaga i totonu o koneteina Docker. Aemaise lava, i la matou tulaga, e mafai ai ona e faʻamaonia se URL e maua ai le API o le talosaga e faʻatino ai suʻesuʻega tusitusiga.

Upu autu EXPOSE faʻatagaina oe e taʻu atu ia Docker e tatala se taulaga. O le a matou faʻaogaina lenei taulaga aʻo faʻagasolo le talosaga. O iinei e mafai ona e matauina i totonu Dockerfile mo talosaga SA-Frontend e leai se poloaiga faapena. E na'o mo fa'amaumauga o fa'amaumauga, i se isi faaupuga, o lenei fausaga e fa'amoemoe mo le tagata e faitau Dockerfile.

Fausia le ata ma tulei i le fale teu oloa e foliga tutusa lava ma le faʻataʻitaʻiga muamua. Afai e te leʻi mautinoa tele i ou tomai, e mafai ona maua tulafono tutusa i le faila README.md i le faila sa-webapp.

▍Fausia se ata atigipusa mo se talosaga Python

Afai e te vaʻai i mea o loʻo i totonu o le faila Dockerfile i le faila sa-logic, ona e le maua ai lea o se mea fou mo oe lava iina. O faʻatonuga mo le fausiaina o le ata ma le tuʻuina atu i le fale teu oloa e tatau foi ona e masani ai, ae, pei o isi a matou talosaga, e mafai ona maua i le faila. README.md i le faila sa-logic.

▍Su'esu'e talosaga fa'apipi'i

E mafai ona e fa'atuatuaina se mea e te le'i su'eina? Ou te le mafai foi. Se'i o tatou su'e a tatou koneteina.

  1. Tatou fa'alauiloa le koneteina o talosaga sa-logic ma configure e faalogo i luga o le taulaga 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. Tatou fa'alauiloa le koneteina o talosaga sa-webapp ma configure e faalogo i luga o le taulaga 8080. E le gata i lea, matou te manaʻomia le faʻatulagaina o le taulaga lea o le a faʻalogo ai le Python application mo talosaga mai le Java application e ala i le toe faʻatulagaina o le fesuiaiga o le siosiomaga. 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

Ina ia aʻoaʻo pe faʻafefea ona suʻe le tuatusi IP o se pusa Docker poʻo masini masini, faʻasino ile faila FAITAU.

Tatou fa'alauiloa le koneteina o talosaga sa-frontend:

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

O lea ua sauni mea uma e alu i le tuatusi i le browser localhost:80 ma taumafai le talosaga.

Faamolemole ia matau afai e te suia le uafu mo sa-webapp, pe afai o loʻo e faʻaogaina se Docker virtual machine, e tatau ona e faʻasaʻo le faila App.js mai le faila sa-frontende ala i le suia o le tuatusi IP poʻo le numera o le taulaga i le auala analyzeSentence(), sui i fa'amatalaga o lo'o iai nei nai lo fa'amaumauga tuai. A maeʻa lenei, e tatau ona e toe faʻapipiʻi le ata ma faʻaaoga.

E fa'apei nei la matou ata fa'aoga.

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers
Microservices e tamomoe i pusa

Aotelega: aisea tatou te manaʻomia ai se kulupu Kubernetes?

Faatoa matou suʻesuʻeina faila Dockerfile, talanoa e uiga i le auala e fausia ai ata ma tulei i latou i se faleoloa Docker. E le gata i lea, na matou aʻoaʻoina pe faʻafefea ona faʻavave le faʻapipiʻiina o ata e faʻaaoga ai le faila .dockerignore. O le iʻuga, o loʻo tamomoe nei a matou microservices i pusa Docker. O iinei e mafai ona i ai sau fesili faʻamaonia atoatoa pe aisea matou te manaʻomia ai Kubernetes. O le vaega lona lua o lenei mea o le a tuuto atu i le taliina o lenei fesili. I le taimi nei, mafaufau i le fesili lenei:
Se'i tatou fa'apea o la tatou 'upega tafa'ilagi mo su'esu'ega o tusitusiga ua lauiloa i le lalolagi atoa. E faitau miliona talosaga e oo mai ia te ia i minute uma. O lona uiga o microservices sa-webapp и sa-logic o le a i lalo o se avega tele. E fa'afefea ona fua koneteina o lo'o fa'aogaina microservices?

Kubernetes Tutorial Vaega 1: Talosaga, Microservices, ma Containers

puna: www.habr.com

Faaopoopo i ai se faamatalaga