Ilungiselela isicelo se-Istio

Ilungiselela isicelo se-Istio

I-Istio iyithuluzi elikahle lokuxhuma, ukuvikela nokuqapha izinhlelo zokusebenza ezisabalalisiwe. I-Istio isebenzisa ubuchwepheshe obuhlukahlukene ukuze iqhube futhi iphathe isofthiwe esikalini, okuhlanganisa iziqukathi ukupakisha ikhodi yohlelo lokusebenza nokuncika ukuze kusetshenziswe, kanye ne-Kubernetes yokuphatha lezo ziqukathi. Ngakho-ke, ukuze usebenze ne-Istio kufanele wazi ukuthi uhlelo lokusebenza olunamasevisi amaningi asekelwe kulobu buchwepheshe lusebenza kanjani ngaphandle Istio. Uma lawa mathuluzi nemiqondo sekuvele ujwayelene nawe, zizwe ukhululekile ukweqa lesi sifundo futhi uye ngqo esigabeni Ukufaka i-Istio ku-Google Kubernetes Engine (GKE) noma ukufaka isandiso I-Istio ku-GKE.

Lona umhlahlandlela wesinyathelo ngesinyathelo lapho sizohamba kuyo yonke inqubo kusukela kukhodi yomthombo kuya esitsheni se-GKE ukuze uthole ukuqonda okuyisisekelo kwalezi zobuchwepheshe ngesibonelo. Uzobona nokuthi i-Istio iwasebenzisa kanjani amandla alobu buchwepheshe. Lokhu kuthatha ukuthi awazi lutho ngeziqukathi, i-Kubernetes, izinsiza, noma i-Istio.

Imisebenzi

Kulesi sifundo, uzoqedela le misebenzi elandelayo:

  1. Ukufunda uhlelo lokusebenza olulula lomhlaba olunamasevisi amaningi.
  2. Qalisa uhlelo lokusebenza kusuka kukhodi yomthombo.
  3. Ukupakisha uhlelo ezitsheni.
  4. Ukudala iqoqo le-Kubernetes.
  5. Ukukhipha iziqukathi zibe yiqoqo.

Ngaphambi kokuthi uqale

Landela imiyalelo ukuze unike amandla i-Kubernetes Engine API:

  1. Iya ku Ikhasi le-Kubernetes Engine kukhonsoli ye-Google Cloud Platform.
  2. Dala noma khetha iphrojekthi.
  3. Linda kuze kunikwe amandla i-API namasevisi ahlobene. Lokhu kungase kuthathe amaminithi ambalwa.
  4. Qiniseka ukuthi inkokhelo isethiwe kuphrojekthi yakho ye-Google Cloud Platform. Funda ukuthi ungavumela kanjani ukukhokhisa.

Kulesi sifundo, ungasebenzisa i-Cloud Shell, elungiselela umshini obonakalayo I-g1-encane ku-Google Compute Engine nge-Debian-based Linux, noma i-Linux noma ikhompyutha ye-macOS.

Inketho A: Ukusebenzisa i-Cloud Shell

Izinzuzo zokusebenzisa i-Cloud Shell:

  • Python 2 kanye nePython 3 izindawo zokuthuthukisa (kuhlanganise ubuhle) zilungiselelwe ngokugcwele.
  • Amathuluzi Womugqa Womyalo gcloud, i-docker, Git ΠΈ kubctl, esizozisebenzisa sezivele zifakiwe.
  • Unokuningi ongakhetha kukho abahleli bombhalo:
    1. Umhleli wekhodi, evula ngesithonjana sokuhlela phezulu kwewindi le-Cloud Shell.
    2. I-Emacs, i-Vim noma i-Nano, evula kumugqa womyalo ku-Cloud Shell.

Ukusebenzisa Igobolondo Lefu:

  1. Iya kukhonsoli ye-GCP.
  2. Chofoza inkinobho Yenza kusebenze i-Cloud Shell (Sebenzisa i-Cloud Shell) phezulu kwewindi lekhonsoli ye-GCP.

