Rakenduse ettevalmistamine Istio jaoks

Rakenduse ettevalmistamine Istio jaoks

Istio — mugav tööriist hajutatud rakenduste ĂŒhendamiseks, kaitsmiseks ja jĂ€lgimiseks. Istios kasutatakse erinevaid tehnoloogiaid, et skaleerida ja hallata tarkvara, sealhulgas konteinerid rakenduskoodi ja sĂ”ltuvuste pakkimiseks ning Kubernetes nende konteinerite haldamiseks. SeetĂ”ttu peate Istio kasutamiseks teadma, kuidas mitme teenusega rakendus nende tehnoloogiate pĂ”hjal töötab. ilma Istio. Kui need tööriistad ja mĂ”isted on teile juba tuttavad, vĂ”ite selle juhendi julgelt vahele jĂ€tta ja minna otse jaotisse. Istio installimine Google Kubernetes Engine'is (GKE) vĂ”i laienduse installimine Istio GKE-l.

See on samm-sammult juhend, kus kĂ€sitleme kogu protsessi lĂ€htekoodist kuni konteinerini GKE-s, et saaksite nende tehnoloogiate ĂŒldise arusaama nĂ€ite pĂ”hjal. NĂ€ete ka, kuidas Istio nende tehnoloogiate vĂ”imalusi Ă€ra kasutab. Eeldatakse, et te ei tea konteineritest, Kubernetesest, teenuseteemast ega Istio'st midagi.

Ülesanded

Selles juhendis tĂ€idate jĂ€rgmised ĂŒlesanded:

  1. Lihtsa hello world rakenduse uurimine, millel on mitu teenust.
  2. Rakenduse kÀivitamine lÀhtekoodist.
  3. Rakenduse pakkimine konteineritesse.
  4. Kubernetesi klastrite loomine.
  5. Konteinerite juurutamine klastri.

Enne alustamist

JĂ€rgige juhiseid, et aktiveerida Kubernetes Engine API:

  1. Minge lehele Kubernetes Engine Google Cloud Platformi konsoolis.
  2. Looge vÔi valige projekt.
  3. Oodake, kuni API ja sellega seotud teenused aktiveeritakse. See vÔib vÔtta mitu minutit.
  4. Veenduge, et Google Cloud Platformi projekt on arveldamiseks seadistatud. Lisateabe saamiseks arveldamise aktiveerimise kohta.

Selles juhendis saate kasutada Cloud Shell'i, mis valmistab ette virtuaalmasina g1-small Google Compute Engine'is Debiani-pÔhise Linuxiga, vÔi Linuxi vÔi macOSi arvutit.

Variant A: Cloud Shell'i kasutamine

Cloud Shell'i kasutamise eelised:

  • Python 2 ja Python 3 arenduskeskkonnad (sealhulgas virtualenv) on tĂ€ielikult seadistatud.
  • KĂ€skude tööriistad gcloud, docker, git ja kubectl, mida me kasutame, on juba installitud.
  • Teil on valik mitmeid teksti redaktoreid:
    1. Koodiredaktor, mis avatakse Cloud Shell'i akna ĂŒlaosas redigeerimise ikooni klĂ”psates.
    2. Emacs, Vim vÔi Nano, mis avatakse Cloud Shell'i kÀsurealt.

Cloud Shell'i kasutamiseks Minge GCP konsooli.:

  1. Aktiveerige Cloud Shell
  2. „Uuesti vĂ€ljaandmine“ Aktiveeri Cloud Shell (Aktiveeri Cloud Shell) GCP konsooli akna ĂŒlaosas.

Rakenduse ettevalmistamine Istio jaoks

Akna alumises osas GCP konsool avaneb uues aknas Cloud Shell koos kÀsureaga.

Rakenduse ettevalmistamine Istio jaoks

Valik B: kasutada kÀsurea tööriistu kohalikult

