Ukulungiselela isicelo se-Istio

Ukulungiselela isicelo se-Istio

I-Istio sisixhobo esifanelekileyo sokudibanisa, ukukhusela kunye nokubeka iliso kwizicelo ezisasazwayo. I-Istio isebenzisa ubuchwephesha obuhlukeneyo ukuqhuba nokulawula isofthiwe kwinqanaba, kubandakanywa izitya zokupakisha ikhowudi yesicelo kunye nokuxhomekeka kokuthunyelwa, kunye ne-Kubernetes ukulawula ezo zikhongozeli. Ke ngoko, ukusebenza ne-Istio kufuneka wazi ukuba isicelo esineenkonzo ezininzi ezisekwe kobu buchwepheshe sisebenza njani ngaphandle Istio. Ukuba ezi zixhobo kunye neengqikelelo sele ziqhelekile kuwe, zive ukhululekile ukutsiba esi sifundo kwaye uye ngqo kwicandelo Ukufakela i-Istio kwi-Google Kubernetes Engine (GKE) okanye ukufaka ulwandiso Istio kwi-GKE.

Esi sikhokelo sesinyathelo-nge-nyathelo apho siya kuhamba kuyo yonke inkqubo ukusuka kwikhowudi yomthombo ukuya kwi-container ye-GKE ukukunika ukuqonda okusisiseko kwezi teknoloji ngomzekelo. Uya kubona kwakhona ukuba i-Istio iwasebenzisa njani amandla obu buchwepheshe. Oku kuthatha ukuba awazi nto malunga nezikhongozeli, i-Kubernetes, i-meshes zenkonzo, okanye i-Istio.

Iinjongo

Kule tutorial, uya kugqiba le misebenzi ilandelayo:

  1. Ukufunda usetyenziso olulula lwehlabathi molo ngeenkonzo ezininzi.
  2. Sebenzisa usetyenziso olusuka kwikhowudi yemvelaphi.
  3. Ukupakishwa kwesicelo kwizikhongozeli.
  4. Ukudala iqela leKubernetes.
  5. Ukusasaza izikhongozeli kwiqela.

Ngaphambi kokuba uqale

Landela imiyalelo ukwenza iKubernetes Engine API:

  1. Yiya ku Iphepha leNjini yeKubernetes kwi-Google Cloud Platform console.
  2. Yenza okanye ukhethe iprojekthi.
  3. Linda de i-API kunye neenkonzo ezinxulumeneyo zenziwe. Oku kungathatha imizuzu embalwa.
  4. Qinisekisa ukuba ityala limiselwe iprojekthi yakho yeQonga leLifu likaGoogle. Funda indlela yokuvula intlawulo.

Kule tutorial, ungasebenzisa i-Cloud Shell, elungiselela umatshini obonakalayo I-g1-encinci kwi-Google Compute Engine ngeLinux esekwe kwiDebian, okanye iLinux okanye ikhompyuter yeMacOS.

Ukhetho A: Ukusebenzisa i-Cloud Shell

Izibonelelo zokusebenzisa i-Cloud Shell:

  • Python 2 kunye nePython 3 iindawo zophuhliso (kubandakanywa nguyen) ziqwalaselwe ngokupheleleyo.
  • Izixhobo zomgca womyalelo gcloud, docker, yiya ΠΈ kubectl, esiza kuyisebenzisa sele ifakiwe.
  • Uneqela lokukhetha kuzo abahleli bombhalo:
    1. Umhleli wekhowudi, evula nge-icon yokuhlela phezulu kwi-Cloud Shell window.
    2. I-Emacs, iVim okanye iNano, evula kumgca womyalelo kwi-Cloud Shell.

Ukusebenzisa Cloud Shell:

  1. Yiya kwikhonsoli ye-GCP.
  2. Cofa iqhosha Vula i-Cloud Shell (Vula i-Cloud Shell) phezulu kwefestile ye-console ye-GCP.

