Amadekirina serîlêdanê ji bo Istio

Amadekirina serîlêdanê ji bo Istio

Istio ji bo girêdan, ewlehî û çavdêrîkirina serîlêdanên belavkirî amûrek hêsan e. Istio cûrbecûr teknolojiyên bikar tîne da ku nermalava di pîvanê de bixebitîne û bi rê ve bibe, di nav de konteynir ji bo pakkirina koda serîlêdanê û girêdanên ji bo bicîhkirinê, û Kubernetes ji bo birêvebirina wan konteyneran. Ji ber vê yekê, ji bo ku hûn bi Istio re bixebitin divê hûn zanibin ka serîlêdanek bi gelek karûbarên li ser bingeha van teknolojiyên çawa dixebite bêyî Istio. Ger van amûr û têgihan jixwe ji we re naskirî ne, xwe ji vê dersê berdin û rasterast biçin beşê Sazkirina Istio li Google Kubernetes Engine (GKE) an sazkirina pêvekek Îstio li ser GKE.

Ev rêbernameyek gav-bi-gav e ku em ê di tevahiya pêvajoyê de ji koda çavkaniyê heya konteynera GKE bimeşin da ku hûn bi mînakek têgihiştinek bingehîn a van teknolojiyên bidin we. Her weha hûn ê bibînin ka Istio çawa hêza van teknolojiyên bikar tîne. Ev dihesibîne ku hûn di derbarê konteyneran, Kubernetes, meşên karûbarê, an Istio de tiştek nizanin.

erkên

Di vê tutoriyê de, hûn ê karên jêrîn temam bikin:

  1. Fêrbûna serîlêdana cîhana silavê ya hêsan bi gelek karûbaran re.
  2. Serlêdanê ji koda çavkaniyê bimeşînin.
  3. Pakêkirina serîlêdanê di konteyneran de.
  4. Afirandina komek Kubernetes.
  5. Bicihkirina konteyneran di nav komekê de.

Berî ku hûn dest pê bikin

Ji bo çalakkirina Kubernetes Engine API-ê rêwerzan bişopînin:

  1. Herin rûpel Engine Kubernetes di konsolê Google Cloud Platform de.
  2. Projeyek çêbikin an hilbijêrin.
  3. Li bendê bimînin heya ku API û karûbarên peywendîdar çalak bibin. Ev dibe ku çend deqeyan bigire.
  4. Piştrast bikin ku fatûreya ji bo projeya weya Platforma Google Cloud hatî saz kirin. Fêr bibe ka meriv çawa billing çalak bike.

Di vê tutoriyê de, hûn dikarin Cloud Shell, ku makîneya virtual amade dike, bikar bînin g1-piçûk di Google Compute Engine bi Linux-a-based Debian, an komputerek Linux an macOS.

Vebijêrk A: Bikaranîna Cloud Shell

Feydeyên karanîna Cloud Shell:

  • Jîngehên pêşkeftinê yên Python 2 û Python 3 (di nav de virtualenv) bi tevahî hatine mîheng kirin.
  • Amûrên Rêzika Fermandariyê gcloud, docker, git и kubectl, ku em ê bikar bînin jixwe hatine saz kirin.
  • Hûn çend hene ku hûn ji wan hilbijêrin edîtorên nivîsê:
    1. edîtorê kodê, ku bi îkona guherandinê ya li serê pencereya Cloud Shell vedibe.
    2. Emacs, Vim an Nano, ku ji rêzika fermanê di Cloud Shell de vedibin.

Bikaranîn Ewrê Shell:

  1. Biçe konsolê GCP.
  2. Bişkojkê bikirtînin Cloud Shell çalak bike (Cloud Shell çalak bike) li jora pencereya konsolê GCP.

Amadekirina serîlêdanê ji bo Istio

Di beşa jêrîn de Konsolê GCP Danişînek Cloud Shell bi rêzek fermanê dê di pencereyek nû de vebe.

Amadekirina serîlêdanê ji bo Istio

Vebijêrk B: Bikaranîna Amûrên Rêzika Fermana Herêmî

Ger hûn ê li ser komputerek ku Linux an macOS-ê dixebite bixebitin, hûn ê hewce bikin ku pêkhateyên jêrîn mîheng bikin û saz bikin:

  1. Customize Jîngeha pêşveçûna Python 3 û Python 2.

  2. Cloud SDK saz bikin bi amûra rêzika fermanê gcloud.

  3. Lêkirin kubectl - Amûra rêza fermanê ji bo xebatê Kubernetes.

    gcloud components install kubectl

  4. Lêkirin Docker Community Edition (CE). Hûn ê amûra rêza fermanê bikar bînin dockerji bo serîlêdana nimûneyê wêneyên konteynerê biafirînin.

  5. Amûrê saz bikin Kontrola guhertoya Gitji bo ku serîlêdana nimûne ji GitHub bistînin.

Koda nimûne dakêşin

  1. Koda çavkaniyê dakêşin helloserver:

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

  2. Biçe pelrêça koda nimûneyê:

    cd istio-samples/sample-apps/helloserver

Vekolîna serîlêdanek bi gelek karûbaran

Serlêdana nimûneyê di Python de hatî nivîsandin û ji du hêmanan pêk tê ku bi karanîna hevûdu re têkildar in REHETÎ:

  • server: serverek sade bi yek xala dawiyê BİXWÎNE, /, ku "hello dinya" li ser konsolê çap dike.
  • loadgen: skrîpta ku trafîkê jê re dişîne server, bi hejmareke vesazkirî ya daxwazên per second.

Amadekirina serîlêdanê ji bo Istio

Serlêdanek ji koda çavkaniyê dimeşîne

Ji bo vekolîna serîlêdana nimûneyê, wê li Cloud Shell an li ser komputera xwe bimeşînin.
1) Di katalogê de istio-nimûne / nimûne-apps / helloserver rev server:

python3 server/server.py

Di destpêkê de server jêrîn tê nîşandan:

INFO:root:Starting server...

2) Pencereyek termînalek din vekin da ku daxwazan bişînin server. Heke hûn Cloud Shell bikar tînin, îkona lêzêdekirinê bikirtînin da ku danişînek din vekin.
3) Daxwazek bişînin server:

curl http://localhost:8080

bersivên serverê:

Hello World!

4) Ji pelrêça ku we koda nimûne dakêşand, biçin pelrêça ku tê de ye loadgen:

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

5) Guherînên jîngehê yên jêrîn biafirînin:

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

6) Birevin virtualenv:

virtualenv --python python3 env

7) Jîngeha virtual çalak bikin:

source env/bin/activate

8) Pêdiviyên ji bo danîn loadgen:

pip3 install -r requirements.txt

9) Birevin loadgen:

python3 loadgen.py

Di destpêkê de loadgen tiştek mîna peyama jêrîn nîşan dide:

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

Di pencereya termînalê ya din de server peyamên jêrîn ji konsolê re derdixe:

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

Ji perspektîfa torê ve, tevahiya serîlêdanê li ser yek mêvandar (komputera herêmî an makîneya virtual Cloud Shell) dimeşe. Ji ber vê yekê hûn dikarin bikar bînin localhostji bo şandina daxwazan server.
10) Rawestandin loadgen и server, têkevin Ctrl-c di her pencereya termînalê de.
11) Di pencereya termînalê de loadgen jîngeha virtual neçalak bike:

deactivate

Pakkirina serîlêdanek di konteyneran de

Ji bo ku serîlêdanê li ser GKE-ê bixebitin, hûn hewce ne ku serîlêdana nimûne pak bikin - server и loadgen - di naverokan. Konteynir rêyek e ku meriv serîlêdanek pak bike da ku wê ji hawîrdora xwe veqetîne.

Ji bo ku serîlêdanek di konteynerê de pak bikin, hûn hewce ne dockerfile. dockerfile pelek nivîsê ye ku fermanan ji bo avakirina koda çavkaniyê ya serîlêdanê û girêdanên wê di nav de destnîşan dike Wêneyê Docker. Piştî ku hatî çêkirin, hûn wêneyê li qeydek konteynerek wekî Docker Hub an jî bar dikin Registry Konteynirê.

Mînak jixwe heye dockerfile bo server и loadgen bi hemî fermanên pêwîst ji bo berhevkirina wêneyan. Li jêr - dockerfile bo 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" ]

  • tîma JI python: 3-slim wekî bingeh ji Docker re dibêje ku herî dawî bikar bîne Wêneyê Python 3 wek bingeh.
  • tîma KOPÎ. . pelên çavkaniyê li pelrêça xebatê ya heyî kopî dike (tenê di doza me de server.py) ji bo pergala pelê ya konteynerê.
  • ENTRYPOINT fermana ku ji bo destpêkirina konteynerê tê bikar anîn diyar dike. Di rewşa me de, ev ferman hema hema wekî ya ku we bikar anî ye server.py ji koda çavkaniyê.
  • tîma SEKINANDIN nîşan dide ku server bi rêya benderê li benda daneyan e 8080. Ev tîm ne portan peyda dike. Ev celebek belgeyek e ku ji bo vekirina portê hewce ye 8080 dema ku konteynir dest pê dike.

Amadekirina konteynerkirina serlêdana we

1) Guherbarên jîngehê yên jêrîn saz bikin. Diberdaxistin PROJECT_ID Nasnameya projeya GCP-ya we.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Bikaranîna nirxan PROJECT_ID и GCR_REPO dema ku hûn wê ava dikin hûn wêneya Docker etîket bikin û wê bixin nav Tomarek Konteynerek taybet.

2) Projeya xwerû ya GCP-ê ji bo amûra rêzika fermanê saz bikin gcloud.

gcloud config set project $PROJECT_ID

3) Ji bo amûra rêzika fermanê devera xwerû destnîşan bikin gcloud.

gcloud config set compute/zone us-central1-b

4) Piştrast bikin ku karûbarê Registry Konteyner di projeya GCP de çalak e.

gcloud services enable containerregistry.googleapis.com

Pêşkêşkara konteynerkirinê

  1. Biçe pelrêça ku mînak lê ye server:

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

  2. Wêne bikar bînin berhev bikin dockerfile û guhêrbarên jîngehê yên ku we berê diyar kirin:

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

Parîsê -t nîşana Docker temsîl dike. Ev navê wêneyê ye ku hûn dema ku konteynerê bikar tînin bikar tînin.

  1. Wêne li Registry Konteynirê bar bikin:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Konteynirkirina loadgen

1) Biçe pelrêça ku mînak lê ye loadgen:

cd ../loadgen

2) Wêne berhev bikin:

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

3) Wêne li Registry Konteyner barkirin:

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

Lîsteya wêneyan bibînin

Navnîşa wêneyên di depoyê de binihêrin û piştrast bikin ku wêne hatine barkirin:

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

Ferman navên wêneyên ku nû hatine barkirin nîşan dide:

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

Afirandina komek GKE.

Van konteyneran dikarin li ser makîneyek virtual Cloud Shell an li ser komputerek bi fermanê werin xebitandin docker run. Lê di hawîrdorek hilberînê de, hûn hewce ne ku rêyek ku hûn konteynerên navendî birêxistin bikin. Mînakî, ji we re pergalek hewce dike ku piştrast bike ku konteynir her gav dimeşin, û hûn hewceyê rêyek in ku hûn heke seyrûsefer zêde bibin mînakên konteyneran zêde bikin û zêde bikin.

Ji bo ku hûn serîlêdanên konteynerkirî bimeşînin hûn dikarin bikar bînin G.K.E.. GKE platformek orkestrasyona konteyneran e ku makîneyên virtual di nav komekê de kom dike. Ji her makîneya virtual re girêk tê gotin. Komên GKE li ser bingeha pergala rêveberiya koma Kubernetes-a çavkaniya vekirî ye. Kubernetes mekanîzmayên danûstendina bi komê re peyda dike.

Afirandina komek GKE:

1) Komek ava bikin:

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

tîma gcloud di projeya GCP û devera xwerû ya ku we diyar kiriye de komek istioready diafirîne. Ji bo xebitandina Istio, em pêşniyar dikin ku bi kêmî ve 4 nod û makîneyek virtual hebe n1-standard-2.

Tîm di çend hûrdeman de komê diafirîne. Dema ku kom amade ye, ferman tiştek bi vî rengî derdixe peyam.

2) Di amûra rêzika fermanê de pêbaweriyan peyda bikin kubectlji bo birêvebirina komê wê bikar bînin:

gcloud container clusters get-credentials istioready

3) Naha hûn dikarin bi Kubernetes re têkilî daynin kubectl. Mînakî, fermana jêrîn dikare rewşa girêkan bibîne:

kubectl get nodes

Ferman navnîşek girêkan çêdike:

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

Têgehên Key Kubernetes

Diagram serîlêdanek li ser GKE nîşan dide:

Amadekirina serîlêdanê ji bo Istio

Berî ku hûn konteyneran li GKE bicîh bikin, têgehên sereke yên Kubernetes fêr bibin. Heke hûn dixwazin bêtir fêr bibin, di dawiya dawiyê de girêdan hene.

  • Nod û kom. Di GKE de, nod makîneyek virtual e. Li ser platformên din ên Kubernetes, nodek dikare komputerek an makîneyek virtual be. Komek berhevokek girêk e ku dikare wekî yekîneyek yekane were hesibandin ku hûn li wir serîlêdanek konteynirkirî bicîh dikin.
  • Pods. Di Kubernetes de, konteynir di nav potan de dimeşin. Podek di Kubernetes de yekîneyek nayê dabeş kirin. Pod yek an çend konteyneran digire. Hûn konteynerên serverê bicîh dikin û loadgen di polên cuda de. Dema ku di podek de çend konteynir hebin (mînak, serverek serîlêdanê û server proxy), konteynir wekî saziyek yekane têne rêve kirin û çavkaniyên pod parve dikin.
  • Deployments. Di Kubernetes de, veqetandin tiştek e ku berhevokek ji podên yeksan e. Dabeşkirin gelek kopiyên podên ku li ser girêkên komê têne belav kirin dest pê dike. Dabeşkirin bixweber li şûna podên ku têk çûne an bersiv nagirin vedigire.
  • xizmeta Kubernetes. Dema ku koda serîlêdanê li GKE dimeşîne, pêwendiya di navbera loadgen и server. Dema ku we dest bi karûbaran kir li ser makîneyek virtual an sermaseya Cloud Shell, we daxwaz jê re şand server ji hêla navnîşanê ve localhost: 8080. Piştî ku li GKE-ê têne bicîh kirin, pod li ser girêkên berdest têne darve kirin. Ji hêla xwerû ve, kontrola we li ser kîjan girêka pod li ser dimeşe tune, ji ber vê yekê hûn pods navnîşanên IP-ya daîmî tune.
    Ji bo bidestxistina navnîşana IP-yê server, hûn hewce ne ku li ser pêçana abstrakasyona torê diyar bikin. Ew çi ye xizmeta Kubernetes. Karûbarê Kubernetes ji bo komek podan xalek dawiya domdar peyda dike. Çend hene cureyên xizmetên. server bikar tîne LoadBalancer, ku ji bo têkiliyê navnîşanek IP-ya derveyî peyda dike server ji derveyî komê.
    Kubernetes di heman demê de pergalek DNS-ya çêkirî heye ku navên DNS-ê destnîşan dike (mînak, helloserver.default.cluster.local) xizmetên. Bi saya vê yekê, podên di nav komê de li navnîşanek daîmî bi podên din ên di komê re têkilî daynin. Navê DNS nikare li derveyî komê were bikar anîn, wek mînak li Cloud Shell an li ser komputerê.

Kubernetes diyar dibe

Dema ku we serîlêdanê ji çavkaniyê dimeşîne, we fermana mecbûrî bikar anî python3

server.py

Împerative tê wateya lêkerê: "vê bike."

Kubernetes bikar tîne modela ragihandinê. Ev tê vê wateyê ku em ji Kubernetes re nabêjin tam çi bikin, lê ji ber vê yekê rewşa xwestinê diyar dikin. Mînakî, Kubernetes li gorî hewcedariyê dest pê dike û podan disekine da ku pê ewle bibe ku rewşa rastîn a pergalê bi rewşa xwestî re têkildar e.

Hûn di manîfesto an pelan de rewşa xwestinê destnîşan dikin Yaml. Pelek YAML ji bo yek an çend tiştên Kubernetes taybetmendî hene.

Mînak ji bo pelê YAML heye server и loadgen. Her pelê YAML rewşa xwestinê ya cîhê bicîhkirinê û karûbarê Kubernetes diyar dike.

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

  • hevalbend cureyê objeyê nîşan dide.
  • metadata.name navê sazkirinê diyar dike.
  • Qada yekem spec ravekirina rewşa tê xwestin heye.
  • spec.replicas hejmara xwestî ya pelan destnîşan dike.
  • Beşê spec.şablon şablonek pod diyar dike. Di taybetmendiya pod de zeviyek heye wêne, ku navê wêneya ku divê ji Registry Konteynerê were derxistin diyar dike.

Xizmet bi vî rengî tê destnîşankirin:

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

  • LoadBalancer: Xerîdar daxwazan dişînin navnîşana IP-ya balansa barkirinê, ku navnîşek IP-ya domdar heye û ji derveyî komê tê gihîştin.
  • targetPort: wek tê bîra te, tîm EXPOSE 8080 в dockerfile benderan neda. Hûn portê peyda dikin 8080da ku hûn bi konteynerê re têkilî daynin server li derveyî komê. Di doza me de hellosvc.default.cluster.local:80 (kurtnav: hellosvc) bi benderê re têkildar e 8080 Navnîşanên IP yên Pod helloserver.
  • bender: Ev jimareya portê ye ku karûbarên din ên di komê de dê daxwazan bişînin.

loadgen.yaml

Object Deployment to loadgen.yaml wekî bûn server.yaml. Cûdahî ev e ku objeya bicîhkirinê beşek dihewîne şandin. Ew guherbarên jîngehê yên ku hewce ne diyar dike loadgen û ya ku we dema ku serîlêdanê ji çavkaniyê dimeşîne saz kir.

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

Carek loadgen daxwazên hatina qebûl nake, ji bo zeviyê awa destnîşan kir ClusterIP. Ev celeb navnîşek IP-ya domdar peyda dike ku karûbarên di komê de dikarin bikar bînin, lê ev navnîşana IP-yê ji xerîdarên derveyî re nayê eşkere kirin.

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

Bicihkirina konteyniran li GKE

1) Biçe pelrêça ku mînak lê ye server:

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

2) Vekirin server.yaml di edîtorek nivîsê de.
3) Navê li qadê biguherînin wêne li ser navê wêneya xweya Docker.

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

Diberdaxistin PROJECT_ID Nasnameya projeya GCP-ya we.
4) Save û girtin server.yaml.
5) Pelê YAML li Kubernetes bicîh bikin:

kubectl apply -f server.yaml

Piştî bidawîbûna serketî, ferman koda jêrîn çêdike:

deployment.apps/helloserver created
service/hellosvc created

6) Biçe pelrêça ku lê ye loadgen:

cd ../loadgen

7) Vekirin loadgen.yaml di edîtorek nivîsê de.
8) Navê li qadê biguherînin wêne li ser navê wêneya xweya Docker.

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

Diberdaxistin PROJECT_ID Nasnameya projeya GCP-ya we.
9) Save û girtin loadgen.yaml, edîtorê nivîsê bigire.
10) Pelê YAML li Kubernetes bicîh bikin:

kubectl apply -f loadgen.yaml

Piştî bidawîbûna serketî, ferman koda jêrîn çêdike:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Rewşa pelan kontrol bikin:

kubectl get pods

Ferman statûyê nîşan dide:

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

12) Têketinên serîlêdanê ji podê derxînin loadgen. Diberdaxistin POD_ID bi nasnameya ji bersiva berê.

kubectl logs loadgenerator-POD_ID

13) Navnîşanên IP-ya derveyî bistînin hellosvc:

kubectl get service

Bersiva fermanê bi vî rengî xuya dike:

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) Daxwazek bişînin hellosvc: şûna EXTERNAL_IP ji bo navnîşana IP ya derve hellosvc.

curl http://EXTERNAL_IP

Werin em li Îstio bigirin

Jixwe serîlêdanek we heye ku ji GKE re hatî şandin. loadgen dikare Kubernetes DNS bikar bîne (hellosvc:80) ji bo şandina daxwazan serverû hûn dikarin daxwazan bişînin server bi navnîşana IP ya derveyî. Her çend Kubernetes gelek taybetmendiyên xwe hene, di derheqê karûbaran de hin agahdarî winda ne:

  • Karûbar çawa têkilî dikin? Têkiliyên di navbera karûbaran de çi ne? Trafîka di navbera karûbaran de çawa diherike? Haya we jê heye loadgen daxwazan dişîne server, lê bifikirin ku hûn di derbarê serîlêdanê de tiştek nizanin. Ji bo bersiva van pirsan, werin em li navnîşa podên xebitandinê yên di GKE de binêrin.
  • Metrics. Çiqas server bersivê dide daxwazek hatî? Di çirkeyê de çend daxwaz ji hêla serverê ve têne wergirtin? Ma ew peyamên xeletiyê dide?
  • Agahiyên Ewlekariyê. Trafîka di navbera loadgen и server tenê derbas dibe HTTP an ji hêla mTLS?

Istio bersiva van pirsan dide. Ji bo kirina vê yekê, Istio proxyek sidecar bicîh dike Nûnerê di her qulikê de. Proxy Envoy hemî seyrûsefera ketin û derketinê ya berbi konteynerên serîlêdanê digire. Wateya wê ye server и loadgen bi rêya sidecar proxy Envoy bistînin, û hemî trafîkê ji loadgen к server bi navbeynkariya Envoy derbas dibe.

Têkiliyên di navbera proxeyên Envoy de tevnek karûbarê ava dikin. Mîmariya tevna karûbarê qatek kontrolê li ser Kubernetes peyda dike.

Amadekirina serîlêdanê ji bo Istio

Ji ber ku proxeyên Envoy di konteynerên xwe de dimeşin, Istio dikare li ser komek GKE were saz kirin ku hema hema ti guheztina koda serîlêdanê tune. Lê we hin kar kiriye da ku serlêdana xwe amade bikin ku ji hêla Istio ve were rêvebirin:

  • Xizmetên ji bo hemî konteyneran. Ji bo belavkirinan server и loadgen bi karûbarê Kubernetes ve girêdayî ye. Hetta loadgen, ku daxwazên hatinê nagire, karûbarek heye.
  • Portên di karûbaran de divê navên wan hebin. Her çend portên karûbarê di GKE de bênav bêne hiştin, Istio ji we hewce dike ku hûn diyar bikin navê portê li gor protokola xwe. Di pelê YAML de porta ji bo server tê gotin httpji ber ku server protokolê bikar tîne HTTP... Ger xizmetkar bikaranîn gRPC, hûn ê navê portê bikin grpc.
  • Dabeşkirin têne nîşankirin. Ji ber vê yekê, hûn dikarin taybetmendiyên rêveberiya trafîkê ya Istio bikar bînin, wekî dabeşkirina seyrûseferê di navbera guhertoyên heman karûbarê de.

Sazkirina Istio

Du awayên sazkirina Istio hene. Kanîn Istio li ser dirêjkirina GKE çalak bike an guhertoya çavkaniya vekirî ya Istio saz bikin li ser komê. Bi Istio re li ser GKE, hûn dikarin bi hêsanî sazkirin û nûvekirinên Istio li seranserê çerxa jiyana koma GKE-yê bi rê ve bibin. Ger hûn guhertoya herî dawî ya Istio an bêtir kontrolê li ser veavakirina panela kontrola Istio-ya xwe dixwazin, li şûna Istio li ser dirêjkirina GKE guhertoya çavkaniya vekirî saz bikin. Ji bo ku li ser nêzîkbûnê biryar bidin, gotarê bixwînin Ma ez Istio li ser GKE hewce dikim?.

Vebijêrkek hilbijêrin, rêberê guncan binirxînin, û rêwerzan bişopînin da ku Istio li ser koma xwe saz bikin. Heke hûn dixwazin Istio bi serîlêdana xweya nû ve hatî saz kirin bikar bînin, pêkanîna sidecar çalak bike ji bo navan destçûnî.

Paqijkirin

Ji bo ku hûn ji bo çavkaniyên ku we di vê dersê de bikar anîne li hesabê xweya Google Cloud Platformê neyên barkirin, piştî ku we Istio saz kir û bi serîlêdana nimûneyê re lîstin komika konteynerê jêbirin. Ev ê hemî çavkaniyên komê, wekî nimûneyên hesabkirinê, dîskan, û çavkaniyên torê rake.

Çi ye?

Source: www.habr.com

Add a comment