Pályázat elkészítése Istio számára

Pályázat elkészítése Istio számára

Az Istio egy kényelmes eszköz az elosztott alkalmazások csatlakoztatására, biztosítására és figyelésére. Az Istio számos technológiát használ a szoftverek nagyarányú futtatására és kezelésére, beleértve az alkalmazáskód csomagoló tárolóit és a telepítéshez szükséges függőségeket, valamint a Kuberneteset a tárolók kezelésére. Ezért az Istio-val való együttműködéshez tudnia kell, hogyan működik az ezeken a technológiákon alapuló több szolgáltatást tartalmazó alkalmazás nélkül Istio. Ha ezeket az eszközöket és fogalmakat már ismeri, nyugodtan hagyja ki ezt az oktatóanyagot, és lépjen közvetlenül a szakaszra Az Istio telepítése a Google Kubernetes Engine-re (GKE) vagy bővítmény telepítése Istio a GKE-n.

Ez egy lépésről lépésre bemutatott útmutató, amelyben végigvezetjük a teljes folyamatot a forráskódtól a GKE-tárolóig, hogy egy példán keresztül alapvető ismereteket nyújtsunk ezekről a technológiákról. Azt is látni fogja, hogy az Istio hogyan hasznosítja e technológiák erejét. Ez azt feltételezi, hogy nem tud semmit a tárolókról, a Kubernetesekről, a szervizhálókról vagy az Istio-ról.

feladatok

Ebben az oktatóanyagban a következő feladatokat hajtja végre:

  1. Egy egyszerű hello world alkalmazás megtanulása több szolgáltatással.
  2. Futtassa az alkalmazást a forráskódból.
  3. Az alkalmazás csomagolása konténerekbe.
  4. Kubernetes-fürt létrehozása.
  5. Tárolók telepítése fürtbe.

Mielőtt elkezded

Kövesse az utasításokat a Kubernetes Engine API engedélyezéséhez:

  1. Menj ide Kubernetes Engine oldal a Google Cloud Platform konzolon.
  2. Hozzon létre vagy válasszon projektet.
  3. Várjon, amíg az API és a kapcsolódó szolgáltatások engedélyezve lesznek. Ez eltarthat néhány percig.
  4. Győződjön meg arról, hogy a számlázás be van állítva a Google Cloud Platform-projekthez. További információ a számlázás engedélyezéséről.

Ebben az oktatóanyagban használhatja a Cloud Shell-t, amely előkészíti a virtuális gépet g1-small a Google Compute Engine-ben Debian-alapú Linuxszal vagy Linuxos vagy macOS számítógéppel.

A lehetőség: Cloud Shell használata

A Cloud Shell használatának előnyei:

  • Python 2 és Python 3 fejlesztői környezetek (beleértve virtualenv) teljesen be vannak állítva.
  • Parancssori eszközök gcloud, dokkmunkás, csoportos it и kubectl, amelyeket használni fogunk, már telepítve vannak.
  • Több közül választhatsz szövegszerkesztők:
    1. Kódszerkesztő, amely a Szerkesztés ikonnal nyílik meg a Cloud Shell ablak tetején.
    2. Emacs, Vim vagy Nano, amelyek a Cloud Shell parancssorából nyílnak meg.

Használni Felhőhéj:

  1. Lépjen a GCP-konzolra.
  2. sajtó Aktiválja a Cloud Shellt (A Cloud Shell aktiválása) a GCP-konzolablak tetején.

Pályázat elkészítése Istio számára

Az alsó részen GCP konzol Egy parancssorral rendelkező Cloud Shell munkamenet új ablakban nyílik meg.

Pályázat elkészítése Istio számára

B lehetőség: Parancssori eszközök helyi használata