Ukulungiselela isicelo se-Istio

Kwinxalenye esezantsi Ikhonsoli ye-GCP Iseshini ye-Cloud Shell enomgca womyalelo iya kuvula kwifestile entsha.

Ukulungiselela isicelo se-Istio

Ukhetho B: Ukusebenzisa iZixhobo zoMyalelo woMyalelo ekuhlaleni

Ukuba uya kusebenza kwikhompyuter eqhuba iLinux okanye iMacOS, kuya kufuneka uqwalasele kwaye ufake ezi zinto zilandelayo:

  1. Yenza ngokwezifiso I-Python 3 kunye ne-Python 2 yendawo yophuhliso.

  2. Faka Cloud SDK ngesixhobo somgca womyalelo gcloud.

  3. Faka ifayile kubectl - isixhobo somgca womyalelo sokusebenza kunye Kubernetes.

    gcloud components install kubectl

  4. Faka ifayile Ushicilelo loluntu lwaseDocker (CE). Uya kusebenzisa isixhobo somgca womyalelo dockerukwenza imifanekiso yesikhongozeli yesicelo sesampulu.

  5. Faka isixhobo Ulawulo lwenguqulelo yeGitukufumana isampulu yesicelo kwiGitHub.

Khuphela ikhowudi yesampuli

  1. Khuphela ikhowudi yemvelaphi moloserver:

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

  2. Yiya kuluhlu lwekhowudi yomzekelo:

    cd istio-samples/sample-apps/helloserver

Ukuphonononga usetyenziso oluneenkonzo ezininzi

Isampula yesicelo ibhalwe kwiPython kwaye iqulethwe ngamacandelo amabini asebenzisanayo ABANYE:

  • Mncedisi: iseva elula enesiphelo esinye GET, /, eprinta "hello world" kwi console.
  • loadgen: umbhalo othumela itrafikhi kuyo Mncedisi, ngenani eliqwalaselweyo lezicelo ngomzuzwana.

Ukulungiselela isicelo se-Istio

Ukwenza isicelo kwikhowudi yemvelaphi

Ukuphonononga isampulu yesicelo, yiqhube kwi-Cloud Shell okanye kwikhompyuter yakho.
1) Kwikhathalogu istio-isampulu/isampulu-apps/helloserver baleka Mncedisi:

python3 server/server.py

Kwindlela yokuqala Mncedisi oku kulandelayo kubonisiwe:

INFO:root:Starting server...

2) Vula enye i-terminal window ukuthumela izicelo kuyo Mncedisi. Ukuba usebenzisa i-Cloud Shell, cofa i icon yokongeza ukuvula enye iseshoni.
3) Thumela isicelo ku Mncedisi:

curl http://localhost:8080

iimpendulo zeseva:

Hello World!

4) Kuluhlu apho ukhuphele khona ikhowudi yesampuli, yiya kuluhlu oluqulathe loadgen:

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

5) Yenza oku kuguquguquka kwemeko-bume kulandelayo:

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

6) Qalisa nguyen:

virtualenv --python python3 env

7) Vula okusingqongileyo okubonakalayo:

source env/bin/activate

8) Misela iimfuno loadgen:

pip3 install -r requirements.txt

9) Qalisa loadgen:

python3 loadgen.py

Kwindlela yokuqala loadgen ibonisa into efana nalo myalezo ulandelayo:

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

Kwenye i-terminal window Mncedisi ikhupha le miyalezo ilandelayo kwi console:

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

Ukusuka kumbono wothungelwano, isicelo siphela sisebenza kwinginginya enye (ikhompyuter yendawo okanye umatshini we-Cloud Shell). Ngoko ungasebenzisa localhostukuthumela izicelo ku Mncedisi.
10) Ukuyeka loadgen ΠΈ Mncedisi, ngena Ctrl-c kuzo zonke iifestile zeterminal.
11) Kwifestile ye-terminal loadgen vala imo engqongileyo yenyani:

deactivate

