Hakemuksen valmistelu Istiolle

Hakemuksen valmistelu Istiolle

Istio on kätevä työkalu hajautettujen sovellusten yhdistämiseen, turvaamiseen ja valvontaan. Istio käyttää erilaisia ​​tekniikoita ohjelmistojen ajamiseen ja hallintaan mittakaavassa, mukaan lukien kontit sovelluskoodin ja riippuvuuksien pakkaamiseen käyttöönottoa varten ja Kubernetes näiden säiliöiden hallintaan. Siksi, jotta voit työskennellä Istion kanssa, sinun on tiedettävä, kuinka näihin teknologioihin perustuva sovellus, jossa on useita palveluita, toimii без Istio. Jos nämä työkalut ja käsitteet ovat sinulle jo tuttuja, ohita tämä opetusohjelma ja siirry suoraan osioon Istion asentaminen Google Kubernetes Engineen (GKE) tai laajennuksen asentaminen Istio GKE:ssä.

Tämä on vaiheittainen opas, jossa käymme läpi koko prosessin lähdekoodista GKE-säilöön, jotta saat perusymmärrystä näistä teknologioista esimerkin avulla. Näet myös, kuinka Istio hyödyntää näiden teknologioiden tehoa. Tämä olettaa, että et tiedä mitään konteista, Kubernetesistä, palveluverkoista tai Istiosta.

tehtävät

Tässä opetusohjelmassa suoritat seuraavat tehtävät:

  1. Yksinkertaisen hello world -sovelluksen oppiminen useilla palveluilla.
  2. Suorita sovellus lähdekoodista.
  3. Sovelluksen pakkaaminen säiliöihin.
  4. Kubernetes-klusterin luominen.
  5. Konttien käyttöönotto klusteriksi.

Ennen aloittamista

Ota Kubernetes Engine API käyttöön seuraamalla ohjeita:

  1. Siirry Kubernetes Engine -sivu Google Cloud Platform -konsolissa.
  2. Luo tai valitse projekti.
  3. Odota, kunnes API ja siihen liittyvät palvelut otetaan käyttöön. Tämä saattaa kestää muutaman minuutin.
  4. Varmista, että Google Cloud Platform -projektisi laskutus on määritetty. Opi ottamaan laskutus käyttöön.

Tässä opetusohjelmassa voit käyttää Cloud Shelliä, joka valmistelee virtuaalikoneen g1-small Google Compute Enginessä Debian-pohjaisella Linuxilla tai Linux- tai macOS-tietokoneella.

Vaihtoehto A: Cloud Shellin käyttäminen

Cloud Shellin käytön edut:

  • Python 2- ja Python 3 -kehitysympäristöt (mukaan lukien virtualenv) on täysin määritetty.
  • Komentorivityökalut gpilvi, satamatyöläinen, mennä и kubectl, joita käytämme, on jo asennettu.
  • Valittavanasi on useita tekstieditorit:
    1. Koodieditori, joka avautuu muokkauskuvakkeella Cloud Shell -ikkunan yläosassa.
    2. Emacs, Vim tai Nano, jotka avautuvat Cloud Shellin komentoriviltä.

Käyttää Pilvikuori:

  1. Siirry GCP-konsoliin.
  2. lehdistö Aktivoi Cloud Shell (Aktivoi Cloud Shell) GCP-konsoliikkunan yläosassa.

Hakemuksen valmistelu Istiolle

Alaosassa GCP-konsoli Cloud Shell -istunto komentorivin kanssa avautuu uuteen ikkunaan.

Hakemuksen valmistelu Istiolle

Vaihtoehto B: Käytä komentorivityökaluja paikallisesti

Jos työskentelet Linux- tai macOS-tietokoneella, sinun on määritettävä ja asennettava seuraavat komponentit:

  1. Mukauta Python 3 ja Python 2 kehitysympäristö.

  2. Asenna Cloud SDK komentorivityökalulla gpilvi.

  3. Asettaa kubectl - komentorivityökalu työskentelyyn Kubernetes.

    gcloud components install kubectl

  4. Asettaa Docker Community Edition (CE). Käytät komentorivityökalua satamatyöläinenluodaksesi konttikuvia esimerkkisovellukselle.

  5. Asenna työkalu Git versionhallintasaadaksesi mallisovelluksen GitHubista.