Ha Linuxot vagy macOS-t futtató számítógépen dolgozik, akkor a következő összetevőket kell konfigurálnia és telepítenie:

  1. Testreszab Python 3 és Python 2 fejlesztői környezet.

  2. Telepítse a Cloud SDK-t parancssori eszközzel gcloud.

  3. Készlet kubectl - parancssori eszköz a munkához Kubernetes.

    gcloud components install kubectl

  4. Készlet Docker Community Edition (CE). A parancssori eszközt fogja használni dokkmunkáskonténerképek létrehozásához a minta alkalmazáshoz.

  5. Telepítse a szerszámot Git verzióvezérléshogy megkapja a minta alkalmazást a GitHubról.

Töltse le a mintakódot

  1. Töltse le a forráskódot helloserver:

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

  2. Lépjen a példakód könyvtárba:

    cd istio-samples/sample-apps/helloserver

Több szolgáltatást tartalmazó alkalmazás felfedezése

A példaalkalmazás Python nyelven íródott, és két olyan összetevőből áll, amelyek egymással együttműködnek REST:

  • szerver: egyszerű szerver egy végponttal SZEREZZ, /, amely a "hello world"-et írja ki a konzolra.
  • loadgen: szkript, amely forgalmat küld a címre szerver, másodpercenként konfigurálható kérések számával.

Pályázat elkészítése Istio számára

Alkalmazás futtatása forráskódból

A példaalkalmazás felfedezéséhez futtassa azt a Cloud Shellben vagy számítógépén.
1) A katalógusban istio-samples/sample-apps/helloserver fuss szerver:

python3 server/server.py

Indításkor szerver a következő jelenik meg:

INFO:root:Starting server...

2) Nyisson meg egy másik terminálablakot a kérések elküldéséhez szerver. Ha Cloud Shellt használ, kattintson a Hozzáadás ikonra egy másik munkamenet megnyitásához.
3) Küldjön kérést a címre szerver:

curl http://localhost:8080

szerver válaszol:

Hello World!

4) Abból a könyvtárból, ahonnan a mintakódot letöltötte, lépjen arra a könyvtárra, amelyik tartalmazza loadgen:

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

5) Hozza létre a következő környezeti változókat:

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

6) Indítsa el virtualenv:

virtualenv --python python3 env

7) Aktiválja a virtuális környezetet:

source env/bin/activate

8) Állítsa be a követelményeket loadgen:

pip3 install -r requirements.txt

9) Indítsa el loadgen:

python3 loadgen.py

Indításkor loadgen a következő üzenethez hasonlót jelenít meg:

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

Egy másik terminál ablakban szerver a következő üzeneteket adja ki a konzolnak:

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

Hálózati szempontból a teljes alkalmazás egyetlen gazdagépen (helyi számítógépen vagy Cloud Shell virtuális gépen) fut. Ezért használhatja localhostcímre kéréseket küldeni szerver.
10) Megállni loadgen и szerver, belép Ctrl-c minden terminálablakban.
11) A terminál ablakban loadgen deaktiválja a virtuális környezetet:

deactivate

Alkalmazás csomagolása konténerekbe

Az alkalmazás GKE-n való futtatásához csomagolni kell a minta alkalmazást − szerver и loadgen - ban ben Konténerek. A tároló egy módja annak, hogy egy alkalmazást csomagoljon, hogy elkülönítse azt a környezetétől.

Ha egy alkalmazást tárolóba szeretne csomagolni, szüksége van dockerfile. dockerfile egy szöveges fájl, amely parancsokat határoz meg az alkalmazás forráskódjának és függőségeinek beépítéséhez Docker kép. Az elkészítést követően feltölti a képet egy konténer-nyilvántartásba, például a Docker Hub vagy Container Registry.