Ukupakishwa kwesicelo kwizikhongozeli

Ukusebenzisa usetyenziso kwi-GKE, kufuneka upakishe umzekelo wesicelo βˆ’ Mncedisi ΠΈ loadgen - ngaphakathi izikhongozeli. Isikhongozeli yindlela yokupakisha usetyenziso lokuyahlula kwindawo yayo.

Ukupakisha usetyenziso kwisikhongozeli, uyafuna dockerfile. dockerfile yifayile yokubhaliweyo echaza imiyalelo yokwakha ikhowudi yemvelaphi yesicelo kunye nokuxhomekeka kuyo Umfanekiso weDocker. Nje ukuba yakhiwe, ulayisha umfanekiso kwirejista yesikhongozeli efana neDocker Hub okanye Ubhaliso lwesikhongozeli.

Umzekelo sele unawo dockerfile kuba Mncedisi ΠΈ loadgen nayo yonke imiyalelo eyimfuneko ukuqokelela imifanekiso. Ngezantsi - dockerfile kuba Mncedisi:

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

  • Iqela UKUSUKA kwipython:3-slim njengesiseko uxelela uDocker ukuba asebenzise okwamva nje Umfanekiso wePython 3 njengesiseko.
  • Iqela IKOPIA. . ikhuphela iifayile zemvelaphi kulawulo lwangoku olusebenzayo (kwimeko yethu kuphela iseva.py) kwisixokelelwano sefayile yesikhongozeli.
  • INDAWO YOKUNGENA ichaza umyalelo osetyenziswa ukuqalisa isikhongozeli. Kwimeko yethu, lo myalelo uphantse wafana nalowo ubuwusebenzisa iseva.py ukusuka kwikhowudi yemvelaphi.
  • Iqela BONISA ibonisa ukuba Mncedisi ilinda idata ngezibuko 8080. Eli qela alikho inikeza amazibuko. Olu luhlobo oluthile loxwebhu olufunekayo ukuvula izibuko 8080 xa uqala isikhongozeli.

Ukulungiselela ukufaka isicelo sakho kwisingxobo

1) Seta oku kuguquguquka kwemo engqongileyo kulandelayo. Faka enye indawo PROJECT_ID kwi-ID yeprojekthi yakho ye-GCP.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Ukusebenzisa amaxabiso PROJECT_ID ΠΈ GCR_REPO umaka umfanekiso weDocker xa uyakha kwaye uwutyhalele kwiRejistri yoMgqomo wabucala.

2) Cwangcisa iprojekthi ye-GCP engagqibekanga yesixhobo somgca womyalelo gcloud.

gcloud config set project $PROJECT_ID

3) Cwangcisa indawo engagqibekanga yesixhobo somgca womyalelo gcloud.

gcloud config set compute/zone us-central1-b

4) Qinisekisa ukuba inkonzo yoBhaliso loMgqomo ivuliwe kwiprojekthi ye-GCP.

gcloud services enable containerregistry.googleapis.com

Umncedisi wokwenza umgqomo

  1. Yiya kuluhlu apho ukhoyo umzekelo Mncedisi:

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

  2. Hlanganisa umfanekiso usebenzisa dockerfile kunye nemeko-bume eguquguqukayo oyichaze ngaphambili:

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

IParamu -t imele ithegi yeDocker. Eli ligama lomfanekiso owusebenzisayo xa uhambisa isikhongozeli.

  1. Layisha umfanekiso kwiRejistri yoMgqomo:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Ukufakwa komgqomo we-loadgen

1) Yiya kuluhlu apho umzekelo ukhoyo loadgen:

cd ../loadgen

2) Qokelela umfanekiso:

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

3) Layisha umfanekiso kwiRejistri yoMgqomo:

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

Jonga uluhlu lwemifanekiso

Phonononga uluhlu lwemifanekiso kwindawo yokugcina kwaye uqinisekise ukuba imifanekiso ilayishiwe:

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