Lataa mallikoodi

  1. Lataa lähdekoodi helloserver:

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

  2. Siirry esimerkkikoodihakemistoon:

    cd istio-samples/sample-apps/helloserver

Useita palveluita sisältävän sovelluksen tutkiminen

Esimerkkisovellus on kirjoitettu Pythonilla ja koostuu kahdesta osasta, jotka ovat vuorovaikutuksessa keskenään REST:

  • palvelin: yksinkertainen palvelin yhdellä päätepisteellä SAADA, /, joka tulostaa konsoliin "hello world".
  • loadgen: komentosarja, joka lähettää liikennettä palvelin, jossa on konfiguroitava määrä pyyntöjä sekunnissa.

Hakemuksen valmistelu Istiolle

Sovelluksen suorittaminen lähdekoodista

Tutustu esimerkkisovellukseen suorittamalla se Cloud Shellissä tai tietokoneellasi.
1) Luettelossa istio-samples/sample-apps/helloserver juosta palvelin:

python3 server/server.py

Käynnistyksen yhteydessä palvelin seuraava näytetään:

INFO:root:Starting server...

2) Avaa toinen pääteikkuna lähettääksesi pyynnöt palvelin. Jos käytät Cloud Shelliä, avaa toinen istunto napsauttamalla lisäyskuvaketta.
3) Lähetä pyyntö osoitteeseen palvelin:

curl http://localhost:8080

palvelin vastaa:

Hello World!

4) Siirry hakemistosta, josta latasit mallikoodin, hakemistoon, joka sisältää loadgen:

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

5) Luo seuraavat ympäristömuuttujat:

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

6) Juokse virtualenv:

virtualenv --python python3 env

7) Aktivoi virtuaaliympäristö:

source env/bin/activate

8) Aseta vaatimukset loadgen:

pip3 install -r requirements.txt

9) Juokse loadgen:

python3 loadgen.py

Käynnistyksen yhteydessä loadgen näyttää seuraavanlaisen viestin:

Starting loadgen: 2019-05-20 10:44:12.448415
5 request(s) complete to http://localhost:8080

Toisessa pääteikkunassa palvelin lähettää seuraavat viestit konsoliin:

127.0.0.1 - - [21/Jun/2019 14:22:01] "GET / HTTP/1.1" 200 -
INFO:root:GET request,
Path: /
Headers:
Host: localhost:8080
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*

Verkkonäkökulmasta katsottuna koko sovellus toimii yhdellä isännällä (paikallinen tietokone tai Cloud Shell -virtuaalikone). Siksi voit käyttää localhostpyyntöjen lähettämiseen palvelin.
10) lopettaa loadgen и palvelin, tulla sisään Ctrl-c jokaisessa pääteikkunassa.
11) Pääteikkunassa loadgen deaktivoi virtuaaliympäristö:

deactivate

Sovelluksen pakkaaminen säiliöihin

Jotta voit ajaa sovelluksen GKE:ssä, sinun on pakattava esimerkkisovellus − palvelin и loadgen - klo Kontit. Säiliö on tapa pakata sovellus eristämään se ympäristöstään.

Jos haluat pakata sovelluksen säiliöön, tarvitset Dockerfile. Dockerfile on tekstitiedosto, joka määrittelee komennot sovelluksen lähdekoodin ja sen riippuvuuksien rakentamiseksi Docker-kuva. Kun kuva on rakennettu, lataa se säilörekisteriin, kuten Docker Hubiin tai Konttirekisteri.

Esimerkki on jo Dockerfile varten palvelin и loadgen kaikki tarvittavat komennot kuvien keräämiseen. Alla - Dockerfile varten palvelin:

