Istiorako eskaera prestatzen

Istiorako eskaera prestatzen

Istio banatutako aplikazioak konektatzeko, ziurtatzeko eta monitorizatzeko tresna erosoa da. Istio-k hainbat teknologia erabiltzen ditu softwarea eskalan exekutatu eta kudeatzeko, edukiontziak barne aplikazio-kodea eta inplementatzeko menpekotasunak paketatzeko, eta Kubernetes edukiontzi horiek kudeatzeko. Horregatik, Istio-rekin lan egiteko teknologia hauetan oinarritutako hainbat zerbitzu dituen aplikazio batek nola funtzionatzen duen jakin behar da gabe Istio. Tresna eta kontzeptu hauek dagoeneko ezagunak bazaizkizu, lasaitu tutorial hau saltatu eta joan zuzenean atalera Istio instalatzen Google Kubernetes Engine (GKE) edo luzapen bat instalatzea Istio GKEn.

Urratsez urratseko gida bat da, non iturburu-kodetik hasi eta GKE edukiontzira arte prozesu osoa zeharkatuko dugun, adibide baten bidez teknologia hauen oinarrizko ezagutza emateko. Istio teknologia hauen indarra nola aprobetxatzen duen ere ikusiko duzu. Honek suposatzen du ez dakizula edukiontziei, Kubernetes, zerbitzu-sareei edo Istio-ri buruz.

zereginak

Tutorial honetan, zeregin hauek beteko dituzu:

  1. Hello world aplikazio sinple bat ikastea hainbat zerbitzurekin.
  2. Exekutatu aplikazioa iturburu-kodetik.
  3. Aplikazioa ontzietan ontziratzea.
  4. Kubernetes kluster bat sortzea.
  5. Edukiontziak kluster batean zabaltzea.

Hasi aurretik

Jarraitu argibideei Kubernetes Engine APIa gaitzeko:

  1. Joan Kubernetes Engine orria Google Cloud Platform kontsolan.
  2. Sortu edo hautatu proiektu bat.
  3. Itxaron APIa eta erlazionatutako zerbitzuak gaituta dauden bitartean. Baliteke minutu batzuk behar izatea.
  4. Ziurtatu Google Cloud Platform proiekturako fakturazioa konfiguratuta dagoela. Ikasi fakturazioa gaitzen.

Tutorial honetan, makina birtuala prestatzen duen Cloud Shell erabil dezakezu g1-small Google Compute Engine-n Debian oinarritutako Linux, edo Linux edo macOS ordenagailu batekin.

A aukera: Cloud Shell erabiltzea

Cloud Shell erabiltzearen abantailak:

  • Python 2 eta Python 3 garapen-inguruneak (barne birtualenv) guztiz konfiguratuta daude.
  • Komando lerroko tresnak gcloud, Docker, git ΠΈ kubectl, erabiliko ditugunak dagoeneko instalatuta daude.
  • Hainbat dituzu aukeran testu-editoreak:
    1. Kode editorea, Cloud Shell leihoaren goialdean dagoen editatzeko ikonoarekin irekitzen dena.
    2. Emacs, Vim edo Nano, Cloud Shell-en komando-lerrotik irekitzen direnak.

Erabiltzeko Cloud Shell:

  1. Joan GCP kontsolara.
  2. prentsa Aktibatu Cloud Shell (Aktibatu Cloud Shell) GCP kontsolaren leihoaren goialdean.

Istiorako eskaera prestatzen

Beheko partean GCP kontsola Komando-lerroa duen Cloud Shell saio bat leiho berri batean irekiko da.

Istiorako eskaera prestatzen

B aukera: Komando-lerroko tresnak lokalean erabiltzea

Linux edo macOS exekutatzen duen ordenagailu batean lan egingo baduzu, osagai hauek konfiguratu eta instalatu beharko dituzu:

  1. Pertsonalizatu Python 3 eta Python 2 garapen-ingurunea.

  2. Instalatu Cloud SDK komando lerroko tresnarekin gcloud.

  3. instalatu kubectl - Lan egiteko komando lerroko tresna Kubernetes.

    gcloud components install kubectl

  4. instalatu Docker Community Edition (CE). Komando lerroko tresna erabiliko duzu Dockerlagin-aplikaziorako edukiontzi irudiak sortzeko.

  5. Instalatu tresna Git bertsioen kontrolaGitHub-en lagin-aplikazioa lortzeko.