Umyalelo ubonisa amagama emifanekiso esandula ukulayishwa:

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

Ukudala iqela le-GKE.

Ezi zikhongozeli zinokuqhutywa kumatshini wenyani we-Cloud Shell okanye kwikhompyuter enomyalelo docker ugijime. Kodwa kwindawo yemveliso, udinga indlela yokudibanisa izikhongozeli ezisembindini. Umzekelo, udinga inkqubo eqinisekisa ukuba izikhongozeli zihlala zisebenza, kwaye ufuna indlela yokunyusa kwaye ujikeleze iimeko zesikhongozeli ezongezelelweyo ukuba i-traffic iyanda.

Ukuqhuba usetyenziso olunezikhongozeli onokuzisebenzisa G.K.E.. I-GKE liqonga leekhonteyina le-orchestration elidibanisa oomatshini bokwenene babe liqela. Umatshini ngamnye wenyani ubizwa ngokuba yi-node. Amaqela e-GKE asekelwe kumthombo ovulekileyo wenkqubo yolawulo lweqela le-Kubernetes. I-Kubernetes ibonelela ngeendlela zokusebenzisana neqela.

Ukudala iqela le-GKE:

1) Yenza iqela:

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

Iqela gcloud yenza iqela le-istioready kwiprojekthi ye-GCP kunye nendawo engagqibekanga oyikhankanyileyo. Ukuqhuba i-Istio, sincoma ukuba ube neenodi ze-4 ubuncinane kunye nomatshini obonakalayo n1-umgangatho-2.

Iqela lidala iqela kwimizuzu embalwa. Xa iqela lilungile, umyalelo uvelisa into enje umyalezo.

2) Nika iziqinisekiso kwisixhobo somgca womyalelo kubectlukuyisebenzisa ukulawula iqela:

gcloud container clusters get-credentials istioready

3) Ngoku unokunxibelelana noKubernetes nge kubectl. Umzekelo, lo myalelo ulandelayo unokufumanisa ubume beendawo zokuhlala:

kubectl get nodes

Umyalelo uvelisa uluhlu lweenodi:

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 Iingcamango eziphambili

Umzobo ubonisa isicelo kwi-GKE:

Ukulungiselela isicelo se-Istio

Ngaphambi kokuba uthumele izitya kwi-GKE, funda iikhonsepthi eziphambili ze-Kubernetes. Kukho amakhonkco ekugqibeleni ukuba ufuna ukufunda ngakumbi.

  • Amaqela kunye namaqela. Kwi-GKE, i-node ngumatshini obonakalayo. Kwamanye amaqonga e-Kubernetes, i-node inokuba yikhompyuter okanye umatshini obonakalayo. Iqela yingqokelela yeendawo zokuhlala ezinokuthi zithathwe njengeyunithi enye apho ufaka isicelo esinezikhongozeli.
  • Iipods. Kwi-Kubernetes, izikhongozeli zibaleka kwiipod. I-Pod e-Kubernetes yiyunithi engenakuhlukaniswa. I-Pod ibamba isikhongozeli esinye okanye ngaphezulu. Uhambisa izitya zomncedisi kunye loadgen kwiipod ezahlukeneyo. Xa kukho izikhongozeli ezininzi kwipod (umzekelo, umncedisi wesicelo kunye iseva engummeli), izikhongozeli zilawulwa njengequmrhu elinye kunye nokwabelana ngezibonelelo zepod.
  • Ukusasazwa. Kwi-Kubernetes, ukuthunyelwa yinto eyingqokelela yeepod ezifanayo. Ukusasazwa kusungula iikopi ezininzi zeepods ezisasazwe kuzo zonke iindawo zeqela. Ukusasazwa ngokuzenzekelayo kuthatha indawo yeepods ezingaphumelelanga okanye ezingaphenduliyo.
  • inkonzo Kubernetes. Xa usebenzisa ikhowudi yesicelo kwi-GKE, uqhagamshelwano phakathi loadgen ΠΈ Mncedisi. Xa wawuqala iinkonzo kumatshini we-Cloud Shell onenyani okanye idesktop, uthumele izicelo ku Mncedisi kwidilesi yendawo: 8080. Emva kokuba isetyenziswe kwi-GKE, iipods ziqhutyelwa kwiindawo ezikhoyo. Ngokungagqibekanga, awunalawulo lokuba yeyiphi i-node esebenza kuyo, ke wena iipods akukho dilesi ye-IP esisigxina.
    Ukufumana idilesi ye-IP ye Mncedisi, kufuneka uchaze ukutsalwa kwenethiwekhi ngaphezulu kweepods. Nantso into eyiyo inkonzo Kubernetes. Inkonzo ye-Kubernetes ibonelela ngesiphelo esiqhubekayo seseti yeepod. Kukho ezimbalwa iintlobo zeenkonzo. Mncedisi isebenzisa LoadBalancer, ebonelela ngedilesi ye-IP yangaphandle ukuba uqhagamshelane Mncedisi ukusuka ngaphandle kweqela.
    I-Kubernetes ikwanenkqubo ye-DNS eyakhelwe-ngaphakathi enika amagama e-DNS (umzekelo, helloserver.default.cluster.local) iinkonzo. Enkosi koku, ii-pods ngaphakathi kweqela zinxibelelana nezinye ii-pods kwiqela kwidilesi esisigxina. Igama le-DNS alinakusetyenziswa ngaphandle kweqela, njengakwi-Cloud Shell okanye kwikhompyuter.