Ilungiselela isicelo se-Istio

Engxenyeni engezansi I-GCP console Iseshini ye-Cloud Shell enomugqa womyalo izovuleka efasiteleni elisha.

Ilungiselela isicelo se-Istio

Inketho B: Ukusebenzisa Amathuluzi Womugqa Womyalo Endaweni

Uma uzobe usebenza kukhompyutha esebenzisa i-Linux noma i-macOS, uzodinga ukulungisa nokufaka izinto ezilandelayo:

  1. Enza ngendlela oyifisayo Indawo yokuthuthukiswa kwePython 3 kanye nePython 2.

  2. Faka i-Cloud SDK ngethuluzi lomugqa womyalo gcloud.

  3. Faka kubctl - Ithuluzi lomugqa womyalo lokusebenza nalo Kubernetes.

    gcloud components install kubectl

  4. Faka I-Docker Community Edition (CE). Uzosebenzisa ithuluzi lomugqa womyalo i-dockerukudala izithombe zesitsha sohlelo lokusebenza lwesampula.

  5. Faka ithuluzi Ukulawulwa kwenguqulo ye-Gitukuthola uhlelo lokusebenza lwesampula ku-GitHub.

Landa ikhodi yesampula

  1. Landa ikhodi yomthombo helloserver:

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

  2. Iya kumkhombandlela wekhodi yesibonelo:

    cd istio-samples/sample-apps/helloserver

Ukuhlola uhlelo lokusebenza olunamasevisi amaningi

Uhlelo lokusebenza lwesampula lubhalwe ngePython futhi luqukethe izingxenye ezimbili ezisebenzisanayo I-REST:

  • Iseva: iseva elula enephoyinti elilodwa lokugcina THOLA, /, ephrinta "hello world" kukhonsoli.
  • loadgen: iskripthi esithumela ithrafikhi ku Iseva, ngenombolo elungisekayo yezicelo ngomzuzwana.

Ilungiselela isicelo se-Istio

Ukuqalisa uhlelo lokusebenza kusuka kukhodi yomthombo

Ukuze uhlole uhlelo lokusebenza oluyisampula, lusebenzise ku-Cloud Shell noma kukhompuyutha yakho.
1) Kukhathalogi istio-samples/sample-apps/helloserver gijima Iseva:

python3 server/server.py

Ekuqaliseni Iseva okulandelayo kuyaboniswa:

INFO:root:Starting server...

2) Vula elinye iwindi letheminali ukuthumela izicelo kulo Iseva. Uma usebenzisa i-Cloud Shell, chofoza isithonjana engeza ukuze uvule enye iseshini.
3) Thumela isicelo ku Iseva:

curl http://localhost:8080

iseva iyaphendula:

Hello World!

4) Kusuka kunkomba lapho ulande khona ikhodi yesampula, hamba kumkhombandlela oqukethe loadgen:

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

5) Dala okuguquguqukayo kwemvelo okulandelayo:

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

6) Yethula ubuhle:

virtualenv --python python3 env

7) Yenza kusebenze indawo ebonakalayo:

source env/bin/activate

8) Setha izidingo ze loadgen:

pip3 install -r requirements.txt

9) Yethula loadgen:

python3 loadgen.py

Ekuqaliseni loadgen ibonisa okuthile okufana nomlayezo olandelayo:

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

Kwelinye iwindi letheminali Iseva ikhipha imilayezo elandelayo kukhonsoli:

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

Ngokombono wenethiwekhi, lonke uhlelo lokusebenza lusebenza kumsingathi oyedwa (ikhompyutha yendawo noma umshini obonakalayo we-Cloud Shell). Ngakho-ke ungasebenzisa localhostukuthumela izicelo ku Iseva.
10) Ukumisa loadgen ΠΈ Iseva, ngena Ctrl-c kuwo wonke amafasitela etheminali.
11) Efasiteleni letheminali loadgen vala indawo ebonakalayo:

deactivate

Ukupakisha isicelo ezitsheni

Ukuze usebenzise uhlelo ku-GKE, udinga ukupakisha uhlelo lokusebenza lwesibonelo βˆ’ Iseva ΠΈ loadgen - v iziqukathi. Isiqukathi siyindlela yokupakisha uhlelo lokusebenza ukuze luhlukanise nemvelo yalo.

Ukupakisha uhlelo lokusebenza esitsheni, udinga I-Dockerfile. I-Dockerfile yifayela lombhalo elichaza imiyalo yokwakha ikhodi yomthombo yohlelo lokusebenza nokuncika kwayo kulo Isithombe se-Docker. Uma sesakhiwe, ulayisha isithombe kubhalisi yesiqukathi esifana ne-Docker Hub noma Irejista Yesitsha.

Isibonelo sesivele sinaso I-Dockerfile ngoba Iseva ΠΈ loadgen nayo yonke imiyalo edingekayo yokuqoqa izithombe. Ngezansi - I-Dockerfile ngoba Iseva:

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

  • Ithimba KUSUKA ku-python:3-slim njengesisekelo utshela uDocker ukuthi asebenzise okwakamuva Isithombe se-Python 3 njengesisekelo.
  • Ithimba KOPISHA. . ikopisha amafayela omthombo kumkhombandlela osebenzayo wamanje (kithi kuphela iseva.py) ohlelweni lwefayela lesiqukathi.
  • ENTRYPOINT ichaza umyalo osetshenziswa ukuqalisa isiqukathi. Esimweni sethu, lo myalo ucishe ufane nalowo obuwusebenzisa iseva.py kusuka kukhodi yomthombo.
  • Ithimba VEZA ikhombisa lokho Iseva ilinda idatha ngembobo 8080. Leli qembu alikho inikeza amachweba. Lolu uhlobo oluthile lwemibhalo edingekayo ukuze uvule ichweba 8080 lapho uqala isitsha.

Ilungiselela ukufaka isicelo sakho esitsheni

1) Setha okuguquguqukayo kwemvelo okulandelayo. Faka esikhundleni PROJECT_ID ku-ID yakho yephrojekthi ye-GCP.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Ukusebenzisa amanani PROJECT_ID ΠΈ GCR_REPO umaka isithombe se-Docker uma usakha bese usiphushela kusibhalisi sesitsha esiyimfihlo.

2) Setha iphrojekthi ye-GCP ezenzakalelayo yethuluzi lomugqa womyalo gcloud.

gcloud config set project $PROJECT_ID

3) Setha indawo ezenzakalelayo yethuluzi lomugqa womyalo gcloud.

gcloud config set compute/zone us-central1-b

4) Qiniseka ukuthi isevisi Yokubhalisa Iziqukathi ivuliwe kuphrojekthi ye-GCP.

gcloud services enable containerregistry.googleapis.com

Iseva yokufaka iziqukathi

  1. Iya kumkhombandlela lapho isibonelo sitholakala khona Iseva:

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

  2. Hlanganisa isithombe usebenzisa I-Dockerfile kanye nokuguquguquka kwendawo okuchaze ngaphambilini:

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

Ipharamitha -t imele ithegi ye-Docker. Leli igama lesithombe osisebenzisayo uma uphakela isiqukathi.

  1. Layisha isithombe Kubhalisi Yesitsha:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Ukufakwa kwesitsha se-loadgen

1) Iya kumkhombandlela lapho isibonelo sikhona loadgen:

cd ../loadgen

2) Qoqa isithombe:

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

3) Layisha isithombe kuRegistry Container:

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

Buka uhlu lwezithombe

Buyekeza uhlu lwezithombe endaweni yokugcina futhi uqinisekise ukuthi izithombe zilayishiwe:

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

Umyalo ubonisa amagama ezithombe ezisanda kulayishwa:

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