Kui töötate Linuxi vÔi macOS arvutis, peate seadistama ja installima jÀrgmised komponendid:

  1. Seadistage Python 3 ja Python 2 arenduskeskkond.

  2. Installige Cloud SDK koos kÀsurea tööriistaga gcloud.

  3. Installige kubectl — kĂ€surea tööriist GCP-ga töötamiseks Kubernetes.

    gcloud components install kubectl

  4. Installige Docker Community Edition (CE). Te kasutate kÀsurea tööriista docker, et luua konteineripilte nÀidisrakenduse jaoks.

  5. Installige versioonikontrolli tööriist Git, et saada nÀidisrakendus GitHubist.

Koodi nÀidislaadimine

  1. Laadi alla lÀhtekood helloserver:

    git clone https://github.com/GoogleCloudPlatform/istio-samples

  2. Liikuge nÀidisrakenduse katalooge:

    cd istio-samples/sample-apps/helloserver

Mitme teenusega rakenduse uurimine

NĂ€idisrakendus on kirjutatud Pythonis ja koosneb kahest komponendist, mis suhtlevad REST:

  • server: lihtne server ĂŒhe lĂ”pp-punktiga GET, /, mis trĂŒkib „hello world” konsooli.
  • loadgen: skript, mis suunab liiklust server, kohandatava pĂ€ringute arvu sekundis.

Rakenduse ettevalmistamine Istio jaoks

Rakenduse kÀivitamine lÀhtekoodist

Rakenduse nÀidiseks kÀitamiseks avage see Cloud Shellis vÔi oma arvutis.
1) Kataloogis istio-samples/sample-apps/helloserver kÀivitage server:

python3 server/server.py

KÀivitamisel kuvatakse jÀrgmine: server INFO:root:Serveri kÀivitamine...

2) Avage teine terminaliakna, et saata pÀringud

. Kui kasutate Cloud Shelli, klÔpsake lisaikoonil, et avada teine sessioon. server3) Saatke pÀring
curl http://localhost:8080 server:

server vastab:

4) Kataloogist, kuhu olete koode laadinud, minge katalooge, mis sisaldab

Hello World!

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen loadgen:

5) Looge jÀrgmised keskkonnamuutujad:

export SERVER_ADDR=http://localhost:8080 export REQUESTS_PER_SECOND=5

6) KĂ€ivitage

virtualenv --python python3 env virtualenv:

7) Aktiveerige virtuaalne keskkond:

source env/bin/activate

8) Installige nÔudmised

pip3 install -r requirements.txt loadgen:

9) KĂ€ivitage

python3 loadgen.py loadgen:

kuvatakse ligikaudu jÀrgmine teade:

KÀivitamisel kuvatakse jÀrgmine: loadgen KÀivitamine loadgen: 2019-05-20 10:44:12.448415 5 pÀringut on lÔpetatud aadressile http://localhost:8080

Teises terminaliaknas