UKubernetes uyabonakalisa

Xa uqhube isicelo kwimvelaphi, usebenzise umyalelo ofunekayo python3

iseva.py

Isigunyaziso sithetha isenzi: β€œyenza le nto.”

UKubernetes usebenzisa imodeli yesibhengezo. Oku kuthetha ukuba asixeleli uKubernetes ngqo ukuba enze ntoni, kodwa sichaza imeko esiyifunayo. Ngokomzekelo, i-Kubernetes iqala kwaye imise ii-pods njengoko kuyimfuneko ukuqinisekisa ukuba imeko yokwenyani yenkqubo ihambelana nesimo esifunwayo.

Ubonisa imeko efunwayo kwii-manifest okanye iifayile YAML. Ifayile ye-YAML iqulethe iinkcukacha zento enye okanye ngaphezulu kwe-Kubernetes.

Umzekelo uqulethe ifayile ye-YAML ye Mncedisi ΠΈ loadgen. Ifayile nganye ye-YAML ichaza imeko efunwayo yento yokuthunyelwa kunye nenkonzo 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

  • Bubele ibonisa uhlobo lwento.
  • metadata.igama ixela igama lokusebenzisa.
  • Indawo yokuqala umzekelo iqulethe inkcazo yelizwe elifunekayo.
  • spec.replicas ibonisa inani elifunekayo lemidumba.
  • Icandelo spec.template ichaza itemplate yepod. Kukho intsimi kwinkcazo yepod umfanekiso, echaza igama lomfanekiso ekufuneka ukhutshwe kwiRegistry ye-Container.

Inkonzo ichazwa ngolu hlobo lulandelayo:

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

  • LoadBalancer: Abathengi bathumela izicelo kwidilesi ye-IP ye-balancer yomthwalo, enedilesi ye-IP eqhubekayo kwaye ifumaneka ngaphandle kweqela.
  • iPort ekujoliswe kuyo: njengoko ukhumbula, iqela BONISA 8080 Π² dockerfile khange ibonelele ngamazibuko. Ubonelela ngezibuko 8080ukuze ukwazi ukuqhagamshelana nesikhongozeli Mncedisi ngaphandle kweqela. Kwimeko yethu hellosvc.default.cluster.local:80 (igama elifutshane: molwenivc) ihambelana nezibuko 8080 Iidilesi zePod IP moloserver.
  • izibuko: Le yinombolo yezibuko apho ezinye iinkonzo kwiqela ziya kuthumela izicelo.