Ukudala iqoqo le-GKE.

Lezi ziqukathi zingase zisetshenziswe emshinini obonakalayo we-Cloud Shell noma kukhompuyutha enomyalo i-docker igijima. Kepha endaweni yokukhiqiza, udinga indlela yokuhlela iziqukathi ezimaphakathi. Isibonelo, udinga isistimu eqinisekisa ukuthi iziqukathi zihlala zisebenza, futhi udinga indlela yokukhuphula nokuphenya izimo zeziqukathi ezengeziwe uma ithrafikhi inyuka.

Ukuze usebenzise izinhlelo zokusebenza ezifakwe iziqukathi ongazisebenzisa G.K.E.. I-GKE iyinkundla ye-orchestration yesiqukathi ehlanganisa imishini ebonakalayo ibe yiqoqo. Umshini ngamunye obonakalayo ubizwa ngokuthi i-node. Amaqoqo e-GKE asekelwe ohlelweni oluvulekile lokuphatha iqoqo le-Kubernetes. I-Kubernetes ihlinzeka ngezindlela zokusebenzelana neqoqo.

Ukudala iqoqo le-GKE:

1) Dala iqoqo:

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

Ithimba gcloud idala iqoqo le-istioready kuphrojekthi ye-GCP kanye nendawo yokuzenzakalelayo oyishilo. Ukuze usebenzise i-Istio, sincoma ukuthi okungenani ube namanodi angu-4 nomshini obonakalayo n1-okujwayelekile-2.

Iqembu lidala iqoqo emizuzwini embalwa. Lapho iqoqo selilungile, umyalo ukhipha okuthile okufana nalokhu сообщСниС.

2) Nikeza ngemininingwane kuthuluzi lomugqa womyalo kubctlukuyisebenzisela ukuphatha iqoqo:

gcloud container clusters get-credentials istioready

3) Manje usungakwazi ukuxhumana noKubernetes nge kubctl. Isibonelo, umyalo olandelayo ungathola isimo samanodi:

kubectl get nodes

Umyalo ukhiqiza uhlu lwama-node:

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

I-Kubernetes Key Concepts

Umdwebo ubonisa uhlelo lokusebenza ku-GKE:

Ilungiselela isicelo se-Istio

Ngaphambi kokuthi usebenzise iziqukathi ku-GKE, funda imiqondo ebalulekile ye-Kubernetes. Kukhona izixhumanisi ekugcineni uma ufuna ukufunda okwengeziwe.

  • Ama-Nodes namaqoqo. Ku-GKE, i-node ingumshini obonakalayo. Kwamanye amapulatifomu e-Kubernetes, i-node ingaba ikhompuyutha noma umshini obonakalayo. Iqoqo iqoqo lamanodi angabhekwa njengeyunithi eyodwa lapho uthumela khona uhlelo lokusebenza olufakwe esitsheni.
  • Amaphodi. E-Kubernetes, iziqukathi zigijima ngama-pods. I-Pod eku-Kubernetes iyunithi engenakuhlukaniswa. I-Pod ibamba isiqukathi esisodwa noma ngaphezulu. Uhambisa iziqukathi zeseva futhi loadgen emabhokisini ahlukene. Lapho kuneziqukathi eziningana ku-pod (isibonelo, iseva yohlelo lokusebenza kanye iseva elibamba), iziqukathi ziphathwa njengebhizinisi elilodwa futhi zabelane ngezinsiza ze-pod.
  • Ukuthunyelwa. Ku-Kubernetes, ukuthunyelwa kuyinto eyiqoqo lama-pods afanayo. Ukuthunyelwa kwethula izifaniso eziningi zama-pods asakazwa kuwo wonke ama-cluster node. Ukuthunyelwa kungena esikhundleni se-pods ehlulekile noma engasabeli.
  • Isevisi ye-Kubernetes. Lapho usebenzisa ikhodi yohlelo ku-GKE, ukuxhumana phakathi loadgen ΠΈ Iseva. Lapho uqala izinsizakalo emshinini obonakalayo we-Cloud Shell noma ideskithophu, uthumele izicelo ku- Iseva at localhost: i-8080. Uma sekuthunyelwe ku-GKE, ama-pods akhishwa kuma-node atholakalayo. Ngokuzenzakalelayo, awukwazi ukulawula ukuthi iyiphi i-node esebenza kuyo, ngakho nawe pods awekho amakheli e-IP angunaphakade.
    Ukuze uthole ikheli le-IP le Iseva, udinga ukuchaza ukukhishwa kwenethiwekhi ngaphezulu kwama-pods. Yilokho okuyikhona Isevisi ye-Kubernetes. Isevisi ye-Kubernetes inikeza isiphetho esiqhubekayo sesethi yama-pods. Kukhona abambalwa izinhlobo zezinsizakalo. Iseva isebenzisa I-LoadBalancer, ehlinzeka ngekheli le-IP langaphandle ongaxhumana nalo Iseva kusukela ngaphandle kweqoqo.
    I-Kubernetes futhi inohlelo lwe-DNS olwakhelwe ngaphakathi olunikeza amagama e-DNS (isibonelo, helloserver.default.cluster.local) amasevisi. Ngenxa yalokhu, ama-pods ngaphakathi kweqoqo axhumana namanye ama-pods kuqoqo ekhelini elihlala njalo. Igama le-DNS alinakusetshenziswa ngaphandle kweqoqo, njengaku-Cloud Shell noma kukhompuyutha.

U-Kubernetes uyabonisa

Lapho uqalisa uhlelo lokusebenza emthonjeni, usebenzise umyalo obalulekile i-python3

iseva.py

Impoqo isho isenzo: β€œyenza lokhu.”

Kubernetes isebenzisa imodeli yesimemezelo. Lokhu kusho ukuthi asizitsheli uKubernetes ukuthi enzeni, kodwa sichaza isimo esifiswayo. Isibonelo, i-Kubernetes iqala futhi imise ama-pods njengoba kudingeka ukuze kugcinwe isimo sangempela sohlelo sihambisana nesimo esifiswayo.

Ukhombisa isimo osifunayo kuma-manifest noma amafayela I-YAML. Ifayela le-YAML liqukethe ukucaciswa kwento eyodwa noma ngaphezulu ye-Kubernetes.

Isibonelo siqukethe ifayela le-YAML le Iseva ΠΈ loadgen. Ifayela ngalinye le-YAML licacisa isimo esifiswayo sento yokuphakelwa kanye nesevisi ye-Kubernetes.

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

  • uhlobo ikhombisa uhlobo lwento.
  • imethadatha.name icacisa igama lokusebenzisa.
  • Inkambu yokuqala ucacisa iqukethe incazelo yesimo osifunayo.
  • spec.replicas ikhombisa inani elifunekayo lamaphodi.
  • Isigaba spec.template ichaza isifanekiso se-pod. Kukhona inkambu ekucacisweni kwe-pod isithombe, ecacisa igama lesithombe esidinga ukukhishwa Kubhalisi Lwesitsha.

Isevisi ichazwa kanje:

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

  • I-LoadBalancer: Amaklayenti athumela izicelo ekhelini le-IP lesilinganisi somthwalo, elinekheli le-IP eliqhubekayo futhi elifinyeleleka ngaphandle kweqoqo.
  • targetPort: njengoba ukhumbula, iqembu VEZA 8080 Π² I-Dockerfile ayizange inikeze amachweba. Uhlinzeka ngembobo 8080ukuze ukwazi ukuxhumana nesitsha Iseva ngaphandle kweqoqo. Esimeni sethu hellosvc.default.cluster.local:80 (igama elifushane: hellosvc) ihambisana nechweba 8080 Amakheli e-Pod IP helloserver.
  • Imbobo: Lena inombolo yembobo lapho ezinye izinsiza kuqoqo zizothumela khona izicelo.

loadgen.yaml

Into yokuthunyelwa kokuthi loadgen.yaml kufana ne iseva.yaml. Umehluko ukuthi into yokuthunyelwa iqukethe isigaba env. Ichaza okuguquguqukayo kwemvelo okudingekayo loadgen futhi oyifakile ngenkathi usebenzisa uhlelo kusuka emthonjeni.

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

Kanye loadgen ayizamukeli izicelo ezingenayo, zenkundla uhlobo kukhonjisiwe I-ClusterIP. Lolu hlobo luhlinzeka ngekheli lasesizindeni se-inthanethi eziphikelelayo amasevisi akuqoqo angalisebenzisa, kodwa leli kheli le-IP alivezwanga kumaklayenti angaphandle.

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

Ukuthumela Iziqukathi ku-GKE

1) Iya kumkhombandlela lapho isibonelo sikhona Iseva:

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

2) Vula iseva.yaml kusihleli sombhalo.
3) Faka esikhundleni igama ensimini isithombe egameni lesithombe sakho se-Docker.

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

Faka esikhundleni PROJECT_ID ku-ID yakho yephrojekthi ye-GCP.
4) Londoloza futhi uvale iseva.yaml.
5) Hambisa ifayela le-YAML ku-Kubernetes:

kubectl apply -f server.yaml

Lapho usuqedile ngempumelelo, umyalo ukhiqiza ikhodi elandelayo:

deployment.apps/helloserver created
service/hellosvc created

6) Yiya lwemibhalo lapho loadgen:

cd ../loadgen

7) Vula loadgen.yaml kusihleli sombhalo.
8) Faka esikhundleni igama ensimini isithombe egameni lesithombe sakho se-Docker.

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

Faka esikhundleni PROJECT_ID ku-ID yakho yephrojekthi ye-GCP.
9) Londoloza futhi uvale loadgen.yaml, vala isihleli sombhalo.
10) Hambisa ifayela le-YAML ku-Kubernetes:

kubectl apply -f loadgen.yaml

Lapho usuqedile ngempumelelo, umyalo ukhiqiza ikhodi elandelayo:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Hlola isimo se-pods:

kubectl get pods

Umyalo ubonisa isimo:

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

12) Khipha izingodo zohlelo lokusebenza ku-pod loadgen. Faka esikhundleni POD_ID kusihlonzi esivela empendulweni edlule.

kubectl logs loadgenerator-POD_ID

13) Thola amakheli e-IP angaphandle hellosvc:

kubectl get service

Impendulo yomyalo ibukeka kanjena:

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) Thumela isicelo ku hellosvc: buyisela EXTERNAL_IP ekhelini le-IP langaphandle hellosvc.

curl http://EXTERNAL_IP

Ake sithathe i-Istio

Usuvele unalo uhlelo lokusebenza oluthunyelwe ku-GKE. loadgen ungasebenzisa i-Kubernetes DNS (sawubona:80) ukuthumela izicelo ku Isevafuthi ungathumela izicelo ku Iseva ngekheli le-IP langaphandle. Yize i-Kubernetes inezici eziningi, kunolunye ulwazi olushodayo mayelana nezinsizakalo:

  • Amasevisi asebenzisana kanjani? Buyini ubudlelwano phakathi kwamasevisi? Ihamba kanjani ithrafikhi phakathi kwezinsizakalo? Ingabe uyakwazi lokho loadgen ithumela izicelo ku Iseva, kodwa ake ucabange ukuthi awazi lutho mayelana nohlelo lokusebenza. Ukuze uphendule le mibuzo, ake sibheke uhlu lwama-pod asebenzayo ku-GKE.
  • Amamethrikhi. Isikhathi eside kangakanani Iseva uphendula esicelweni esingenayo? Zingaki izicelo ngomzuzwana ezitholwa iseva? Ingabe inikeza imilayezo yephutha?
  • Ulwazi Lokuphepha. Ithrafikhi phakathi loadgen ΠΈ Iseva uyadlula nje HTTP noma nge mTLS?

I-Istio iphendula yonke le mibuzo. Ukwenza lokhu, i-Istio ibeka ummeleli wemoto eseceleni isithunywa kuphod ngayinye. Ummeleli Wezithunywa unqamula yonke ithrafikhi engenayo nephumayo eziqukathi zezicelo. Kusho ukuthi Iseva ΠΈ loadgen thola nge-sidecar proxy Envoy, nayo yonke ithrafikhi evela loadgen ΠΊ Iseva idlula kummeli wenxusa.

Ukuxhumana phakathi kwama-proxies ezithunywa kwenza i-service mesh. Isakhiwo se-mesh yesevisi sinikeza ungqimba lokulawula phezu kwe-Kubernetes.

Ilungiselela isicelo se-Istio

Njengoba ama-proxies Ezithunywa egijima ezitsheni zawo, i-Istio ingafakwa phezu kweqoqo le-GKE cishe ngaphandle kwezinguquko kukhodi yesicelo. Kodwa wenze umsebenzi othile ukuze isicelo sakho silungele ukuphathwa yi-Istio:

  • Izinsizakalo zazo zonke iziqukathi. Ekusetshenzisweni Iseva ΠΈ loadgen eboshelwe enkonzweni ye-Kubernetes. Ngisho loadgen, engatholi izicelo ezingenayo, kukhona isevisi.
  • Amachweba ezinsizeni kufanele abe namagama. Nakuba izimbobo zesevisi zingashiywa zingaqanjwanga ku-GKE, i-Istio idinga ukuthi ucacise igama lembobo ngokuhambisana nephrothokholi yakhe. Kufayela le-YAML imbobo ye Iseva kubizwa httpngoba iseva isebenzisa umthetho olandelwayo HTTP. Uma service esetshenzisiwe gRPC, ungaqamba itheku grpc.
  • Ukuthunyelwa kumakiwe. Ngakho-ke, ungasebenzisa izici zokulawulwa kwethrafikhi ye-Istio, njengokuhlukanisa ithrafikhi phakathi kwezinguqulo zesevisi efanayo.

Ifaka i-Istio

Kunezindlela ezimbili zokufaka i-Istio. Angakwazi vumela i-Istio kusandiso se-GKE noma faka inguqulo yomthombo ovulekile we-Istio kuqoqo. Nge-Istio ku-GKE, ungakwazi ukuphatha kalula ukufaka nokuthuthukiswa kwe-Istio kuwo wonke umjikelezo wempilo weqoqo le-GKE. Uma ufuna inguqulo yakamuva ye-Istio noma ukulawula okwengeziwe kokucushwa kwephaneli yokulawula ye-Istio, faka inguqulo yomthombo ovulekile esikhundleni se-Istio kusandiso se-GKE. Ukuze unqume indlela yokwenza, funda isihloko Ingabe ngidinga i-Istio ku-GKE?.

Khetha inketho, buyekeza umhlahlandlela ofanele, bese ulandela imiyalelo yokufaka i-Istio kuqoqo lakho. Uma ufuna ukusebenzisa i-Istio ngohlelo lwakho lokusebenza olusanda kuthunyelwa, vumela ukusetshenziswa kwe-sidecar okwesikhala samagama ezenzakalelayo.

Ukuhlanza

Ukuze ugweme ukukhokhiswa ku-akhawunti yakho ye-Google Cloud Platform ngezisetshenziswa ozisebenzisile kulesi sifundo, susa iqoqo leziqukathi uma usufake i-Istio futhi wadlala ngesampula yohlelo lokusebenza. Lokhu kuzosusa zonke izinsiza zeqoqo, njengezimo zokubala, amadiski, nezisetshenziswa zenethiwekhi.

Yini okulandelayo?

Source: www.habr.com

Engeza amazwana