A példa már megvan dockerfile a szerver и loadgen a képek összegyűjtéséhez szükséges összes paranccsal. Lent - dockerfile a szerver:

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

  • Csapat pythontól: 3-slim alapként azt mondja a Dockernek, hogy használja a legújabbat Python 3 kép mint alap.
  • Csapat MÁSOLAT. . a forrásfájlokat az aktuális munkakönyvtárba másolja (csak a mi esetünkben server.py) a tároló fájlrendszerébe.
  • BELÉPÉSI PONT meghatározza a tároló indításához használt parancsot. Esetünkben ez a parancs majdnem ugyanaz, mint amit korábban futtattál server.py forráskódból.
  • Csapat KIFEJEZNI azt jelzi szerver adatokra vár a porton keresztül 8080. Ez a csapat nem portokat biztosít. Ez egyfajta dokumentáció, amely szükséges a port megnyitásához 8080 a tartály indításakor.

Felkészülés az alkalmazás konténerbe helyezésére

1) Állítsa be a következő környezeti változókat. Cserélje ki PROJECT_ID a GCP-projektazonosítóhoz.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Értékek használata PROJECT_ID и GCR_REPO felcímkézed a Docker-képet, amikor összeállítod, és egy privát tároló-nyilvántartásba helyezed.

2) Állítsa be a parancssori eszköz alapértelmezett GCP-projektjét gcloud.

gcloud config set project $PROJECT_ID

3) Állítsa be a parancssori eszköz alapértelmezett zónáját gcloud.

gcloud config set compute/zone us-central1-b

4) Győződjön meg arról, hogy a Container Registry szolgáltatás engedélyezve van a GCP-projektben.

gcloud services enable containerregistry.googleapis.com

Konténerező szerver

  1. Lépjen abba a könyvtárba, ahol a példa található szerver:

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

  2. segítségével állítsa össze a képet dockerfile és a korábban meghatározott környezeti változók:

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

Paraméter -t a Docker címkét jelenti. Ez a kép neve, amelyet a tároló üzembe helyezésekor használ.

  1. Töltse fel a képet a Container Registry-be:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

A loadgen konténerezése

1) Lépjen abba a könyvtárba, ahol a példa található loadgen:

cd ../loadgen

2) Gyűjtsd össze a képet:

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

3) Töltse fel a képet a Container Registry-be:

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

Tekintse meg a képek listáját

Tekintse át a tárhelyben lévő képek listáját, és ellenőrizze, hogy a képeket feltöltötte:

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

A parancs megjeleníti az újonnan feltöltött képek nevét:

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

GKE-klaszter létrehozása.

Ezek a tárolók futtathatók Cloud Shell virtuális gépen vagy számítógépen a paranccsal docker fut. De termelési környezetben szükség van a konténerek központi hangszerelésére. Szüksége van például egy olyan rendszerre, amely biztosítja, hogy a tárolók mindig futjanak, és szükség van egy módra a további tárolópéldányok bővítésére és felpörgetésére, ha a forgalom növekszik.

Konténeres alkalmazások futtatásához használhatja G.K.E.. A GKE egy konténer-hangszerelési platform, amely a virtuális gépeket egy fürtbe összesíti. Minden virtuális gépet csomópontnak neveznek. A GKE-fürtök a nyílt forráskódú Kubernetes fürtkezelő rendszeren alapulnak. A Kubernetes mechanizmusokat biztosít a fürttel való interakcióhoz.

GKE-klaszter létrehozása:

1) Hozzon létre egy klasztert:

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

Csapat gcloud létrehoz egy istioready fürtöt a megadott GCP-projektben és alapértelmezett zónában. Az Istio futtatásához legalább 4 csomópontot és egy virtuális gépet javasolunk n1-standard-2.

A csapat néhány perc alatt létrehozza a klasztert. Amikor a fürt készen áll, a parancs valami ilyesmit ad ki сообщение.

2) Adja meg a hitelesítő adatokat a parancssori eszközben kubectla fürt kezeléséhez:

gcloud container clusters get-credentials istioready

3) Most már kommunikálhat a Kubernetes segítségével kubectl. Például a következő paranccsal megtudhatja a csomópontok állapotát:

kubectl get nodes

A parancs létrehozza a csomópontok listáját:

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

Kubernetes kulcsfogalmak

Az ábra egy alkalmazást mutat a GKE-n:

Pályázat elkészítése Istio számára

Mielőtt telepítené a tárolókat a GKE-ben, ismerje meg a Kubernetes kulcsfogalmait. A legvégén linkek találhatók, ha többet szeretnél megtudni.

  • Csomópontok és klaszterek. A GKE-ben a csomópont egy virtuális gép. Más Kubernetes platformokon a csomópont lehet számítógép vagy virtuális gép. A fürt olyan csomópontok gyűjteménye, amelyek egyetlen egységnek tekinthetők, ahol egy konténeres alkalmazást telepít.
  • Hüvelyek. Kubernetesben a konténerek hüvelyben futnak. A kubernetesi pod egy oszthatatlan egység. Egy tok egy vagy több tartályt tartalmaz. Szerverkonténereket telepít és loadgen külön hüvelyekben. Ha több konténer van egy podban (például egy alkalmazáskiszolgáló és proxy szerver), a tárolók egyetlen entitásként kezelhetők, és megosztják a pod erőforrásokat.
  • Telepítések. A Kubernetesben a központi telepítés egy olyan objektum, amely azonos pod-ok gyűjteménye. Az üzembe helyezés több, a fürtcsomópontok között elosztott pod-replikákat indít el. A telepítés automatikusan lecseréli a meghibásodott vagy nem reagáló podokat.
  • Kubernetes szolgáltatás. Az alkalmazáskód GKE-ben való futtatásakor a kapcsolat között loadgen и szerver. Amikor elindította a szolgáltatásokat egy Cloud Shell virtuális gépen vagy asztalon, kéréseket küldött a címre szerver a localhost: 8080. A GKE-ben való üzembe helyezés után a pod-ok végrehajtásra kerülnek az elérhető csomópontokon. Alapértelmezés szerint nem szabályozhatja, hogy a pod melyik csomóponton fut, így Ön hüvelyek nincs állandó IP-cím.
    IP-cím beszerzéséhez szerver, meg kell határoznia egy hálózati absztrakciót a podok tetején. Az az ami Kubernetes szolgáltatás. A Kubernetes szolgáltatás állandó végpontot biztosít a pod-készlethez. Van néhány típusú szolgáltatások. szerver felhasznál Terhelés elosztó, amely külső IP-címet biztosít a kapcsolatfelvételhez szerver a klaszteren kívülről.
    A Kubernetes rendelkezik egy beépített DNS-rendszerrel is, amely DNS-neveket rendel hozzá (pl. helloserver.default.cluster.local) szolgáltatások. Ennek köszönhetően a fürtön belüli podok állandó címen kommunikálnak a fürt többi podjával. A DNS-név nem használható a fürtön kívül, például a Cloud Shellben vagy számítógépen.

Kubernetes manifesztálódik

Amikor az alkalmazást forrásból futtatta, az imperative parancsot használta python3

server.py

A felszólító kifejezés egy igét jelent: „csináld ezt”.

Kubernetes használ deklaratív modell. Ez azt jelenti, hogy nem mondjuk meg a Kubernetesnek, hogy pontosan mit kell tennie, hanem inkább a kívánt állapotot írjuk le. Például a Kubernetes szükség szerint elindítja és leállítja a sorba rendezéseket, hogy a rendszer aktuális állapota összhangban legyen a kívánt állapottal.

A kívánt állapotot jegyzékekben vagy fájlokban jelzi YAML. A YAML-fájl egy vagy több Kubernetes-objektum specifikációit tartalmazza.

A példa a következőhöz tartozó YAML fájlt tartalmazza szerver и loadgen. Minden YAML-fájl megadja a telepítési objektum és a Kubernetes-szolgáltatás kívánt állapotát.

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

  • kedves jelzi az objektum típusát.
  • metaadat.név megadja a telepítés nevét.
  • Első mező spec tartalmazza a kívánt állapot leírását.
  • spec.replicas jelzi a hüvelyek kívánt számát.
  • rész spec.template pod sablont határoz meg. A pod specifikációjában van egy mező kép, amely megadja annak a képnek a nevét, amelyet ki kell bontani a Container Registry-ből.

A szolgáltatás meghatározása a következő:

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

  • Terhelés elosztó: Az ügyfelek kéréseket küldenek a terheléselosztó IP-címére, amely állandó IP-címmel rendelkezik, és a fürtön kívülről is elérhető.
  • célPort: mint emlékszel, a csapat KIFEJEZÉS 8080 в dockerfile nem biztosított portokat. Te biztosítod a portot 8080hogy kapcsolatba léphessen a konténerrel szerver klaszteren kívül. A mi esetünkben hellosvc.default.cluster.local:80 (Rövid név: hellosvc) a portnak felel meg 8080 Pod IP-címek helloserver.
  • kikötő: Ez az a portszám, amelyre a fürt többi szolgáltatása kéréseket küld.

loadgen.yaml

Telepítési objektum loadgen.yaml hasonló szerver.yaml. A különbség az, hogy a telepítési objektum tartalmaz egy szakaszt env. Meghatározza a szükséges környezeti változókat loadgen és amelyeket az alkalmazás forrásból való futtatásakor telepített.

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

Idő loadgen nem fogad beérkező kéréseket, a mezőre típus ismeretlen ClusterIP. Ez a típus egy állandó IP-címet biztosít, amelyet a fürt szolgáltatásai használhatnak, de ez az IP-cím nem érhető el külső ügyfelek számára.

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

Konténerek telepítése a GKE-ben

1) Lépjen abba a könyvtárba, ahol a példa található szerver:

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

2) Nyissa meg szerver.yaml szövegszerkesztőben.
3) Cserélje ki a nevet a mezőben kép a Docker-kép nevére.

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

Cserélje ki PROJECT_ID a GCP-projektazonosítóhoz.
4) Mentse el és zárja be szerver.yaml.
5) Telepítse a YAML fájlt a Kubernetesbe:

kubectl apply -f server.yaml

Sikeres befejezés után a parancs a következő kódot állítja elő:

deployment.apps/helloserver created
service/hellosvc created

6) Menjen a könyvtárba, ahol loadgen:

cd ../loadgen

7) Nyissa meg loadgen.yaml szövegszerkesztőben.
8) Cserélje ki a nevet a mezőben kép a Docker-kép nevére.

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

Cserélje ki PROJECT_ID a GCP-projektazonosítóhoz.
9) Mentse el és zárja be loadgen.yaml, zárja be a szövegszerkesztőt.
10) Telepítse a YAML fájlt a Kubernetesbe:

kubectl apply -f loadgen.yaml

Sikeres befejezés után a parancs a következő kódot állítja elő:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Ellenőrizze a hüvelyek állapotát:

kubectl get pods

A parancs az állapotot mutatja:

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

12) Az alkalmazásnaplók kibontása a podból loadgen. Cserélje ki POD_ID az előző válaszból származó azonosítóhoz.

kubectl logs loadgenerator-POD_ID

13) Szerezzen be külső IP-címeket hellosvc:

kubectl get service

A parancs válasza valahogy így néz ki:

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) Küldjön kérést a címre hellosvc: csere EXTERNAL_IP külső IP-címre hellosvc.

curl http://EXTERNAL_IP

Vegyük Istiót

Már van egy alkalmazás telepítve a GKE-ben. loadgen használhatja a Kubernetes DNS-t (hellosvc:80) kérések küldéséhez szerverés kéréseket küldhet a címre szerver külső IP-cím alapján. Bár a Kubernetes számos funkcióval rendelkezik, néhány információ hiányzik a szolgáltatásokról:

  • Hogyan működnek együtt a szolgáltatások? Milyen kapcsolatok vannak a szolgáltatások között? Hogyan folyik a forgalom a szolgáltatások között? Tisztában vagy azzal loadgen címre küld kéréseket szerver, de képzelje el, hogy semmit sem tud az alkalmazásról. A kérdések megválaszolásához nézzük meg a GKE futó pod-listáját.
  • Metrikák. Meddig szerver válaszol egy bejövő kérésre? Hány kérést kap másodpercenként a szerver? Hibaüzeneteket ad?
  • Biztonsági információk. közötti forgalom loadgen и szerver csak átmegy HTTP vagy által mTLS?

Istio válaszol ezekre a kérdésekre. Ehhez Istio oldalkocsis proxyt helyez el Követ minden hüvelyben. Az Envoy proxy elfogja az alkalmazástárolókba irányuló összes bejövő és kimenő forgalmat. Ez azt jelenti szerver и loadgen oldalkocsi-proxy Envoy-n keresztül fogadja, és az összes forgalmat loadgen к szerver keresztül megy a Envoy proxy-n.

Az Envoy proxy-k közötti kapcsolatok szolgáltatáshálót alkotnak. A szolgáltatásháló-architektúra egy vezérlési réteget biztosít a Kubernetes tetején.

Pályázat elkészítése Istio számára

Mivel az Envoy proxy-k saját konténereikben futnak, az Istio a GKE-fürt tetejére telepíthető az alkalmazáskód szinte változtatása nélkül. De végzett egy kis munkát, hogy az alkalmazását az Istio kezelhesse:

  • Szolgáltatások minden konténerhez. A bevetésekhez szerver и loadgen a Kubernetes szolgáltatáshoz kötve. Még loadgen, amely nem fogad beérkező kéréseket, van szolgáltatás.
  • A szolgáltatásokban lévő portoknak nevet kell adni. Bár a szolgáltatási portok név nélkül maradhatnak a GKE-ben, az Istio megköveteli, hogy adja meg port neve protokolljának megfelelően. A YAML fájlban a port szerver hívott httpmert a szerver a protokollt használja HTTP... Ha szolgáltatás használt gRPC, akkor neveznéd a kikötőt grpc.
  • A telepítések meg vannak jelölve. Ezért használhatja az Istio forgalomkezelési szolgáltatásait, például a forgalom felosztását ugyanazon szolgáltatás verziói között.

Telepítés

Az Istio telepítésének két módja van. Tud engedélyezze az Istio-t a GKE bővítményen vagy telepítse az Istio nyílt forráskódú verzióját a klaszteren. A GKE-n található Istio segítségével könnyedén kezelheti az Istio-telepítéseket és frissítéseket a GKE-fürt teljes életciklusa során. Ha az Istio legfrissebb verzióját szeretné, vagy jobban szabályozni szeretné az Istio vezérlőpult konfigurációját, telepítse a nyílt forráskódú verziót az Istio on GKE bővítmény helyett. A megközelítés eldöntéséhez olvassa el a cikket Kell nekem Istio a GKE-n?.

Válasszon ki egy lehetőséget, tekintse át a megfelelő útmutatót, és kövesse az utasításokat az Istio fürtre történő telepítéséhez. Ha az Istio-t az újonnan telepített alkalmazással szeretné használni, lehetővé teszi az oldalkocsis megvalósítást névtérhez alapértelmezett.

Очистка

Ha el szeretné kerülni, hogy az oktatóanyagban felhasznált erőforrásokért Google Cloud Platform-fiókját terheljük meg, törölje a tárolófürtöt, miután telepítette az Istio-t, és játszott a példaalkalmazással. Ezzel eltávolítja az összes fürt erőforrást, például számítási példányokat, lemezeket és hálózati erőforrásokat.

Mi a következő lépés?

Forrás: will.com

Hozzászólás