loadgen.yaml

Into yokusasaza ukuya loadgen.yaml ibonakala njenge iseva.yaml. Umahluko kukuba into yokuthunyelwa iqulethe icandelo Env. Ichaza iinguqu zokusingqongileyo ezifunekayo loadgen kwaye oyifakileyo xa usebenzisa usetyenziso olusuka kumthombo.

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 akazamkeli izicelo ezingenayo, zentsimi uhlobo kubonisiwe ClusterIP. Olu hlobo lunikeza idilesi ye-IP eqhubekayo apho iinkonzo zeqela zingasebenzisa, kodwa le dilesi ye-IP ayibonakali kubaxhasi bangaphandle.

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

Ukuhambisa iMigqomo kwi-GKE

1) Yiya kuluhlu apho umzekelo ukhoyo Mncedisi:

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

2) Vula iseva.yaml kumhleli wokubhaliweyo.
3) Faka igama endaweni umfanekiso kwigama lomfanekiso wakho weDocker.

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

Faka enye indawo PROJECT_ID kwi-ID yeprojekthi yakho ye-GCP.
4) Gcina kwaye uvale iseva.yaml.
5) Thumela ifayile ye-YAML kwi-Kubernetes:

kubectl apply -f server.yaml

Ekugqityweni ngempumelelo, umyalelo uvelisa le khowudi ilandelayo:

deployment.apps/helloserver created
service/hellosvc created

6) Yiya kuluhlu apho loadgen:

cd ../loadgen

7) Vula loadgen.yaml kumhleli wokubhaliweyo.
8) Faka igama endaweni umfanekiso kwigama lomfanekiso wakho weDocker.

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

Faka enye indawo PROJECT_ID kwi-ID yeprojekthi yakho ye-GCP.
9) Gcina kwaye uvale loadgen.yaml, vala umhleli wokubhaliweyo.
10) Thumela ifayile ye-YAML kwi-Kubernetes:

kubectl apply -f loadgen.yaml

Ekugqityweni ngempumelelo, umyalelo uvelisa le khowudi ilandelayo:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Jonga imeko yeepods:

kubectl get pods

Umyalelo ubonisa imeko:

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

12) Khipha iilogi zesicelo kwi-pod loadgen. Faka enye indawo POD_ID kwisazisi esivela kwimpendulo yangaphambili.

kubectl logs loadgenerator-POD_ID

13) Fumana iidilesi ze-IP zangaphandle molwenivc:

kubectl get service

Impendulo yomyalelo ijongeka ngolu hlobo:

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 molwenivc: buyisela EXTERNAL_IP kwidilesi ye-IP yangaphandle molwenivc.

curl http://EXTERNAL_IP

Makhe sithathe Istio

Sele unaso isicelo esifakwe kwi-GKE. loadgen inokusebenzisa iKubernetes DNS (molovc:80) ukuthumela izicelo ku Mncedisikwaye ungathumela izicelo ku Mncedisi ngedilesi ye-IP yangaphandle. Nangona iKubernetes ineempawu ezininzi, kukho ulwazi olungekhoyo malunga neenkonzo:

  • Zisebenzisana njani iinkonzo? Yintoni ubudlelwane phakathi kweenkonzo? Ihamba njani itrafikhi phakathi kweenkonzo? Ngaba uyayazi loo nto loadgen ithumela izicelo ku Mncedisi, kodwa khawufane ucinge ukuba awazi nto malunga nesicelo. Ukuphendula le mibuzo, makhe sijonge kuluhlu lweepods ezisebenzayo kwi-GKE.
  • Iimetriki. Ixesha elingakanani Mncedisi iphendula kwisicelo esingenayo? Zingaphi izicelo ngesekhondi ezifunyenwe ngumncedisi? Ngaba inika imiyalezo yemposiso?
  • Ulwazi loKhuseleko. Traffic phakathi loadgen ΠΈ Mncedisi idlula nje HTTP okanye nge mTLS?

I-Istio iphendula yonke le mibuzo. Ukwenza oku, i-Istio ibeka i-proxy ye-sidecar sithunywa kwipod nganye. Ummeli womthunywa unqanda zonke izithuthi ezingenayo neziphumayo kwizikhongozeli zesicelo. Kuthetha ukuba Mncedisi ΠΈ loadgen fumana ngemoto esecaleni uMthunywa, kunye nazo zonke izithuthi ezisuka loadgen ΠΊ Mncedisi idlula kwi-Proxy yoMthunywa.

Uqhagamshelo phakathi kwabameli boMthunywa benza umnatha wenkonzo. Uyilo lwe-mesh yenkonzo lubonelela ngoluhlu lolawulo ngaphezulu kwe-Kubernetes.

Ukulungiselela isicelo se-Istio

Ekubeni i-Proxies yoMthunywa iqhuba kwiibhokisi zabo, i-Istio inokufakwa phezulu kwi-cluster ye-GKE phantse akukho tshintsho kwikhowudi yesicelo. Kodwa wenze umsebenzi othile ukuze isicelo sakho silungele ukulawulwa yi-Istio:

  • Iinkonzo zazo zonke izitya. Ukusasazwa Mncedisi ΠΈ loadgen ibotshelelwe kwinkonzo yeKubernetes. Nditsho loadgen, engafumani izicelo ezingenayo, kukho inkonzo.
  • Amazibuko kwiinkonzo kufuneka abe namagama. Nangona izibuko zenkonzo zingashiywa zingabizwa ngamagama kwi-GKE, i-Istio ifuna ukuba ucacise Igama lezibuko ngokuhambelana neprotocol yakhe. Kwifayile yeYAML izibuko le Mncedisi kuthiwa httpkuba umncedisi usebenzisa iprotocol HTTP... Ukuba inkonzo esetyenzisiweyo I-GRPC, ungenza igama lezibuko grpc.
  • Ukuthunyelwa kuphawulwe. Ngoko ke, ungasebenzisa iimpawu zolawulo lwendlela ye-Istio, njengokwahlula i-traffic phakathi kweenguqulelo zenkonzo efanayo.

Kufakwe i-Istio

Kukho iindlela ezimbini zokufakela i-Istio. Ngaba yenza i-Istio kulwandiso lwe-GKE okanye faka inguqulelo yomthombo ovulekileyo we-Istio kwiqela. Nge-Istio kwi-GKE, unokulawula ngokulula ukufakwa kwe-Istio kunye nokuphucula kuyo yonke i-lifecycle yeqela le-GKE. Ukuba ufuna inguqulelo yamva nje ye-Istio okanye ulawulo olungaphezulu kuqwalaselo lwephaneli yolawulo ye-Istio, faka inguqulelo yomthombo ovulekileyo endaweni ye-Istio kwi-extension ye-GKE. Ukugqiba malunga nendlela, funda inqaku Ngaba ndifuna i-Istio kwi-GKE?.

Khetha ukhetho, funda isikhokelo esifanelekileyo, kwaye ulandele imiyalelo yokufaka i-Istio kwiqela lakho. Ukuba ufuna ukusebenzisa i-Istio ngesicelo sakho esitsha, vumela ukuphunyezwa kwe-sidecar indawo yamagama Engagqibekanga.

Ukucoca

Ukunqanda ukuhlawuliswa kwiakhawunti yakho yeQonga likaGoogle leLifu ngezixhobo ozisebenzisileyo kwesi sifundo, cima iqoqo leekhonteyina emva kokuba ufake i-Istio kwaye udlale ngesampulu yesicelo. Oku kuya kususa zonke izixhobo ze-cluster, ezifana ne-comute compute, iidiski, kunye nezibonelelo zenethiwekhi.

Yintoni elandelayo?

umthombo: www.habr.com

Yongeza izimvo