Deskargatu adibidea kodea

  1. Deskargatu iturburu kodea kaixo zerbitzaria:

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

  2. Joan adibideko kodearen direktoriora:

    cd istio-samples/sample-apps/helloserver

Hainbat zerbitzu dituen aplikazio bat arakatzea

Aplikazio adibidea Python-en idatzita dago eta erabiliz elkarreragiten duten bi osagaiz osatuta dago REST:

  • zerbitzaria: zerbitzari sinplea amaiera puntu batekin LORTU, /, "kaixo mundua" inprimatzen duena kontsolan.
  • loadgen: trafikoa bidaltzen duen gidoia zerbitzaria, segundoko eskaera kopuru konfiguragarri batekin.

Istiorako eskaera prestatzen

Aplikazio bat iturburu-kodetik exekutatzen

Lagin-aplikazioa arakatzeko, exekutatu Cloud Shell-en edo zure ordenagailuan.
1) Katalogoan istio-samples/sample-apps/helloserver Korrika egin zerbitzaria:

python3 server/server.py

Abiaraztean zerbitzaria honako hau bistaratzen da:

INFO:root:Starting server...

2) Ireki beste terminal-leiho bat eskaerak bidaltzeko zerbitzaria. Cloud Shell erabiltzen ari bazara, egin klik Gehitu ikonoan beste saio bat irekitzeko.
3) Bidali eskaera hona zerbitzaria:

curl http://localhost:8080

zerbitzariaren erantzunak:

Hello World!

4) Lagin-kodea deskargatu duzun direktoriotik, joan horrek duen direktoriora loadgen:

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

5) Sortu ingurune-aldagai hauek:

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

6) Abiarazi birtualenv:

virtualenv --python python3 env

7) Aktibatu ingurune birtuala:

source env/bin/activate

8) Eskakizunak ezarri loadgen:

pip3 install -r requirements.txt

9) Abiarazi loadgen:

python3 loadgen.py

Abiaraztean loadgen mezu hau bezalako zerbait bistaratzen du:

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

Terminaleko beste leiho batean zerbitzaria honako mezu hauek ateratzen ditu kontsolara:

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: */*

Sarearen ikuspegitik, aplikazio osoa ostalari bakar batean exekutatzen da (ordenagailu lokala edo Cloud Shell makina birtuala). Beraz, erabil dezakezu localhosteskaerak bidaltzeko zerbitzaria.
10) Gelditzeko loadgen ΠΈ zerbitzaria, sartu Ktrl-c terminaleko leiho guztietan.
11) Terminaleko leihoan loadgen desaktibatu ingurune birtuala:

deactivate

Aplikazio bat ontzietan ontziratzea

Aplikazioa GKE-n exekutatzeko, adibideko aplikazioa paketatu behar duzu - zerbitzaria ΠΈ loadgen - urtean edukiontzi. Edukiontzi bat aplikazio bat paketatzeko modu bat da, ingurunetik isolatzeko.

Aplikazio bat edukiontzi batean paketatzeko, behar duzu Dockerfile. Dockerfile Aplikazioaren iturburu-kodea eta haren menpekotasunak eraikitzeko komandoak definitzen dituen testu-fitxategi bat da Docker irudia. Eraiki ondoren, irudia kargatzen duzu edukiontzi-erregistro batera, hala nola Docker Hub edo Edukiontzien Erregistroa.

Adibideak dagoeneko badu Dockerfile egiteko zerbitzaria ΠΈ loadgen irudiak biltzeko beharrezko komando guztiekin. Behean - Dockerfile egiteko zerbitzaria:

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

  • Team FROM python: 3-slim oinarri gisa azkena erabiltzeko esaten dio Dockerri Python 3 irudia oinarri gisa.
  • Team KOPIA. . iturburu-fitxategiak uneko lan-direktoriora kopiatzen ditu (gure kasuan soilik zerbitzaria.py) edukiontziaren fitxategi-sistemara.
  • SARRERA edukiontzia abiarazteko erabiltzen den komandoa definitzen du. Gure kasuan, komando hau exekutatu zenuenaren ia berdina da zerbitzaria.py iturburu-kodetik.
  • Team ERAKUSI hori adierazten du zerbitzaria portuaren bidez datuak itxaroten ditu 8080. Talde hau ez da portuak eskaintzen ditu. Hau portua irekitzeko beharrezkoa den dokumentazio mota bat da 8080 edukiontzia abiaraztean.

Zure aplikazioa edukiontziratzeko prestatzen

1) Ezarri ondoko ingurune-aldagaiak. Ordezkatu PROJECT_ID zure GCP proiektuaren IDra.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Balioak erabiltzea PROJECT_ID ΠΈ GCR_REPO Docker irudia etiketatzen duzu eraikitzen duzunean eta edukiontzien erregistro pribatu batera bultzatzen duzu.

2) Ezarri GCP proiektu lehenetsia komando lerroko tresnarako gcloud.

gcloud config set project $PROJECT_ID

3) Ezarri lehenetsitako eremua komando lerroko tresnarako gcloud.

gcloud config set compute/zone us-central1-b

4) Ziurtatu Container Registry zerbitzua gaituta dagoela GCP proiektuan.

gcloud services enable containerregistry.googleapis.com

Edukiontzien zerbitzaria

  1. Joan adibidea dagoen direktoriora zerbitzaria:

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

  2. Irudia erabiliz muntatu Dockerfile eta lehenago definitu dituzun ingurune-aldagaiak:

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

Parametroa -t Docker etiketa adierazten du. Hau da edukiontzia zabaltzean erabiltzen duzun irudiaren izena.

  1. Igo irudia edukiontzien erregistrora:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

loadgen edukiontzia

1) Joan adibidea dagoen direktoriora loadgen:

cd ../loadgen

2) Bildu irudia:

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

3) Igo irudia edukiontzien erregistrora:

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

Ikusi irudien zerrenda

Berrikusi biltegiko irudien zerrenda eta egiaztatu irudiak igo direla:

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

Komandoak kargatu berri diren irudien izenak erakusten ditu:

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

GKE kluster bat sortzea.

Edukiontzi hauek Cloud Shell makina birtual batean edo komandoa duen ordenagailu batean exekutatu daitezke docker run. Baina ekoizpen-ingurunean, edukiontziak zentralki orkestratzeko modu bat behar duzu. Adibidez, edukiontziak beti exekutatzen ari direla ziurtatzen duen sistema behar duzu eta trafikoa handitzen bada edukiontzi-instantzia gehigarriak eskalatzeko eta biratzeko modu bat behar duzu.

Erabili ditzakezu edukiontzidun aplikazioak exekutatzeko G.K.E.. GKE edukiontzi orkestratzeko plataforma bat da, makina birtualak kluster batean biltzen dituena. Makina birtual bakoitzari nodo deitzen zaio. GKE klusterrak Kubernetes kode irekiko kluster kudeaketa sisteman oinarritzen dira. Kubernetes-ek clusterrarekin elkarreragiteko mekanismoak eskaintzen ditu.

GKE kluster bat sortzea:

1) Sortu kluster bat:

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

Team gcloud prest dagoen kluster bat sortzen du zehaztu duzun GCP proiektuan eta eremu lehenetsian. Istio exekutatzeko, gutxienez 4 nodo eta makina birtual bat izatea gomendatzen dugu n1-estandar-2.

Taldeak klusterra sortzen du minutu gutxitan. Klusterra prest dagoenean, komandoak honelako zerbait ateratzen du mezua.

2) Eman kredentzialak komando lerroko tresnan kubectlclusterra kudeatzeko erabiltzeko:

gcloud container clusters get-credentials istioready

3) Orain Kubernetesekin komunika zaitezke kubectl. Adibidez, komando honek nodoen egoera aurki dezake:

kubectl get nodes

Komandoak nodoen zerrenda sortzen du:

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

Kubernetesen funtsezko kontzeptuak

Diagramak GKE-n aplikazio bat erakusten du:

Istiorako eskaera prestatzen

GKE-n edukiontziak zabaldu aurretik, ikasi Kubernetes-en funtsezko kontzeptuak. Bukaeran estekak daude gehiago jakin nahi baduzu.

  • Nodoak eta klusterrak. GKEn, nodo bat makina birtual bat da. Beste Kubernetes plataformetan, nodo bat ordenagailu bat edo makina birtual bat izan daiteke. Kluster bat edukiontzidun aplikazio bat zabaltzen duzun unitate bakartzat har daitekeen nodoen bilduma da.
  • Lekak. Kubernetesen, edukiontziak ontzietan ibiltzen dira. Kubernetes-en Pod bat unitate zatiezina da. Pod batek ontzi bat edo gehiago ditu. Zerbitzariaren edukiontziak zabaltzen dituzu eta loadgen leka bereizietan. Pod batean hainbat edukiontzi daudenean (adibidez, aplikazioen zerbitzari bat eta proxy zerbitzaria), edukiontziak entitate bakar gisa kudeatzen dira eta pod baliabideak partekatzen dituzte.
  • Inplementazioak. Kubernetes-en, inplementazioa ontzi berdinen bilduma den objektu bat da. Inplementazioak kluster-nodoetan banatutako poden erreplika anitz abiarazten ditu. Inplementazioak automatikoki ordezkatzen ditu huts egin duten edo erantzuten ez duten podak.
  • Kubernetes zerbitzua. GKE-n aplikazio-kodea exekutatzen denean, arteko konexioa loadgen ΠΈ zerbitzaria. Cloud Shell makina birtual edo mahaigainean zerbitzuak abiarazi dituzunean, eskaerak bidali zenizkion zerbitzaria helbidearen arabera localhost: 8080. GKEn inplementatu ondoren, pod-ak erabilgarri dauden nodoetan exekutatzen dira. Lehenespenez, ez duzu poda zein nodotan exekutatzen ari den kontrolatzen, beraz, zuk lekak IP helbide iraunkorrik ez.
    IP helbidea lortzeko zerbitzaria, sare-abstrakzio bat definitu behar duzu leken gainean. Horixe da Kubernetes zerbitzua. Kubernetes zerbitzuak amaiera-puntu iraunkor bat eskaintzen du pod multzo baterako. Gutxi daude zerbitzu motak. zerbitzaria erabilerak LoadBalancer, harremanetarako kanpoko IP helbidea eskaintzen duena zerbitzaria kluster kanpotik.
    Kubernetes-ek DNS izenak esleitzen dituen DNS sistema bat ere badu (adibidez, kaixozerbitzaria.lehenetsia.kluster.local) zerbitzuak. Horri esker, klusterreko podak klusterreko beste podekin komunikatzen dira helbide iraunkor batean. DNS izena ezin da erabili klusteretik kanpo, adibidez, Cloud Shell-en edo ordenagailu batean.

Kubernetes manifestuak

Aplikazioa iturburutik exekutatu duzunean, ezinbesteko komandoa erabili duzu python3

zerbitzaria.py

Inperatiboak aditz bat dakar: "egin hau".

Kubernetes-en erabilerak eredu deklaratiboa. Horrek esan nahi du ez diogula Kubernetesi zehazki zer egin behar duen esaten, nahi den egoera deskribatzen baizik. Adibidez, Kubernetes-ek lekak abiarazten eta gelditzen ditu behar den moduan, sistemaren benetako egoera nahi duzun egoerarekin bat datorrela ziurtatzeko.

Manifestuetan edo fitxategietan nahi duzun egoera adierazten duzu YAML. YAML fitxategi batek Kubernetes objektu baten edo gehiagoren zehaztapenak ditu.

Adibideak YAML fitxategi bat dauka zerbitzaria ΠΈ loadgen. YAML fitxategi bakoitzak inplementazio objektuaren eta Kubernetes zerbitzuaren nahi den egoera zehazten du.

zerbitzari.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

  • mota objektu mota adierazten du.
  • metadatuak.izena inplementazioaren izena zehazten du.
  • Lehenengo eremua zehaztapenak nahi den egoeraren deskribapena dauka.
  • espez.erreplikak nahi den lek kopurua adierazten du.
  • atala zehaztapen.txantiloia pod txantiloia definitzen du. Pod zehaztapenean eremu bat dago irudia, edukiontzien erregistrotik atera behar den irudiaren izena zehazten duena.

Zerbitzua honela definitzen da:

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

  • LoadBalancer: Bezeroek eskaerak karga-orekatzeko IP helbidera bidaltzen dituzte, IP helbide iraunkorra duena eta kluster kanpotik eskura daitekeena.
  • targetPort: gogoratzen duzunez, taldea 8080 ERAKUSKERA Π² Dockerfile ez zuen porturik eman. Zuk ematen duzu portua 8080edukiontziarekin harremanetan jartzeko zerbitzaria multzotik kanpo. Gure kasuan hellosvc.default.cluster.local:80 (izen laburra: kaixovc) portuari dagokio 8080 Pod IP helbideak kaixo zerbitzaria.
  • portu: Klusterreko beste zerbitzu batzuek eskaerak bidaliko dituzten ataka-zenbakia da.

loadgen.yaml

Hedapen-objektua loadgen.yaml dirudi zerbitzari.yaml. Ezberdintasuna inplementazio-objektuak atal bat duela da env. Behar diren ingurune-aldagaiak definitzen ditu loadgen eta aplikazioa iturburutik exekutatzen duzunean instalatu duzuna.

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

Behin loadgen ez ditu sarrerako eskaerak onartzen, eremurako mota ezezaguna KlusterIP. Mota honek klusterreko zerbitzuek erabil dezaketen IP helbide iraunkor bat eskaintzen du, baina IP helbide hau ez dago kanpoko bezeroen aurrean.

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

Edukiontziak GKEn zabaltzea

1) Joan adibidea dagoen direktoriora zerbitzaria:

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

2) Ireki zerbitzari.yaml testu-editore batean.
3) Ordezkatu izena eremuan irudia zure Docker irudiaren izenari.

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

Ordezkatu PROJECT_ID zure GCP proiektuaren IDra.
4) Gorde eta itxi zerbitzari.yaml.
5) Inplementatu YAML fitxategia Kubernetes-en:

kubectl apply -f server.yaml

Arrakastaz amaitzean, komandoak kode hau sortzen du:

deployment.apps/helloserver created
service/hellosvc created

6) Joan direktoriora non loadgen:

cd ../loadgen

7) Ireki loadgen.yaml testu-editore batean.
8) Ordezkatu izena eremuan irudia zure Docker irudiaren izenari.

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

Ordezkatu PROJECT_ID zure GCP proiektuaren IDra.
9) Gorde eta itxi loadgen.yaml, itxi testu-editorea.
10) Inplementatu YAML fitxategia Kubernetes-en:

kubectl apply -f loadgen.yaml

Arrakastaz amaitzean, komandoak kode hau sortzen du:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Egiaztatu poden egoera:

kubectl get pods

Komandoak egoera erakusten du:

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

12) Atera aplikazioen erregistroak podtik loadgen. Ordezkatu POD_ID aurreko erantzunaren identifikatzaileari.

kubectl logs loadgenerator-POD_ID

13) Lortu kanpoko IP helbideak kaixovc:

kubectl get service

Komandoaren erantzunak honelako itxura du:

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) Bidali eskaera hona kaixovc: ordezkatu KANPO_IP kanpoko IP helbidera kaixovc.

curl http://EXTERNAL_IP

Har dezagun Istio

Dagoeneko aplikazio bat duzu GKEn zabalduta. loadgen Kubernetes DNS erabil dezake (kaixovc:80) eskaerak bidaltzeko zerbitzariaeta eskaerak helbide honetara bidali ditzakezu zerbitzaria kanpoko IP helbidearen bidez. Kubernetes-ek ezaugarri asko dituen arren, zerbitzuei buruzko informazio batzuk falta dira:

  • Nola elkarreragiten dute zerbitzuak? Zeintzuk dira zerbitzuen arteko harremanak? Nola gertatzen da trafikoa zerbitzuen artean? Badakizu horretaz loadgen eskaerak bidaltzen ditu zerbitzaria, baina imajinatu aplikazioari buruz ezer ez dakizula. Galdera hauei erantzuteko, ikus diezaiogun GKE-n martxan dauden poden zerrenda.
  • Metrikak. Zenbat zerbitzaria jasotzen duen eskaera bati erantzuten dio? Zenbat eskaera jasotzen ditu segundoko zerbitzariak? Errore mezuak ematen al ditu?
  • Segurtasun informazioa. arteko trafikoa loadgen ΠΈ zerbitzaria besterik pasatzen da HTTP edo mTLS?

Istiok galdera horiei guztiei erantzuten die. Horretarako, Istiok sidecar proxy bat jartzen du Jesukristo leka bakoitzean. Envoy proxy-ak sarrerako eta irteerako trafiko guztia atzematen du aplikazio-edukiontzietara. Horrek esan nahi du zerbitzaria ΠΈ loadgen jaso sidecar proxy Envoy bidez, eta trafiko guztia loadgen ΠΊ zerbitzaria Envoy proxytik doa.

Envoy proxyen arteko konexioek zerbitzu sare bat osatzen dute. Zerbitzu-sarearen arkitekturak kontrol-geruza bat eskaintzen du Kubernetesen gainean.

Istiorako eskaera prestatzen

Envoy proxyak bere edukiontzietan exekutatzen direnez, Istio GKE kluster baten gainean instala daiteke aplikazioaren kodean ia aldaketarik gabe. Baina lan batzuk egin dituzu zure aplikazioa Istio-k kudeatzeko prest izateko:

  • Edukiontzi guztientzako zerbitzuak. Inplementazioetara zerbitzaria ΠΈ loadgen Kubernetes zerbitzuari lotuta. Baita loadgen, sarrerako eskaerak jasotzen ez dituena, zerbitzu bat dago.
  • Zerbitzuetako portuek izenak izan behar dituzte. Zerbitzu-atak GKEn izenik gabe utz daitezkeen arren, Istio-k zehaztea eskatzen dizu atakaren izena bere protokoloaren arabera. YAML fitxategian for zerbitzaria izeneko httpzerbitzariak protokoloa erabiltzen duelako HTTP. Bada zerbitzua erabiltzen gRPC, portuari izena emango zenioke grpc.
  • Inplementazioak markatuta daude. Hori dela eta, Istio-ren trafikoa kudeatzeko eginbideak erabil ditzakezu, hala nola trafikoa zerbitzu beraren bertsioen artean banatzea.

Instalazioa

Istio instalatzeko bi modu daude. Ahal gaitu Istio GKE luzapenean edo instalatu Istio-ren kode irekiko bertsioa klusterrean. Istio GKE-n, Istio-ren instalazioak eta bertsio-berritzeak erraz kudea ditzakezu GKE klusterraren bizi-ziklo osoan. Istio-ren azken bertsioa edo Istio-ren kontrol-panelaren konfigurazioaren gaineko kontrol gehiago nahi baduzu, instalatu kode irekiko bertsioa Istio-n GKE luzapenaren ordez. Planteamendua erabakitzeko, irakurri artikulua Istio behar al dut GKEn?.

Hautatu aukera bat, berrikusi gida egokia eta jarraitu Istio zure klusterrean instalatzeko argibideak. Istio erabili nahi baduzu zabaldu berri duzun aplikazioarekin, gaitu sidecar ezarpena izen-espaziorako lehenetsi.

garbiketa

Tutorial honetan erabili dituzun baliabideengatik zure Google Cloud Platform kontuan kobratzea saihesteko, ezabatu edukiontzien multzoa Istio instalatu eta lagin-aplikazioarekin jolastu ondoren. Horrek kluster-baliabide guztiak kenduko ditu, hala nola konputazio-instantziak, diskoak eta sareko baliabideak.

Zer da hurrengoa?

Iturria: www.habr.com

Gehitu iruzkin berria