kuvatakse ligikaudu jÀrgmised teated: server 127.0.0.1 - - [21/Jun/2019 14:22:01] "GET / HTTP/1.1" 200 - INFO:root:GET pÀring, Path: / Headers: Host: localhost:8080 User-Agent: python-requests/2.22.0 Accept-Encoding: gzip, deflate Accept: */*

127.0.0.1 - - [21/Juun/2019 14:22:01] "GET / HTTP/1.1" 200 -
INFO:root:GET pÀring,
Teekond: /
PĂ€id:
Host: localhost:8080
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*

VĂ”rgu seisukohalt töötab kogu rakendus ĂŒhel hostil (kohalikus arvutis vĂ”i virtuaalses Cloud Shell'is). SeetĂ”ttu saab kasutada localhost, et saata pĂ€ringuid server.
10) Rakenduse peatamiseks loadgen ja server, sisestage Ctrl-c iga terminaliaknas.
11) Terminaliaknas loadgen deaktiveerige virtuaalne keskkond:

deactivate

Rakenduse konteineritesse pakendamine

Et rakendust GKE-s kĂ€ivitada, tuleb nĂ€idisrakendus pakendada — server ja loadgen — in konteinerites. Konteiner on viis rakenduse pakendamiseks, et isoleerida see keskkonnast.

Rakenduse konteinerisse pakendamiseks on vajalik Dockerfile. Dockerfile — tekstifail, kus mÀÀratletakse kĂ€sud rakenduse lĂ€htekoodi ja selle sĂ”ltuvuste koostamiseks Docker'i pildiks. PĂ€rast koostamist laadite pildi konteineriregistrisse, nĂ€iteks Docker Hub'i vĂ”i Container Registry.

NĂ€idis sisaldab juba Dockerfile kuna server ja loadgen kĂ”iki vajalikke kĂ€ske, et pilte koostada. Allpool — Dockerfile kuna server:

VÕTA python:3-slim kui pĂ”hja
VÕTA pĂ”hjast kui ehitaja
RUN apt-get -qq uuenda 
    && apt-get install -y --no-install-recommends 
        g++ 
    && rm -rf /var/lib/apt/lists/*

# Luba jÀÀklogging
VÕTA pĂ”hjast kui lĂ”pp
ENV PYTHONUNBUFFERED=1

RUN apt-get -qq uuenda 
    && apt-get install -y --no-install-recommends 
        wget

WORKDIR /helloserver

# Grab packages from builder
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/

# Lisa rakendus
COPY . .

EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]

  • Meeskond VÕTA python:3-slim kui pĂ”hja kĂ€seb Dockeril kasutada viimast Python 3 pĂ”hjana.
  • Meeskond COPY. . kopeerib lĂ€htekoodid praegusesse töökatalooge (meie puhul ainult server.py) konteineri failisĂŒsteemi.
  • ENTRYPOINT mÀÀrab kĂ€su, mida kasutatakse konteineri kĂ€ivitamiseks. Meie puhul kattub see kĂ€sk peaaegu sellega, mida te kasutasite lĂ€htekoodist kĂ€ivitamiseks. server.py nĂ€itab, et
  • Meeskond EXPOSE ootab andmeid kaudu porti server . See kĂ€sk ei 8080pakku ports . See on midagi nagu dokumentatsioon, mis on vajalik sadama avamisekskonteineri kĂ€ivitamisel. 8080 Rakenduse konteinerimiseks ette valmistamine

1) MÀÀrake jÀrgmised keskkonnamuutujad. Asendage

1) MÀÀrake jÀrgmised keskkonnamuutujad. Asendage PROJECT_ID oma GCP projekti ID-ga.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Kasutatavate vÀÀrtustega PROJECT_ID ja GCR_REPO Dokkeri pilti mÀÀrate, kui koostate ja saadate selle privaatse konteineri registrisse.

2) MÀÀrake vaikimisi GCP projekt kÀsurea tööriistale gcloud.

gcloud config set project $PROJECT_ID

3) MÀÀrake vaikimisi tsoon kÀsurea tööriistale gcloud.

gcloud config set compute/zone us-central1-b

4) Veenduge, et konteineri registri teenus oleks GCP projektis lubatud.

gcloud services enable containerregistry.googleapis.com

Serveri konteinerimine

  1. Liikuge katalooge, kus nÀidis asub server:

    cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

  2. Koostage pilt jÀrgmise abil Dockerfile ja keskkonnamuutujatega, mille mÀÀrasite varem:

    docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .

Parameeter -t tÀhistab Dokkeri sildi. See on pildi nimi, mida kasutate konteineri juurutamisel.

  1. Saatke pilt konteineri registrisse:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Konteinerimise laadimisgenereerija

1) Liikuge katalooge, kus nÀidis asub loadgen:

cd ../loadgen

2) Koostage pilt:

docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .

3) Saatke pilt konteineri registrisse:

docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1

Piltide nimekirja vaatamine

Vaadake pilte registris ja veenduge, et pildid on saadetud:

gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio

KÀsk annab vÀlja just saadetud piltide nimed:

NIMI
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen

GKE klastri loomine.

Need konteinerid oleks saanud kĂ€ivitada Cloud Shelli virtuaalmasinas vĂ”i arvutis kĂ€suga docker run. Kuid tootmis keskkonnas on vajalik viis konteinerite keskse orkestreerimise vĂ”imaldamiseks. NĂ€iteks on vajalik sĂŒsteem, mis jĂ€lgib, et konteinerid töötaksid alati, ja on vaja vĂ”imalust suurendada mahutavust ning kĂ€ivitada tĂ€iendavad konteinerite eksemplarid, kui liiklus suureneb.

Konteinerirakenduste kĂ€ivitamiseks saab kasutada GKE. GKE on konteinerite orkestreerimisplatvorm, mis ĂŒhendab virtuaalsed masinad klastriks. Iga virtuaalne masin nimetatakse sĂ”lmeks. GKE klastrid pĂ”hinevad avatud lĂ€htekoodiga Kubernetes klastrihalduse sĂŒsteemil. Kubernetes pakub mehhanisme, kuidas suhelda klastriga.

GKE klastri loomine:

1) Klastri loomine:

gcloud container clusters create istioready 
  --cluster-version latest 
  --machine-type=n1-standard-2 
  --num-nodes 4

Meeskond gcloud loob istioready klastri GCP projektis ja vaikimisi tsoonis, mille te mÀÀrate. Soovitame vÀhemalt 4 sÔlme ja virtuaalmasinat Istio kÀivitamiseks. n1-standard-2.

Meeskond loob klastrit vaid mÔne minutiga. Kui klaster on valmis, annab meeskond sarnase tulemuse. teate.

2) Sisestage andmed kÀsurea tööriista. kubectl, et hallata klastrit:

gcloud container clusters get-credentials istioready

3) NĂŒĂŒd saab Kubernetesega suhelda kubectl. NĂ€iteks jĂ€rgmise kĂ€su abil saab teada sĂ”lmede staatuse:

kubectl get nodes

KÀsk vÀljastab nimekirja sÔlmedest:

NIMI                                    STAAKUS  ROLLID    VANUS    VERSIOON
gke-istoready-default-pool-dbeb23dc-1vg0   Valmis    <none>   99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5   Valmis    <none>   100s   v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s   Valmis    <none>   99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw   Valmis    <none>   99s    v1.13.6-gke.13

Kubernetesi pÔhikontseptsioonid

Skeemil on kujutatud rakendust GKE-s:

Rakenduse ettevalmistamine Istio jaoks

Enne konteinerite juurutamist GKE-s tutvuge Kubernetesi pÔhikontseptsioonidega. LÔpus on lingid, kui soovite rohkem teada.

  • SĂ”lmed ja klastrid. GKE-s on sĂ”lm virtuaalne masin. Teistel Kubernetes platvormidel vĂ”ib sĂ”lm olla arvuti vĂ”i virtuaalne masin. Klaster on sĂ”lmede kogum, mida saab pidada ĂŒhtseks ja kuhu te juurutate konteineriseeritud rakenduse.
  • Pod'id. Kubernetesis kĂ€ivitatakse konteinerid pod'ides. Pod Kubernetesis on jagamatu ĂŒksus. Pod sisaldab ĂŒhte vĂ”i mitut konteinerit. Te kĂ€ivitate konteinerid server ja loadgen erinevates pod'ides. Kui pod'is on mitu konteinerit (nĂ€iteks rakenduse server ja proksi), siis konteinerid haldatakse kui ĂŒhtne objekti ja jagavad pod'i ressursse.
  • Juhtimised. Kubernetesis on juhtimine objekt, mis esindab identsete pod'ide kogumit. Juhtimine kĂ€ivitab mitu pod'i koopiat, mis on jaotatud klastrite sĂ”lmedele. Juhtimine asendab automaatselt pod'id, mis on ebaĂ”nnestunud vĂ”i ei reageeri.
  • Kubernetes Service. Kui te kĂ€ivitate rakenduse koodi GKE's, muutub ĂŒhendus loadgen ja server. Kui kĂ€ivitasite teenuseid virtuaalses Cloud Shelli masina vĂ”i arvuti peal, saatsite pĂ€ringud server aadressile localhost:8080. PĂ€rast GKE'sse juurutamist kĂ€ivitatakse pod'id saadaval olevates sĂ”lmedes. Vaikimisi ei saa te juhtida, millisel sĂ”lmel pod on kĂ€ivitatud, seega ei pod'id oma IP-aadresse.
    IP-aadressi saamiseks server, tuleb mÀÀratleda vĂ”rgustiku abstraktsioon pod'ide kohal. See on Kubernetes Service. Kubernetesi teenus pakub pĂŒsivat lĂ”pp-punkti pod’ide rĂŒhmale. On mitmeid teenuse tĂŒĂŒpe. server kasutab LoadBalancer, mis pakuvad vĂ€lisest IP-aadressi, et suhelda server klastri vĂ€ljapoolt.
    Kubernetes sisaldab ka sisseehitatud DNS-sĂŒsteemi, mis mÀÀrab DNS-nimesid (nĂ€iteks helloserver.default.cluster.local), teenustele. TĂ€nu sellele saavad pod’id klastri sees suhelda teiste pod’idega pĂŒsiva aadressi kaudu. DNS-nime ei saa kasutada klastri vĂ€lised, nĂ€iteks Cloud Shellis vĂ”i arvutis.

Kubernetesi manifestid

Kui sa kÀ skite rakenduse lÀhtekoodist, kasutasite imperatiivset kÀsku python3

server.py

Imperatiivsuse mĂ”isted tĂ€hendavad tegusĂ”na: „tee seda“.

Kubernetes kasutab deklaratiivset mudelit. See tĂ€hendab, et me ei ĂŒtle Kubernetesile, mida tĂ€pselt teha, vaid kirjeldame soovitud olekut. NĂ€iteks kĂ€ivitab ja peatab Kubernetes pod’e vastavalt vajadusele tagamaks, et sĂŒsteemi tegelik olek vastaks soovitule.

Soovitud olekut mÀÀrate te manfestides, vĂ”i failides YAML. YAML-fail sisaldab spetsifikatsioone ĂŒhe vĂ”i mitme Kubernetes’i objekti kohta.

NÀites on YAML-fail server ja loadgen. Iga YAML fail mÀÀrab Kubernetes'i objekti ja teenuse soovitud oleku.

server.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloserver
spec:
  selector:
    matchLabels:
      app: helloserver
  replicas: 1
  template:
    metadata:
      labels:
        app: helloserver
    spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: main
        image: gcr.io/google-samples/istio/helloserver:v0.0.1
        imagePullPolicy: Always

  • kind mÀÀrab objekti tĂŒĂŒbi.
  • metadata.name mÀÀrab juurutamise nime.
  • Esimene vĂ€li spec sisaldab soovitud oleku kirjeldust.
  • spec.replicas mÀÀrab soovitud pod'ide arvu.
  • Jaotis spec.template mÀÀratleb pod'i ŃˆĐ°Đ±Đ»ĐŸĐœ. Pod'i spetsifikatsioonis on vĂ€li pilt, kus mÀÀratakse pildi nimi, mida tuleb konteineriregistrist saada.

Teenust mÀÀratletakse jÀrgmiselt:

apiVersion: v1
kind: Service
metadata:
  name: hellosvc
spec:
  type: LoadBalancer
  selector:
    app: helloserver
  ports:
  - name: http
    port: 80
    targetPort: 8080

  • LoadBalancer: kliendid saadavad pĂ€ringud koormuse tasakaalustaja IP-aadressile, millel on pĂŒsiv IP-aadress ja mis on kergesti kĂ€ttesaadav klastri vĂ€ljast.
  • targetPort: nagu mĂ€letate, kĂ€sk EXPOSE 8080 ĂŒhes Dockerfile ei mÀÀranud porte. Te mÀÀrate pordi 8080, et oleks vĂ”imalik suhelda konteineriga server klastri vĂ€ljast. Meie puhul hellosvc.default.cluster.local:80 (lĂŒhipealkiri: hellosvc) vastab pordile 8080 podi IP-aadressid helloserver.
  • port: see on porti number, kuhu teised teenused klastris saadavad pĂ€ringud.

loadgen.yaml

Juhtimise objekt loadgen.yaml on sarnane server.yaml. Erinevus seisneb selles, et juhtimise objekt sisaldab jaotist env. See mÀÀratleb keskkonnamuutujad, mis on vajalikud loadgen ja mille olete mÀÀranud rakenduse lÀhtekoodist kÀivitamisel.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: loadgenerator
spec:
  selector:
    matchLabels:
      app: loadgenerator
  replicas: 1
  template:
    metadata:
      labels:
        app: loadgenerator
    spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: main
        image: gcr.io/google-samples/istio/loadgen:v0.0.1
        imagePullPolicy: Always
        env:
        - name: SERVER_ADDR
          value: "http://hellosvc:80/"
        - name: REQUESTS_PER_SECOND
          value: "10"
        resources:
          requests:
            cpu: 300m
            memory: 256Mi
          limits:
            cpu: 500m
            memory: 512Mi

Jah loadgen ei vĂ”ta vastu sissetulevaid pĂ€ringuid, vĂ€ljale type on mĂ€rgitud ClusterIP. See tĂŒĂŒp annab pĂŒsiva IP-aadressi, mida saavad kasutada klastris olevad teenused, kuid see IP-aadress ei ole saadaval vĂ€listele klientidele.

apiVersion: v1
kind: Service
metadata:
  name: loadgensvc
spec:
  type: ClusterIP
  selector:
    app: loadgenerator
  ports:
  - name: http
    port: 80
    targetPort: 8080

Konteinerite juurutamine GKE-is

1) Liikuge katalooge, kus nÀidis asub server:

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

2) Avage server.yaml tekstiredaktorist.
3) Asendage nimi vÀljale pilt teie Docker pildi nimel.

image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1

Asenda PROJECT_ID oma GCP projekti ID-ga.
4) Salvesta ja sulge server.yaml.
5) Suvige YAML-fail Kubernetesesse:

kubectl apply -f server.yaml

PÀrast edukat tÀitmist annab kÀsk jÀrgmise koodi:

deployment.apps/helloserver created
service/hellosvc created

6) Liikuge katalooge, kus asub loadgen:

cd ../loadgen

7) Avage loadgen.yaml tekstiredaktorist.
8) Asenda nimi vÀlja pilt teie Docker pildi nimel.

image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1

Asenda PROJECT_ID oma GCP projekti ID-ga.
9) Salvesta ja sulge loadgen.yaml, sulge tekstiredaktor.
10) Suvige YAML-fail Kubernetesesse:

kubectl apply -f loadgen.yaml

PÀrast edukat tÀitmist annab kÀsk jÀrgmise koodi:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Kontrolli podide staatust:

kubectl get pods

KÀsk nÀitab staatust:

NAME                             READY   STATUS    RESTARTS   AGE
helloserver-69b9576d96-mwtcj     1/1     Running   0          58s
loadgenerator-774dbc46fb-gpbrz   1/1     Running   0          57s

12) TÔmmake rakenduse logid podist loadgen. Asenda POD_ID eelneva vastuse ID-ga.

kubectl logs loadgenerator-POD_ID

13) Saage vÀlised IP-aadressid hellosvc:

kubectl get service

KÀsku vastus nÀeb vÀlja umbes nii:

NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
hellosvc     LoadBalancer   10.81.15.158   192.0.2.1       80:31127/TCP   33m
kubernetes   ClusterIP      10.81.0.1                443/TCP        93m
loadgensvc   ClusterIP      10.81.15.155             80/TCP         4m52s

14) Saatke pÀring hellosvc: asenda EXTERNAL_IP vÀlise IP-aadressiga hellosvc.

curl http://EXTERNAL_IP

Hakkame tegelema Istio'ga

Teil on juba GKE's rakendus, mis on juurutatud. loadgen vÔib kasutada Kubernetes DNS-i (hellosvc:80), et saata pÀringuid server, ja saate suunata pÀringud server vÀlist IP-aadressi kaudu. Kuigi Kubernetesel on palju vÔimalusi, puudub teave teenuste kohta:

  • Kuidas teenused omavahel suhtlevad? Millised on teenuste vahelised suhted? Kuidas liigub liiklus teenuste vahel? Te teate, et loadgen saab pĂ€ringuid server, aga kujutage ette, et te ei tea rakendusest midagi. Nendele kĂŒsimustele vastamiseks vaatame GKE's töötavate podide nimekirja.
  • MÔÔdikud. Kui kaua server vastab sissetulevale pĂ€ringule? Kui palju pĂ€ringute sekundis jĂ”uab serverisse? Kas ta vĂ€ljastab vigu?
  • Julgeoleku andmed. Liiklus loadgen ja server liigub lihtsalt lĂ€bi HTTP vĂ”i mTLS?

IgaĂŒhele nendele kĂŒsimustele vastab Istio. Selleks paigaldab Istio sidecar-proksi Envoy iga pod'i juurde. Proksi Envoy pĂŒĂŒab kinni kogu sissetuleva ja vĂ€ljuva liikluse rakenduse konteinerites. See tĂ€hendab, et server ja loadgen saab sidecar-proksi Envoy kaudu, ja kogu liiklus loadgen kellele server möödub Envoy proksi kaudu.

Prokside vahelised ĂŒhendused moodustavad teenuste vĂ”rgu. Teenuste vĂ”rgu arhitektuur pakub kontrolleetappi Kubernetes'e kohal.

Rakenduse ettevalmistamine Istio jaoks

Kuna Envoy proksi töötavad oma konteinerites, saab Istio paigaldada GKE klastri peale, muutes rakenduskoodi pea olematult. Kuid olete teinud mÔningaid ettevalmistusi rakenduse haldamiseks Istio abil:

  • Teenused kĂ”ikide konteinerite jaoks. Juhtimisplaanidele server ja loadgen on seotud Kubernetes teenuse kaudu. I even loadgen, millele ei laeku sisendeid, on teenus.
  • Teenuste portidel peavad olema nimed. Kuigi GKE teenuste portide nimed vĂ”ivad olla nimeta, nĂ”uab Istio porti nime vastavalt oma protokollile. YAML failis on sadam server nimetatakse http, sest server kasutab protokolli HTTP. Kui teenus oleks kasutanud gRPC, oleksite sadama nimetanud grpc.
  • Paigaldi on mĂ€rgitud. Seega saate kasutada Istio liikluse haldamise funktsioone, nĂ€iteks liikluse jagamist ĂŒhe teenuse versioonide vahel.

Istio paigaldamine

Istio saab installida kahte moodi. Saate aktiveerida Istio on GKE laienduse vĂ”i paigaldada avatud lĂ€htekoodiga versiooni Istio klastris. Istio on GKE abil on lihtne hallata Istio paigaldamist ja vĂ€rskendusi GKE klassi elutsĂŒkli jooksul. Kui vajate kĂ”ige uuemat versiooni Istio’st vĂ”i rohkem kontrolli Istio juhtpaneeli konfiguratsiooni ĂŒle, installige avatud lĂ€htekoodiga versioon, mitte Istio on GKE laiendus. Õige lĂ€henemise leidmiseks lugege artiklit Kas mul on vaja Istio on GKE-d?.

Valige valik, tutvuge vastava juhendiga ja jĂ€rgige juhiseid, et installida Istio klastris. Kui soovite kasutada Istio uut loodud rakendusega, lĂŒlitage sisse sidecar'i juurutamine nimede ruumidesse default.

Kustutus

Kuna Google Cloud Platformi kontolt vÔetakse tasu kasutatud ressursside eest, kustutage konteineriklaster, kui olete Istio installinud ja nÀidiserakendusega katsetanud. Sellega eemaldatakse kÔik klassi ressursid, nÀiteks arvutusnÀidikud, kettad ja vÔrguressursid.

Mis edasi?

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster