Përgatitja e një aplikacioni për Istio

Përgatitja e një aplikacioni për Istio

Istio është një mjet i përshtatshëm për lidhjen, sigurimin dhe monitorimin e aplikacioneve të shpërndara. Istio përdor një sërë teknologjish për të ekzekutuar dhe menaxhuar softuer në shkallë, duke përfshirë kontejnerë për të paketuar kodin e aplikacionit dhe varësitë për vendosje, dhe Kubernetes për të menaxhuar ato kontejnerë. Prandaj, për të punuar me Istio duhet të dini se si funksionon një aplikacion me shërbime të shumta të bazuara në këto teknologji pa Istio. Nëse këto mjete dhe koncepte janë tashmë të njohura për ju, mos ngurroni të kaloni këtë tutorial dhe shkoni direkt në seksion Instalimi i Istio në Google Kubernetes Engine (GKE) ose instalimi i një shtesë Istio mbi GKE.

Ky është një udhëzues hap pas hapi ku ne do të ecim përgjatë gjithë procesit nga kodi burim në kontejnerin GKE, në mënyrë që të merrni një kuptim bazë të këtyre teknologjive me një shembull. Do të shihni gjithashtu se si Istio përdor fuqinë e këtyre teknologjive. Kjo supozon se nuk dini asgjë për kontejnerët, Kubernetes, rrjetat e shërbimit ose Istio.

detyrat

Në këtë tutorial, ju do të plotësoni detyrat e mëposhtme:

  1. Mësoni një aplikacion të thjeshtë hello world me shërbime të shumta.
  2. Drejtoni aplikacionin nga kodi burimor.
  3. Paketimi i aplikacionit në kontejnerë.
  4. Krijimi i një grupi Kubernetes.
  5. Vendosja e kontejnerëve në një grup.

Para se të filloni

Ndiqni udhëzimet për të aktivizuar Kubernetes Engine API:

  1. Shko tek Faqja e Kubernetes Engine në tastierën e Google Cloud Platform.
  2. Krijoni ose zgjidhni një projekt.
  3. Prisni derisa API dhe shërbimet e lidhura të aktivizohen. Kjo mund të zgjasë disa minuta.
  4. Sigurohuni që faturimi të jetë konfiguruar për projektin tuaj të Platformës së resë kompjuterike të Google. Mësoni se si të aktivizoni faturimin.

Në këtë tutorial, mund të përdorni Cloud Shell, i cili përgatit makinën virtuale g1-small në Google Compute Engine me Linux të bazuar në Debian, ose një kompjuter Linux ose macOS.

Opsioni A: Përdorimi i Cloud Shell

Përfitimet e përdorimit të Cloud Shell:

  • Mjediset e zhvillimit Python 2 dhe Python 3 (përfshirë virtualenv) janë konfiguruar plotësisht.
  • Veglat e linjës së komandës gcloud, cungues, git и kubectl, të cilat ne do të përdorim janë instaluar tashmë.
  • Ju keni disa për të zgjedhur redaktorët e tekstit:
    1. Redaktuesi i kodit, e cila hapet me ikonën e redaktimit në krye të dritares së Cloud Shell.
    2. Emacs, Vim ose Nano, të cilat hapen nga linja e komandës në Cloud Shell.

Per te perdorur Predha e resë:

  1. Shkoni te tastiera GCP.
  2. Klikoni butonin Aktivizo Cloud Shell (Aktivizo Cloud Shell) në krye të dritares së konsolës GCP.

Përgatitja e një aplikacioni për Istio

Në pjesën e poshtme Konsola GCP Një seancë Cloud Shell me një linjë komande do të hapet në një dritare të re.

Përgatitja e një aplikacioni për Istio

Opsioni B: Përdorimi i mjeteve të linjës së komandës në nivel lokal

Nëse do të punoni në një kompjuter me Linux ose macOS, do t'ju duhet të konfiguroni dhe instaloni komponentët e mëposhtëm:

  1. Personalizo Mjedisi i zhvillimit të Python 3 dhe Python 2.

  2. Instaloni Cloud SDK me mjetin e linjës së komandës gcloud.

  3. instaloj kubectl - mjeti i linjës së komandës për të punuar me Kubernetes.

    gcloud components install kubectl

  4. instaloj Botimi i Komunitetit Docker (CE). Ju do të përdorni mjetin e linjës së komandës cunguespër të krijuar imazhe të kontejnerëve për aplikacionin e mostrës.

  5. Instaloni mjetin Kontrolli i versionit Gitpër të marrë mostrën e aplikacionit nga GitHub.

Shkarko kodin e mostrës

  1. Shkarkoni kodin burimor helloserver:

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

  2. Shkoni te drejtoria e kodit shembull:

    cd istio-samples/sample-apps/helloserver

Eksplorimi i një aplikacioni me shërbime të shumta

Aplikacioni mostër është shkruar në Python dhe përbëhet nga dy komponentë që ndërveprojnë duke përdorur Rest:

  • server: server i thjeshtë me një pikë fundore MARR, /, e cila printon "hello world" në tastierë.
  • ngarkues: skript që dërgon trafikun në server, me një numër të konfigurueshëm kërkesash për sekondë.

Përgatitja e një aplikacioni për Istio

Ekzekutimi i një aplikacioni nga kodi burimor

Për të eksploruar aplikacionin e mostrës, ekzekutojeni atë në Cloud Shell ose në kompjuterin tuaj.
1) Në katalog istio-samples/sample-apps/helloserver vraponi server:

python3 server/server.py

Në fillimin server shfaqet e mëposhtme:

INFO:root:Starting server...

2) Hapni një dritare tjetër terminali për të dërguar kërkesa server. Nëse jeni duke përdorur Cloud Shell, klikoni ikonën e shtimit për të hapur një seancë tjetër.
3) Dërgoni një kërkesë tek server:

curl http://localhost:8080

përgjigjet e serverit:

Hello World!

4) Nga direktoria ku keni shkarkuar kodin e mostrës, shkoni te drejtoria që përmban ngarkues:

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

5) Krijoni variablat e mjedisit të mëposhtëm:

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

6) Nisja virtualenv:

virtualenv --python python3 env

7) Aktivizoni mjedisin virtual:

source env/bin/activate

8) Vendosni kërkesat për ngarkues:

pip3 install -r requirements.txt

9) Nisja ngarkues:

python3 loadgen.py

Në fillimin ngarkues shfaq diçka si mesazhi i mëposhtëm:

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

Në një dritare tjetër terminali server nxjerr mesazhet e mëposhtme në tastierë:

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

Nga këndvështrimi i rrjetit, i gjithë aplikacioni funksionon në një host të vetëm (kompjuter lokal ose makinë virtuale Cloud Shell). Prandaj mund të përdorni localhostpër të dërguar kërkesa tek server.
10) Për të ndaluar ngarkues и server, hyni Ctrl-c në çdo dritare terminali.
11) Në dritaren e terminalit ngarkues çaktivizoni mjedisin virtual:

deactivate

Paketimi i një aplikacioni në kontejnerë

Për të ekzekutuar aplikacionin në GKE, duhet të paketoni shembullin e aplikacionit − server и ngarkues - në kontejnerët. Një kontejner është një mënyrë për të paketuar një aplikacion për ta izoluar atë nga mjedisi i tij.

Për të paketuar një aplikacion në një enë, ju duhet dockerfile. dockerfile është një skedar teksti që përcakton komandat për ndërtimin e kodit burimor të aplikacionit dhe varësive të tij Imazhi i dokerit. Pasi të ndërtohet, ju ngarkoni imazhin në një regjistër të kontejnerit si Docker Hub ose Regjistri i kontejnerëve.

Shembulli tashmë ka dockerfile për server и ngarkues me të gjitha komandat e nevojshme për të mbledhur imazhe. Më poshtë - dockerfile për server:

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

  • Ekip NGA python: 3-i hollë si bazë i thotë Docker-it të përdorë më të fundit Imazhi i Python 3 si bazë.
  • Ekip KOPJE. . kopjon skedarët burim në drejtorinë aktuale të punës (vetëm në rastin tonë server.py) në sistemin e skedarëve të kontejnerit.
  • PIKA E HYRJES përcakton komandën që përdoret për të nisur kontejnerin. Në rastin tonë, kjo komandë është pothuajse e njëjtë me atë që keni përdorur server.py nga kodi burimor.
  • Ekip EKSPOZON tregon se server pret për të dhëna përmes portit 8080. Ky ekip nuk është ofron porte. Ky është një lloj dokumentacioni që nevojitet për të hapur portin 8080 kur ndizni enën.

Përgatitja për kontejnerizimin e aplikacionit tuaj

1) Vendosni variablat e mëposhtëm të mjedisit. Zëvendësoni PROJECT_ID në ID-në e projektit tuaj GCP.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Përdorimi i vlerave PROJECT_ID и GCR_REPO ju etiketoni imazhin Docker kur e ndërtoni dhe e shtyni atë në një Regjistr privat të kontejnerëve.

2) Caktoni projektin e paracaktuar GCP për mjetin e linjës së komandës gcloud.

gcloud config set project $PROJECT_ID

3) Vendosni zonën e paracaktuar për mjetin e linjës së komandës gcloud.

gcloud config set compute/zone us-central1-b

4) Sigurohuni që shërbimi i Regjistrit të kontejnerëve është i aktivizuar në projektin GCP.

gcloud services enable containerregistry.googleapis.com

Serveri i kontejnerizimit

  1. Shkoni te drejtoria ku ndodhet shembulli server:

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

  2. Mblidhni imazhin duke përdorur dockerfile dhe variablat e mjedisit që keni përcaktuar më herët:

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

Parametër -t përfaqëson etiketën Docker. Ky është emri i imazhit që përdorni kur vendosni kontejnerin.

  1. Ngarkoni imazhin në Regjistrin e Kontejnerëve:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Kontejnerizimi i ngarkesës

1) Shkoni te drejtoria ku ndodhet shembulli ngarkues:

cd ../loadgen

2) Mblidhni imazhin:

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

3) Ngarko imazhin në Regjistrin e Kontejnerëve:

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

Shikoni një listë të imazheve

Rishikoni listën e imazheve në depo dhe verifikoni që imazhet janë ngarkuar:

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

Komanda shfaq emrat e imazheve të sapo ngarkuara:

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

Krijimi i një grupi GKE.

Këto kontejnerë mund të ekzekutohen në një makinë virtuale Cloud Shell ose në një kompjuter me komandën drejtues dokeri. Por në një mjedis prodhimi, ju duhet një mënyrë për të orkestruar në mënyrë qendrore kontejnerët. Për shembull, ju nevojitet një sistem që siguron që kontejnerët të funksionojnë gjithmonë, dhe keni nevojë për një mënyrë për të rritur dhe rrotulluar raste shtesë të kontejnerëve nëse trafiku rritet.

Për të ekzekutuar aplikacione me kontejnerë mund të përdorni G.K.E.. GKE është një platformë orkestrimi kontejnerësh që grumbullon makinat virtuale në një grup. Çdo makinë virtuale quhet nyje. Grupet GKE bazohen në sistemin e menaxhimit të grupimeve Kubernetes me burim të hapur. Kubernetes ofron mekanizma për ndërveprim me grupin.

Krijimi i një grupi GKE:

1) Krijoni një grup:

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

Ekip gcloud krijon një grupim istioready në projektin GCP dhe zonën e paracaktuar që keni specifikuar. Për të ekzekutuar Istio, ju rekomandojmë të keni të paktën 4 nyje dhe një makinë virtuale n1-standard-2.

Ekipi krijon grupin në pak minuta. Kur grupi është gati, komanda nxjerr diçka të tillë сообщение.

2) Jepni kredencialet në mjetin e linjës së komandës kubectlpër ta përdorur atë për të menaxhuar grupin:

gcloud container clusters get-credentials istioready

3) Tani mund të komunikoni me Kubernetes nëpërmjet kubectl. Për shembull, komanda e mëposhtme mund të zbulojë statusin e nyjeve:

kubectl get nodes

Komanda prodhon një listë të nyjeve:

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

Konceptet kryesore të Kubernetes

Diagrami tregon një aplikacion në GKE:

Përgatitja e një aplikacioni për Istio

Përpara se të vendosni kontejnerë në GKE, mësoni konceptet kryesore të Kubernetes. Ka lidhje në fund nëse doni të mësoni më shumë.

  • Nyjet dhe grupimet. Në GKE, një nyje është një makinë virtuale. Në platformat e tjera Kubernetes, një nyje mund të jetë një kompjuter ose një makinë virtuale. Një grup është një koleksion nyjesh që mund të konsiderohen si një njësi e vetme ku vendosni një aplikacion të kontejneruar.
  • Bishtajat. Në Kubernetes, kontejnerët qarkullojnë në bishtaja. Një Pod në Kubernetes është një njësi e pandashme. Një Pod mban një ose më shumë kontejnerë. Ju vendosni kontejnerët e serverit dhe ngarkues në bishtaja të veçanta. Kur ka disa kontejnerë në një pod (për shembull, një server aplikacioni dhe proxy server), kontejnerët menaxhohen si një entitet i vetëm dhe ndajnë burimet e pod.
  • Vendosjet. Në Kubernetes, një vendosje është një objekt që është një koleksion i pods identike. Deployment lëshon kopje të shumta të pods të shpërndara nëpër nyje të grupimeve. Vendosja zëvendëson automatikisht podet që kanë dështuar ose që nuk reagojnë.
  • Shërbimi Kubernetes. Kur ekzekutoni kodin e aplikacionit në GKE, lidhja midis ngarkues и server. Kur keni filluar shërbimet në një makinë virtuale Cloud Shell ose desktop, keni dërguar kërkesa tek server nga adresa localhost: 8080. Pasi të vendosen në GKE, pods ekzekutohen në nyjet e disponueshme. Si parazgjedhje, ju nuk keni kontroll mbi cilën nyje po funksionon pod, kështu që ju bishtajat nuk ka adresa IP të përhershme.
    Për të marrë një adresë IP për server, ju duhet të përcaktoni një abstraksion rrjeti në krye të pods. Kjo është ajo që është Shërbimi Kubernetes. Shërbimi Kubernetes ofron një pikë përfundimtare të vazhdueshme për një grup pods. Janë disa llojet e shërbimeve. server përdor LoadBalancer, e cila ofron një adresë IP të jashtme për t'u kontaktuar server nga jashtë grupit.
    Kubernetes ka gjithashtu një sistem të integruar DNS që cakton emra DNS (për shembull, helloserver.default.cluster.local) shërbime. Falë kësaj, pods brenda grupit komunikojnë me pods të tjerë në grup në një adresë të përhershme. Emri DNS nuk mund të përdoret jashtë grupit, si p.sh. në Cloud Shell ose në një kompjuter.

Kubernetes manifestohet

Kur e keni drejtuar aplikacionin nga burimi, keni përdorur komandën imperative python3

server.py

Imperativi nënkupton një folje: "bëje këtë".

Kubernetes përdor modeli deklarativ. Kjo do të thotë që ne nuk po i themi Kubernetes saktësisht se çfarë të bëjë, por përkundrazi përshkruajmë gjendjen e dëshiruar. Për shembull, Kubernetes fillon dhe ndalon pods sipas nevojës për të siguruar që gjendja aktuale e sistemit përputhet me gjendjen e dëshiruar.

Ju tregoni gjendjen e dëshiruar në manifeste ose skedarë YAML. Një skedar YAML përmban specifikime për një ose më shumë objekte Kubernetes.

Shembulli përmban një skedar YAML për server и ngarkues. Çdo skedar YAML specifikon gjendjen e dëshiruar të objektit të vendosjes dhe shërbimit Kubernetes.

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

  • lloj tregon llojin e objektit.
  • metadata.emër specifikon emrin e vendosjes.
  • Fusha e parë spekulim përmban një përshkrim të gjendjes së dëshiruar.
  • spec.kopje tregon numrin e dëshiruar të bishtajave.
  • seksion spec.shabllon përcakton një shabllon pod. Ekziston një fushë në specifikimin e pod imazh, i cili specifikon emrin e imazhit që duhet të nxirret nga Regjistri i kontejnerëve.

Shërbimi është përcaktuar si më poshtë:

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

  • LoadBalancer: Klientët dërgojnë kërkesa në adresën IP të balancuesit të ngarkesës, e cila ka një adresë IP të vazhdueshme dhe është e aksesueshme nga jashtë grupit.
  • targetPort: siç e mbani mend, ekipi EKSPOSTO 8080 в dockerfile nuk ofroi porte. Ju jepni portin 8080në mënyrë që të mund të kontaktoni kontejnerin server jashtë grupit. Në rastin tonë hellosvc.default.cluster.local:80 (emer i shkurter: hellosvc) korrespondon me portin 8080 Adresat IP të pod helloserver.
  • port: Ky është numri i portit ku shërbimet e tjera në grup do të dërgojnë kërkesa.

loadgen.yaml

Objekti i vendosjes në loadgen.yaml duket si server.yaml. Dallimi është se objekti i vendosjes përmban një seksion zili. Ai përcakton variablat e mjedisit që nevojiten ngarkues dhe të cilën e keni instaluar gjatë ekzekutimit të aplikacionit nga burimi.

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

kohë ngarkues nuk pranon kerkesat e ardhura, per terren lloj i panjohur ClusterIP. Ky lloj ofron një adresë IP të vazhdueshme që shërbimet në grup mund ta përdorin, por kjo adresë IP nuk është e ekspozuar ndaj klientëve të jashtëm.

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

Vendosja e kontejnerëve në GKE

1) Shkoni te drejtoria ku ndodhet shembulli server:

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

2) Hapur server.yaml në një redaktues teksti.
3) Zëvendësoni emrin në fushë imazh në emrin e imazhit tuaj Docker.

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

zëvendësoj PROJECT_ID në ID-në e projektit tuaj GCP.
4) Ruani dhe mbyllni server.yaml.
5) Vendosni skedarin YAML në Kubernetes:

kubectl apply -f server.yaml

Pas përfundimit të suksesshëm, komanda prodhon kodin e mëposhtëm:

deployment.apps/helloserver created
service/hellosvc created

6) Shkoni te drejtoria ku ngarkues:

cd ../loadgen

7) Hapur loadgen.yaml në një redaktues teksti.
8) Zëvendësoni emrin në fushë imazh në emrin e imazhit tuaj Docker.

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

zëvendësoj PROJECT_ID në ID-në e projektit tuaj GCP.
9) Ruani dhe mbyllni loadgen.yaml, mbyllni redaktorin e tekstit.
10) Vendosni skedarin YAML në Kubernetes:

kubectl apply -f loadgen.yaml

Pas përfundimit të suksesshëm, komanda prodhon kodin e mëposhtëm:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Kontrolloni statusin e bishtajave:

kubectl get pods

Komanda tregon statusin:

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

12) Ekstraktoni regjistrat e aplikacioneve nga pod ngarkues. Zëvendësoni POD_ID te identifikuesi nga përgjigja e mëparshme.

kubectl logs loadgenerator-POD_ID

13) Merrni adresa IP të jashtme hellosvc:

kubectl get service

Përgjigja e komandës duket diçka si kjo:

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) Dërgoni një kërkesë tek hellosvc: zëvendësoj EXTERNAL_IP në adresën IP të jashtme hellosvc.

curl http://EXTERNAL_IP

Le të marrim Istio

Ju tashmë keni një aplikacion të vendosur në GKE. ngarkues mund të përdor Kubernetes DNS (hellosvc:80) për të dërguar kërkesa tek serverdhe mund të dërgoni kërkesa tek server me adresë IP të jashtme. Megjithëse Kubernetes ka shumë veçori, mungojnë disa informacione në lidhje me shërbimet:

  • Si ndërveprojnë shërbimet? Cilat janë marrëdhëniet ndërmjet shërbimeve? Si rrjedh trafiku ndërmjet shërbimeve? A jeni në dijeni se ngarkues dërgon kërkesa tek server, por imagjinoni që nuk dini asgjë për aplikacionin. Për t'iu përgjigjur këtyre pyetjeve, ne shikojmë listën e pods në GKE.
  • Metrikë. Sa gjatë server i përgjigjet një kërkese hyrëse? Sa kërkesa në sekondë pranohen nga serveri? A jep mesazhe gabimi?
  • Informacioni i Sigurisë. Trafiku ndërmjet ngarkues и server thjesht kalon HTTP ose nga mTLS?

Istio u përgjigjet të gjitha këtyre pyetjeve. Për ta bërë këtë, Istio vendos një përfaqësues të kartës anësore i dërguar në çdo pod. Përfaqësuesi i Envoy përgjon të gjithë trafikun hyrës dhe dalës drejt kontejnerëve të aplikacionit. Do të thotë se server и ngarkues merrni nëpërmjet të dërguarit të përfaqësuesit anësor, dhe të gjithë trafikun nga ngarkues к server kalon përmes përfaqësuesit të të dërguarit.

Lidhjet ndërmjet përfaqësuesve të Envoy formojnë një rrjetë shërbimi. Arkitektura rrjetë e shërbimit ofron një shtresë kontrolli në krye të Kubernetes.

Përgatitja e një aplikacioni për Istio

Meqenëse përfaqësuesit e Envoy funksionojnë në kontejnerët e tyre, Istio mund të instalohet në krye të një grupi GKE pa pothuajse asnjë ndryshim në kodin e aplikacionit. Por ju keni bërë disa punë për ta bërë aplikacionin tuaj gati për t'u menaxhuar nga Istio:

  • Shërbime për të gjithë kontejnerët. Tek vendosjet server и ngarkues lidhur me shërbimin Kubernetes. Madje ngarkues, e cila nuk merr kërkesa hyrëse, ka një shërbim.
  • Portet në shërbime duhet të kenë emra. Megjithëse portat e shërbimit mund të lihen pa emër në GKE, Istio kërkon që ju të specifikoni emri i portit në përputhje me protokollin e tij. Në skedarin YAML porti për server i quajtur httpsepse serveri përdor protokollin HTTP. Nëse shërbim të përdorura gRPC, ju do të emërtoni portin grpc.
  • Vendosjet janë të shënuara. Prandaj, mund të përdorni veçoritë e menaxhimit të trafikut të Istio, si p.sh. ndarja e trafikut midis versioneve të të njëjtit shërbim.

Instalimi i Istio

Ka dy mënyra për të instaluar Istio. Mund aktivizoni Istio në zgjerimin GKE ose instaloni versionin me burim të hapur të Istio në grup. Me Istio në GKE, mund të menaxhoni lehtësisht instalimet dhe përmirësimet e Istio gjatë gjithë ciklit jetësor të grupit GKE. Nëse dëshironi versionin më të fundit të Istio ose më shumë kontroll mbi konfigurimin e panelit të kontrollit Istio, instaloni versionin me burim të hapur në vend të shtesës Istio në GKE. Për të vendosur për qasjen, lexoni artikullin A më duhet Istio në GKE?.

Zgjidhni një opsion, rishikoni udhëzuesin e duhur dhe ndiqni udhëzimet për të instaluar Istio në grupin tuaj. Nëse dëshironi të përdorni Istio me aplikacionin tuaj të sapo vendosur, mundësojnë zbatimin e kartës anësore për hapësirën e emrave parazgjedhur.

Очистка

Për të shmangur tarifimin në llogarinë tuaj të Platformës së resë kompjuterike të Google për burimet që keni përdorur në këtë udhëzues, fshini grupin e kontejnerëve pasi të keni instaluar Istio dhe të keni luajtur me aplikacionin mostër. Kjo do të heqë të gjitha burimet e grupimit, të tilla si instancat e llogaritjes, disqet dhe burimet e rrjetit.

Çka më tej?

Burimi: www.habr.com

Shto një koment