FROM python:3-slim as base
FROM base as builder
RUN apt-get -qq update 
    && apt-get install -y --no-install-recommends 
        g++ 
    && rm -rf /var/lib/apt/lists/*

# Enable unbuffered logging
FROM base as final
ENV PYTHONUNBUFFERED=1

RUN apt-get -qq update 
    && 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/

# Add the application
COPY . .

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

  • Joukkue FROM python: 3-slim pohjana käskee Dockeria käyttämään uusinta Python 3 kuva pohjana.
  • Joukkue KOPIO. . kopioi lähdetiedostot nykyiseen työhakemistoon (vain tässä tapauksessa server.py) säilön tiedostojärjestelmään.
  • SISÄÄNTULOPISTE määrittää komennon, jota käytetään säilön käynnistämiseen. Meidän tapauksessamme tämä komento on melkein sama kuin se, jota käytit suorittamassa server.py lähdekoodista.
  • Joukkue ALTISTUMINEN osoittaa sen palvelin odottaa tietoja portin kautta 8080. Tämä joukkue ei ole tarjoaa portteja. Tämä on jonkinlainen dokumentaatio, jota tarvitaan portin avaamiseen 8080 säiliötä käynnistettäessä.

Valmistaudutaan hakemuksesi säilytykseen

1) Aseta seuraavat ympäristömuuttujat. Korvata PROJECT_ID GCP-projektitunnukseesi.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Arvojen käyttäminen PROJECT_ID и GCR_REPO merkitset Docker-kuvan luodessasi sen ja työnnät sen yksityiseen säilörekisteriin.

2) Aseta oletusarvoinen GCP-projekti komentorivityökalulle gpilvi.

gcloud config set project $PROJECT_ID

3) Aseta oletusvyöhyke komentorivityökalulle gpilvi.

gcloud config set compute/zone us-central1-b

4) Varmista, että Container Registry -palvelu on otettu käyttöön GCP-projektissa.

gcloud services enable containerregistry.googleapis.com

Konttipalvelin

  1. Siirry hakemistoon, jossa esimerkki sijaitsee palvelin:

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

  2. Kokoa kuva käyttämällä Dockerfile ja aiemmin määrittämäsi ympäristömuuttujat:

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

Parametri -t edustaa Docker-tunnistetta. Tämä on sen kuvan nimi, jota käytät säilön käyttöönotossa.

  1. Lataa kuva säilörekisteriin:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Lastin säilytys

1) Siirry hakemistoon, jossa esimerkki sijaitsee loadgen:

cd ../loadgen

2) Kerää kuva:

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

3) Lataa kuva säilörekisteriin:

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

Näytä luettelo kuvista

Tarkista arkiston kuvien luettelo ja varmista, että kuvat on ladattu:

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

Komento näyttää juuri ladattujen kuvien nimet:

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

GKE-klusterin luominen.

Näitä säilöjä voidaan käyttää Cloud Shell -virtuaalikoneessa tai tietokoneessa komennolla telakointi. Mutta tuotantoympäristössä tarvitset tavan ohjata kontit keskitetysti. Tarvitset esimerkiksi järjestelmän, joka varmistaa, että säilöt ovat aina käynnissä, ja tarvitset tavan skaalata ja kehittää lisää säilön esiintymiä, jos liikenne lisääntyy.

Voit käyttää säilöttyjä sovelluksia G.K.E.. GKE on kontin orkestrointialusta, joka kokoaa virtuaalikoneita klusteriksi. Jokaista virtuaalikonetta kutsutaan solmuksi. GKE-klusterit perustuvat avoimen lähdekoodin Kubernetes-klusterinhallintajärjestelmään. Kubernetes tarjoaa mekanismeja vuorovaikutukseen klusterin kanssa.

GKE-klusterin luominen:

1) Luo klusteri:

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

Joukkue gpilvi luo istioready-klusterin määrittämääsi GCP-projektiin ja oletusvyöhykkeeseen. Istion suorittamiseksi suosittelemme, että sinulla on vähintään 4 solmua ja virtuaalikone n1-standardi-2.

Tiimi luo klusterin muutamassa minuutissa. Kun klusteri on valmis, komento tulostaa jotain tällaista сообщение.

2) Anna käyttäjätiedot komentorivityökalussa kubectlkäyttääksesi sitä klusterin hallintaan:

gcloud container clusters get-credentials istioready

3) Nyt voit olla yhteydessä Kubernetesiin kautta kubectl. Esimerkiksi seuraava komento voi selvittää solmujen tilan:

kubectl get nodes

Komento tuottaa luettelon solmuista:

NAME                                       STATUS   ROLES    AGE    VERSION
gke-istoready-default-pool-dbeb23dc-1vg0   Ready    <none>   99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5   Ready    <none>   100s   v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s   Ready    <none>   99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw   Ready    <none>   99s    v1.13.6-gke.13

Kubernetesin keskeiset käsitteet

Kaavio näyttää sovelluksen GKE:ssä:

Hakemuksen valmistelu Istiolle

Ennen kuin otat käyttöön säilöjä GKE:ssä, opi Kubernetesin keskeiset käsitteet. Aivan lopussa on linkkejä, jos haluat oppia lisää.

  • Solmut ja klusterit. GKE:ssä solmu on virtuaalikone. Muilla Kubernetes-alustoilla solmu voi olla tietokone tai virtuaalikone. Klusteri on joukko solmuja, joita voidaan pitää yhtenä yksikkönä, jossa otat käyttöön konttisovelluksen.
  • Palot. Kubernetesissa säiliöt kulkevat paloissa. Kubernetesin Pod on jakamaton yksikkö. Podissa on yksi tai useampi säiliö. Otat käyttöön palvelinsäilöjä ja loadgen erillisissä pusseissa. Kun podissa on useita säiliöitä (esimerkiksi sovelluspalvelin ja välityspalvelin), säilöjä hallitaan yhtenä kokonaisuutena ja ne jakavat pod-resursseja.
  • Käyttöönotot. Kubernetesissa käyttöönotto on objekti, joka on kokoelma identtisiä podeja. Käyttöönotto käynnistää useita klusterin solmuille hajautettuja pod-kopioita. Käyttöönotto korvaa automaattisesti kotelot, jotka ovat epäonnistuneet tai eivät vastaa.
  • Kubernetes palvelu. Kun käytät sovelluskoodia GKE:ssä, yhteys loadgen и palvelin. Kun aloitit palvelut Cloud Shell -virtuaalikoneella tai -työpöydällä, lähetit pyynnöt osoitteeseen palvelin at localhost: 8080. Kun podit on otettu käyttöön GKE:ssä, ne suoritetaan käytettävissä olevissa solmuissa. Oletuksena et voi hallita sitä, missä solmussa pod on käynnissä, joten sinä paloja ei pysyviä IP-osoitteita.
    IP-osoitteen hankkimiseksi palvelin, sinun on määritettävä verkkoabstraktio podien päälle. Sitä se on Kubernetes palvelu. Kubernetes-palvelu tarjoaa pysyvän päätepisteen pod-joukolle. Niitä on muutama palvelutyyppejä. palvelin käyttää LoadBalancer, joka tarjoaa ulkoisen IP-osoitteen yhteydenottoa varten palvelin klusterin ulkopuolelta.
    Kubernetesissa on myös sisäänrakennettu DNS-järjestelmä, joka määrittää DNS-nimiä (esim. helloserver.default.cluster.local) palvelut. Tämän ansiosta klusterin podit kommunikoivat muiden klusterin podien kanssa pysyvässä osoitteessa. DNS-nimeä ei voi käyttää klusterin ulkopuolella, kuten Cloud Shellissä tai tietokoneessa.

Kubernetes ilmenee

Kun suoritit sovelluksen lähteestä, käytit pakollista komentoa python3

server.py

Imperatiivi tarkoittaa verbiä: "tee tämä".

Kubernetes käyttää deklaratiivinen malli. Tämä tarkoittaa, että emme kerro Kubernetesille tarkalleen mitä tehdä, vaan kuvaamme haluttua tilaa. Esimerkiksi Kubernetes käynnistää ja pysäyttää podeja tarpeen mukaan pitääkseen järjestelmän todellisen tilan halutun tilan mukaisena.

Ilmoitat halutun tilan luetteloissa tai tiedostoissa YAML. YAML-tiedosto sisältää määritykset yhdelle tai useammalle Kubernetes-objektille.

Esimerkki sisältää YAML-tiedoston for palvelin и loadgen. Jokainen YAML-tiedosto määrittää käyttöönottoobjektin ja Kubernetes-palvelun halutun tilan.

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

  • laji osoittaa kohteen tyypin.
  • metadata.name määrittää käyttöönoton nimen.
  • Ensimmäinen kenttä tekniset tiedot sisältää kuvauksen halutusta tilasta.
  • spec.replicas ilmaisee halutun palojen määrän.
  • jakso spec.template määrittää pod-mallin. Podissa on kenttä kuva, joka määrittää sen kuvan nimen, joka on purettava säilörekisteristä.

Palvelu määritellään seuraavasti:

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

  • LoadBalancer: Asiakkaat lähettävät pyyntöjä kuormituksen tasaajan IP-osoitteeseen, jolla on pysyvä IP-osoite ja johon pääsee käsiksi klusterin ulkopuolelta.
  • kohdeportti: kuten muistat, joukkue VALOTUS 8080 в Dockerfile ei tarjonnut portteja. Annat portin 8080jotta voit ottaa yhteyttä konttiin palvelin klusterin ulkopuolella. Meidän tapauksessamme hellosvc.default.cluster.local:80 (lyhyt nimi: hellosvc) vastaa porttia 8080 Pod IP-osoitteet helloserver.
  • portti: Tämä on portin numero, johon muut klusterin palvelut lähettävät pyyntöjä.

loadgen.yaml

Käyttöönoton kohde loadgen.yaml näyttää joltakin server.yaml. Erona on, että käyttöönottoobjekti sisältää osan env. Se määrittelee tarvittavat ympäristömuuttujat loadgen ja jonka asensit, kun suoritit sovelluksen lähteestä.

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

aika loadgen ei ota vastaan ​​saapuvia pyyntöjä kentälle tyyppi tuntematon KlusteriIP. Tämä tyyppi tarjoaa pysyvän IP-osoitteen, jota klusterin palvelut voivat käyttää, mutta tämä IP-osoite ei ole alttiina ulkoisille asiakkaille.

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

Konttien käyttöönotto GKE:ssä

1) Siirry hakemistoon, jossa esimerkki sijaitsee palvelin:

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

2) Avaa server.yaml tekstieditorissa.
3) Vaihda nimi kenttään kuva Docker-kuvasi nimeen.

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

Korvata PROJECT_ID GCP-projektitunnukseesi.
4) Tallenna ja sulje server.yaml.
5) Ota YAML-tiedosto käyttöön Kubernetesissa:

kubectl apply -f server.yaml

Onnistuneen suorittamisen jälkeen komento tuottaa seuraavan koodin:

deployment.apps/helloserver created
service/hellosvc created

6) Mene hakemistoon, jossa loadgen:

cd ../loadgen

7) Avaa loadgen.yaml tekstieditorissa.
8) Vaihda nimi kenttään kuva Docker-kuvasi nimeen.

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

Korvata PROJECT_ID GCP-projektitunnukseesi.
9) Tallenna ja sulje loadgen.yaml, sulje tekstieditori.
10) Ota YAML-tiedosto käyttöön Kubernetesissa:

kubectl apply -f loadgen.yaml

Onnistuneen suorittamisen jälkeen komento tuottaa seuraavan koodin:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Tarkista koteloiden tila:

kubectl get pods

Komento näyttää tilan:

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

12) Pura sovelluslokit podista loadgen. Korvata POD_ID edellisen vastauksen tunnisteeseen.

kubectl logs loadgenerator-POD_ID

13) Hanki ulkoiset IP-osoitteet hellosvc:

kubectl get service

Komentovastaus näyttää suunnilleen tältä:

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      <none>          443/TCP        93m
loadgensvc   ClusterIP      10.81.15.155   <none>          80/TCP         4m52s

14) Lähetä pyyntö osoitteeseen hellosvc: vaihda EXTERNAL_IP ulkoiseen IP-osoitteeseen hellosvc.

curl http://EXTERNAL_IP

Otetaan Istio

Sinulla on jo sovellus otettu käyttöön GKE:ssä. loadgen voi käyttää Kubernetes DNS (hellosvc:80) lähettää pyyntöjä palvelinja voit lähettää pyyntöjä osoitteeseen palvelin ulkoisen IP-osoitteen perusteella. Vaikka Kubernetesilla on monia ominaisuuksia, palveluista puuttuu joitain tietoja:

  • Miten palvelut toimivat vuorovaikutuksessa? Mitkä ovat palveluiden väliset suhteet? Miten liikenne sujuu palveluiden välillä? Oletko tietoinen siitä loadgen lähettää pyyntöjä osoitteeseen palvelin, mutta kuvittele, että et tiedä sovelluksesta mitään. Näihin kysymyksiin vastaamiseksi katsotaanpa GKE:n juoksevien podien luetteloa.
  • Mittarit. Kuinka kauan palvelin vastaa saapuvaan pyyntöön? Kuinka monta pyyntöä sekunnissa palvelin vastaanottaa? Antaako se virheilmoituksia?
  • Turvallisuustiedot. Liikenne välillä loadgen и palvelin menee vain läpi HTTP tai mukaan mTLS?

Istio vastaa kaikkiin näihin kysymyksiin. Tätä varten Istio asettaa sivuvaunun välityspalvelimen Lähettiläs jokaisessa kotelossa. Envoy-välityspalvelin sieppaa kaiken saapuvan ja lähtevän liikenteen sovellussäiliöihin. Se tarkoittaa sitä palvelin и loadgen vastaanottaa sivuvaunun välityspalvelimen kautta Envoy, ja kaikki liikenne lähteestä loadgen к palvelin menee Envoy-välityspalvelimen kautta.

Envoy-välityspalvelinten väliset yhteydet muodostavat palveluverkon. Palveluverkkoarkkitehtuuri tarjoaa hallintakerroksen Kubernetesin päälle.

Hakemuksen valmistelu Istiolle

Koska Envoy-välityspalvelimet toimivat omissa säilöissään, Istio voidaan asentaa GKE-klusterin päälle lähes ilman muutoksia sovelluskoodiin. Mutta olet tehnyt jonkin verran työtä saadaksesi sovelluksesi valmiiksi Istion hallinnoitavaksi:

  • Palvelut kaikille konteille. Käyttöönottoihin palvelin и loadgen sidottu Kubernetes-palveluun. Jopa loadgen, joka ei vastaanota saapuvia pyyntöjä, on palvelu.
  • Palveluiden porteilla on oltava nimet. Vaikka palveluportit voidaan jättää nimeämättä GKE:ssä, Istio vaatii sinua määrittämään portin nimi protokollansa mukaisesti. YAML-tiedostossa portti palvelin kutsutaan httpkoska palvelin käyttää protokollaa HTTP... Jos palvelu käytetty gRPC, nimeät sataman grpc.
  • Käyttöönotot on merkitty. Siksi voit käyttää Istion liikenteenhallintaominaisuuksia, kuten liikenteen jakamista saman palvelun versioiden välillä.

Asennus

Istio voidaan asentaa kahdella tavalla. Voi ota Istio käyttöön GKE-laajennuksessa tai asenna Istion avoimen lähdekoodin versio klusterissa. GKE:n Istion avulla voit helposti hallita Istion asennuksia ja päivityksiä koko GKE-klusterin elinkaaren ajan. Jos haluat Istion uusimman version tai enemmän hallita Istio-ohjauspaneeliasi, asenna avoimen lähdekoodin versio Istio on GKE -laajennuksen sijaan. Päättääksesi lähestymistavasta, lue artikkeli Tarvitsenko Istiota GKE:ssä?.

Valitse vaihtoehto, lue sopiva opas ja asenna Istio klusteriisi ohjeiden mukaan. Jos haluat käyttää Istioa juuri käyttöön otetun sovelluksesi kanssa, mahdollistaa sivuvaunujen toteutuksen nimiavaruutta varten oletusarvo.

puhdistus

Jotta sinua ei veloitettaisi Google Cloud Platform -tililtäsi tässä opetusohjelmassa käyttämistäsi resursseista, poista säilöklusteri, kun olet asentanut Istion ja pelannut esimerkkisovelluksella. Tämä poistaa kaikki klusterin resurssit, kuten laskentaesiintymät, levyt ja verkkoresurssit.

Mitä seuraavaksi?

Lähde: will.com

Lisää kommentti