Kuandaa ombi la Istio

Kuandaa ombi la Istio

Istio ni zana rahisi ya kuunganisha, kupata na kufuatilia programu zilizosambazwa. Istio hutumia teknolojia mbalimbali kuendesha na kudhibiti programu kwa kiwango kikubwa, ikijumuisha kontena kufunga msimbo wa programu na vitegemezi vya kutumwa, na Kubernetes kudhibiti vyombo hivyo. Kwa hivyo, ili kufanya kazi na Istio lazima ujue jinsi programu iliyo na huduma nyingi kulingana na teknolojia hizi inavyofanya kazi bila Istio. Ikiwa zana na dhana hizi tayari unazifahamu, jisikie huru kuruka mafunzo haya na uende moja kwa moja kwenye sehemu Kusakinisha Istio kwenye Google Kubernetes Engine (GKE) au kusakinisha kiendelezi Istio kwenye GKE.

Huu ni mwongozo wa hatua kwa hatua ambapo tutapitia mchakato mzima kutoka kwa msimbo wa chanzo hadi kontena la GKE ili upate ufahamu wa kimsingi wa teknolojia hizi kwa mfano. Pia utaona jinsi Istio inavyotumia nguvu ya teknolojia hizi. Hii inadhania kuwa hujui chochote kuhusu vyombo, Kubernetes, meshes za huduma, au Istio.

kazi

Katika somo hili, utakamilisha kazi zifuatazo:

  1. Kujifunza programu rahisi ya ulimwengu ya hello na huduma nyingi.
  2. Endesha programu kutoka kwa msimbo wa chanzo.
  3. Kufunga programu kwenye vyombo.
  4. Kuunda kikundi cha Kubernetes.
  5. Kupeleka vyombo kwenye nguzo.

Kabla ya kuanza

Fuata maagizo ili kuwezesha API ya Injini ya Kubernetes:

  1. Nenda Ukurasa wa injini ya Kubernetes katika kiweko cha Google Cloud Platform.
  2. Unda au chagua mradi.
  3. Subiri hadi API na huduma zinazohusiana ziwashwe. Hii inaweza kuchukua dakika chache.
  4. Hakikisha utozaji umewekwa kwa ajili ya mradi wako wa Google Cloud Platform. Jifunze jinsi ya kuwezesha utozaji.

Katika somo hili, unaweza kutumia Cloud Shell, ambayo huandaa mashine ya kawaida g1-ndogo katika Google Compute Engine na Linux inayotegemea Debian, au kompyuta ya Linux au macOS.

Chaguo A: Kutumia Cloud Shell

Manufaa ya kutumia Cloud Shell:

  • Mazingira ya maendeleo ya Python 2 na Python 3 (pamoja na fadhila) zimesanidiwa kikamilifu.
  • Zana za Mstari wa Amri gcloud, docker, git ΠΈ kubectl, ambayo tutatumia tayari imewekwa.
  • Una kadhaa za kuchagua wahariri wa maandishi:
    1. Mhariri wa kanuni, ambayo hufunguliwa na ikoni ya kuhariri iliyo juu ya dirisha la Cloud Shell.
    2. Emacs, Vim au Nano, ambayo hufungua kutoka kwa safu ya amri kwenye Cloud Shell.

Kutumia Shell ya Wingu:

  1. Nenda kwenye koni ya GCP.
  2. vyombo vya habari Washa Shell ya Wingu (Washa Cloud Shell) juu ya dirisha la kiweko cha GCP.

Kuandaa ombi la Istio

Katika sehemu ya chini Console ya GCP Kipindi cha Cloud Shell na mstari wa amri kitafungua kwenye dirisha jipya.

Kuandaa ombi la Istio

Chaguo B: Kutumia Zana za Mstari wa Amri Ndani ya Nchi

Ikiwa utafanya kazi kwenye kompyuta inayoendesha Linux au macOS, utahitaji kusanidi na kusanikisha vifaa vifuatavyo:

  1. Badilisha kukufaa Mazingira ya maendeleo ya Python 3 na Python 2.

  2. Sakinisha SDK ya Wingu na zana ya mstari wa amri gcloud.

  3. Weka kubectl - zana ya mstari wa amri ya kufanya kazi nayo Mabernet.

    gcloud components install kubectl

  4. Weka Toleo la Jumuiya ya Docker (CE). Utatumia zana ya mstari wa amri dockerkuunda picha za kontena kwa programu ya sampuli.

  5. Sakinisha chombo Udhibiti wa toleo la Gitkupata sampuli ya maombi kutoka GitHub.

Pakua sampuli ya msimbo

  1. Pakua msimbo wa chanzo helloserver:

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

  2. Nenda kwenye saraka ya nambari ya mfano:

    cd istio-samples/sample-apps/helloserver

Inachunguza programu iliyo na huduma nyingi

Sampuli ya maombi imeandikwa katika Python na ina vipengele viwili vinavyoingiliana kwa kutumia WALIOBAKI:

  • server: seva rahisi yenye ncha moja PATA, /, ambayo huchapisha "hello world" kwenye console.
  • loadgen: hati inayotuma trafiki kwa server, na idadi inayoweza kusanidiwa ya maombi kwa sekunde.

Kuandaa ombi la Istio

Kuendesha programu kutoka kwa msimbo wa chanzo

Ili kuchunguza sampuli ya programu, iendeshe katika Cloud Shell au kwenye kompyuta yako.
1) Katika orodha istio-samples/sample-apps/helloserver kukimbia server:

python3 server/server.py

Wakati wa kukimbia server yafuatayo yanaonyeshwa:

INFO:root:Starting server...

2) Fungua dirisha lingine la terminal kutuma maombi kwa server. Ikiwa unatumia Cloud Shell, bofya aikoni ya kuongeza ili kufungua kipindi kingine.
3) Tuma ombi kwa server:

curl http://localhost:8080

seva inajibu:

Hello World!

4) Kutoka kwenye saraka ambapo ulipakua msimbo wa sampuli, nenda kwenye saraka ambayo ina loadgen:

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

5) Unda anuwai za mazingira zifuatazo:

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

6) Uzinduzi fadhila:

virtualenv --python python3 env

7) Amilisha mazingira ya mtandaoni:

source env/bin/activate

8) Weka mahitaji ya loadgen:

pip3 install -r requirements.txt

9) Uzinduzi loadgen:

python3 loadgen.py

Wakati wa kukimbia loadgen inaonyesha kitu kama ujumbe ufuatao:

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

Katika dirisha lingine la terminal server hutoa ujumbe ufuatao kwa koni:

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

Kwa mtazamo wa mtandao, programu nzima inaendeshwa na seva pangishi moja (kompyuta ya ndani au mashine pepe ya Cloud Shell). Kwa hivyo unaweza kutumia lochostkutuma maombi kwa server.
10) Kuacha loadgen ΠΈ server, ingia Ctrl-c katika kila dirisha la terminal.
11) Katika dirisha la terminal loadgen kulemaza mazingira ya mtandaoni:

deactivate

Kufunga programu katika vyombo

Ili kuendesha programu kwenye GKE, unahitaji kufunga programu ya sampuli - server ΠΈ loadgen - ndani vyombo. Chombo ni njia ya kufunga programu ili kuitenga na mazingira yake.

Ili kufunga programu kwenye chombo, unahitaji Dockerfile. Dockerfile ni faili ya maandishi ambayo inafafanua amri za kuunda nambari ya chanzo ya programu na utegemezi wake ndani Picha ya Docker. Mara baada ya kujengwa, unapakia picha kwenye sajili ya chombo kama vile Docker Hub au Usajili wa Kontena.

Mfano tayari una Dockerfile kwa server ΠΈ loadgen na amri zote muhimu za kukusanya picha. Chini - Dockerfile kwa 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" ]

  • Timu KUTOKA kwa python:3-slim kama msingi anamwambia Docker kutumia hivi karibuni Picha ya Python 3 kama msingi.
  • Timu NAKALA. . inakili faili za chanzo kwenye saraka ya sasa ya kufanya kazi (kwa upande wetu tu seva.py) kwa mfumo wa faili wa kontena.
  • KIINGILIO inafafanua amri inayotumika kuanzisha chombo. Kwa upande wetu, amri hii ni karibu sawa na ile uliyotumia kuendesha seva.py kutoka kwa msimbo wa chanzo.
  • Timu FICHUA inaonyesha kwamba server inasubiri data kupitia bandari 8080. Timu hii sio hutoa bandari. Hii ni aina fulani ya nyaraka zinazohitajika ili kufungua bandari 8080 wakati wa kuanza chombo.

Inajitayarisha kuweka ombi lako kwenye chombo

1) Weka vigezo vya mazingira vifuatavyo. Badilisha PROJECT_ID kwa kitambulisho chako cha mradi wa GCP.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Kutumia maadili PROJECT_ID ΠΈ GCR_REPO unaweka taswira ya Docker unapoijenga na kuisukuma kwa Usajili wa Kontena ya kibinafsi.

2) Weka mradi chaguo-msingi wa GCP kwa zana ya mstari wa amri gcloud.

gcloud config set project $PROJECT_ID

3) Weka eneo la chaguo-msingi kwa chombo cha mstari wa amri gcloud.

gcloud config set compute/zone us-central1-b

4) Hakikisha kuwa huduma ya Usajili wa Kontena imewezeshwa katika mradi wa GCP.

gcloud services enable containerregistry.googleapis.com

Seva ya uwekaji vyombo

  1. Nenda kwenye saraka ambapo mfano iko server:

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

  2. Kusanya picha kwa kutumia Dockerfile na anuwai za mazingira ulizoelezea hapo awali:

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

Parameter -t inawakilisha lebo ya Docker. Hili ndilo jina la picha unayotumia wakati wa kupeleka kontena.

  1. Pakia picha kwenye Usajili wa Kontena:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Uwekaji wa vyombo vya loadgen

1) Nenda kwenye saraka ambapo mfano iko loadgen:

cd ../loadgen

2) Kusanya picha:

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

3) Pakia picha kwenye Usajili wa Chombo:

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

Tazama orodha ya picha

Kagua orodha ya picha kwenye hazina na uthibitishe kuwa picha hizo zimepakiwa:

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

Amri inaonyesha majina ya picha mpya zilizopakiwa:

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

Kuunda nguzo ya GKE.

Vyombo hivi vinaweza kuendeshwa kwenye mashine pepe ya Cloud Shell au kwenye kompyuta iliyo na amri docker kukimbia. Lakini katika mazingira ya uzalishaji, unahitaji njia ya kupanga vyombo vya serikali kuu. Kwa mfano, unahitaji mfumo unaohakikisha kuwa vyombo vinaendeshwa kila wakati, na unahitaji njia ya kuongeza na kusogeza matukio ya ziada ya vyombo ikiwa trafiki itaongezeka.

Ili kuendesha programu zilizo na kontena unaweza kutumia G.K.E.. GKE ni jukwaa la ochestration la kontena ambalo hujumlisha mashine pepe katika kundi. Kila mashine ya kawaida inaitwa nodi. Nguzo za GKE zinatokana na mfumo wa usimamizi wa nguzo huria wa Kubernetes. Kubernetes hutoa njia za kuingiliana na nguzo.

Kuunda nguzo ya GKE:

1) Unda kikundi:

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

Timu gcloud huunda kundi la istioready katika mradi wa GCP na eneo chaguo-msingi ulilobainisha. Ili kuendesha Istio, tunapendekeza kuwa na angalau nodi 4 na mashine pepe n1-kiwango-2.

Timu itaunda kundi katika dakika chache. Wakati nguzo iko tayari, amri hutoa kitu kama hiki сообщСниС.

2) Toa sifa katika zana ya mstari wa amri kubectlkuitumia kusimamia nguzo:

gcloud container clusters get-credentials istioready

3) Sasa unaweza kuwasiliana na Kubernetes kupitia kubectl. Kwa mfano, amri ifuatayo inaweza kujua hali ya nodi:

kubectl get nodes

Amri hutoa orodha ya nodi:

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

Dhana Muhimu za Kubernetes

Mchoro unaonyesha matumizi ya GKE:

Kuandaa ombi la Istio

Kabla ya kupeleka kontena katika GKE, jifunze dhana muhimu za Kubernetes. Kuna viungo mwishoni kabisa ikiwa unataka kujifunza zaidi.

  • Nodes na makundi. Katika GKE, nodi ni mashine ya kawaida. Kwenye majukwaa mengine ya Kubernetes, nodi inaweza kuwa kompyuta au mashine pepe. Kundi ni mkusanyiko wa nodi ambazo zinaweza kuchukuliwa kuwa kitengo kimoja ambapo unatumia programu iliyo na chombo.
  • Maganda. Katika Kubernetes, kontena hutembea kwenye maganda. Ganda katika Kubernetes ni kitengo kisichogawanyika. Pod hushikilia kontena moja au zaidi. Unapeleka vyombo vya seva na loadgen katika maganda tofauti. Wakati kuna vyombo kadhaa kwenye ganda (kwa mfano, seva ya programu na seva ya wakala), vyombo vinasimamiwa kama chombo kimoja na kugawana rasilimali za pod.
  • Usambazaji. Katika Kubernetes, upelekaji ni kitu ambacho ni mkusanyiko wa maganda yanayofanana. Usambazaji huzindua nakala nyingi za maganda yaliyosambazwa kwenye nodi za nguzo. Usambazaji hubadilisha kiotomatiki maganda ambayo yameshindwa au ambayo hayafanyiki.
  • Huduma ya Kubernetes. Wakati wa kuendesha msimbo wa programu katika GKE, unganisho kati ya loadgen ΠΈ server. Ulipoanzisha huduma kwenye mashine au kompyuta ya mezani ya Cloud Shell, ulituma maombi kwa server saa localhost: 8080. Mara baada ya kupelekwa kwa GKE, maganda yanatekelezwa kwenye nodi zinazopatikana. Kwa chaguo-msingi, huna udhibiti wa ni nodi gani inayoendesha ganda, kwa hivyo wewe maganda hakuna anwani za IP za kudumu.
    Ili kupata anwani ya IP ya server, unahitaji kufafanua uondoaji wa mtandao juu ya maganda. Ndivyo ilivyo Huduma ya Kubernetes. Huduma ya Kubernetes hutoa mwisho unaoendelea kwa seti ya maganda. Kuna wachache aina za huduma. server hutumia LoadBalancer, ambayo hutoa anwani ya IP ya nje ya kuwasiliana server kutoka nje ya nguzo.
    Kubernetes pia ina mfumo wa DNS uliojengwa ambao unapeana majina ya DNS (kwa mfano, helloserver.default.cluster.local) huduma. Shukrani kwa hili, maganda ndani ya nguzo huwasiliana na maganda mengine kwenye nguzo kwenye anwani ya kudumu. Jina la DNS haliwezi kutumika nje ya nguzo, kama vile katika Cloud Shell au kwenye kompyuta.

Kubernetes inadhihirisha

Wakati uliendesha programu kutoka kwa chanzo, ulitumia amri ya lazima python3

seva.py

Sharti humaanisha kitenzi: "fanya hivi."

Kubernetes hutumia mfano wa kutangaza. Hii ina maana kwamba hatuambii Kubernetes hasa nini cha kufanya, lakini badala yake tunaelezea hali inayotakiwa. Kwa mfano, Kubernetes huanza na kusimamisha maganda inavyohitajika ili kuhakikisha kuwa hali halisi ya mfumo inalingana na hali inayotakiwa.

Unaonyesha hali unayotaka katika maonyesho au faili YAML. Faili ya YAML ina vipimo vya kipengee kimoja au zaidi cha Kubernetes.

Mfano una faili ya YAML ya server ΠΈ loadgen. Kila faili ya YAML hubainisha hali inayotakiwa ya kifaa cha kupeleka na huduma ya Kubernetes.

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

  • aina inaonyesha aina ya kitu.
  • metadata.jina inabainisha jina la kupelekwa.
  • Uwanja wa kwanza spec ina maelezo ya hali inayotakiwa.
  • maalum.nakili inaonyesha idadi inayotakiwa ya maganda.
  • Sehemu spec.template inafafanua kiolezo cha ganda. Kuna uga katika vipimo vya ganda picha, ambayo hubainisha jina la picha ambayo inahitaji kutolewa kutoka kwa Usajili wa Kontena.

Huduma inafafanuliwa kama ifuatavyo:

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

  • LoadBalancer: Wateja hutuma maombi kwa anwani ya IP ya kisawazisha mzigo, ambayo ina anwani ya IP ya kudumu na inaweza kufikiwa kutoka nje ya kundi.
  • targetPort: kama unavyokumbuka, timu FICHUA 8080 Π² Dockerfile haikutoa bandari. Unatoa bandari 8080ili uweze kuwasiliana na chombo server nje ya nguzo. Kwa upande wetu hellosvc.default.cluster.local:80 (jina fupi: hellosvc) inalingana na bandari 8080 Anwani za IP za Pod helloserver.
  • bandari: Hii ndio nambari ya bandari ambapo huduma zingine kwenye kikundi zitatuma maombi.

loadgen.yaml

Kitu cha kupeleka kwa loadgen.yaml Fanana seva.yaml. Tofauti ni kwamba kitu cha kupeleka kina sehemu env. Inafafanua vigezo vya mazingira vinavyohitajika loadgen na ambayo ulisakinisha wakati wa kuendesha programu kutoka kwa chanzo.

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

Mara moja loadgen haikubali maombi yanayoingia, kwa uga aina imeonyeshwa ClusterIP. Aina hii hutoa anwani ya IP ya kudumu ambayo huduma katika kundi zinaweza kutumia, lakini anwani hii ya IP haijaonyeshwa kwa wateja wa nje.

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

Kupeleka Kontena katika GKE

1) Nenda kwenye saraka ambapo mfano iko server:

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

2) Fungua seva.yaml katika mhariri wa maandishi.
3) Badilisha jina kwenye uwanja picha kwa jina la picha yako ya Docker.

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

Badilisha PROJECT_ID kwa kitambulisho chako cha mradi wa GCP.
4) Hifadhi na funga seva.yaml.
5) Sambaza faili ya YAML kwa Kubernetes:

kubectl apply -f server.yaml

Baada ya kukamilika kwa mafanikio, amri hutoa nambari ifuatayo:

deployment.apps/helloserver created
service/hellosvc created

6) Nenda kwenye saraka ambapo loadgen:

cd ../loadgen

7) Fungua loadgen.yaml katika mhariri wa maandishi.
8) Badilisha jina kwenye uwanja picha kwa jina la picha yako ya Docker.

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

Badilisha PROJECT_ID kwa kitambulisho chako cha mradi wa GCP.
9) Hifadhi na funga loadgen.yaml, funga kihariri cha maandishi.
10) Sambaza faili ya YAML kwa Kubernetes:

kubectl apply -f loadgen.yaml

Baada ya kukamilika kwa mafanikio, amri hutoa nambari ifuatayo:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Angalia hali ya maganda:

kubectl get pods

Amri inaonyesha hali:

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

12) Toa kumbukumbu za maombi kutoka kwenye ganda loadgen. Badilisha POD_ID kwa kitambulisho kutoka kwa jibu lililopita.

kubectl logs loadgenerator-POD_ID

13) Pata anwani za IP za nje hellosvc:

kubectl get service

Jibu la amri linaonekana kama hii:

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) Tuma ombi kwa hellosvc: badala EXTERNAL_IP kwa anwani ya IP ya nje hellosvc.

curl http://EXTERNAL_IP

Hebu tuchukue Istio

Tayari una programu iliyotumwa kwa GKE. loadgen inaweza kutumia Kubernetes DNS (hellosvc:80) kutuma maombi kwa serverna unaweza kutuma maombi kwa server kwa anwani ya IP ya nje. Ingawa Kubernetes ina vipengele vingi, kuna baadhi ya taarifa zinazokosekana kuhusu huduma:

  • Je, huduma zinaingiliana vipi? Kuna uhusiano gani kati ya huduma? Trafiki inapitaje kati ya huduma? Je, unafahamu hilo loadgen hutuma maombi kwa server, lakini fikiria kuwa hujui lolote kuhusu programu. Ili kujibu maswali haya, hebu tuangalie orodha ya maganda ya kukimbia katika GKE.
  • Vipimo. Muda gani server hujibu ombi linaloingia? Ni maombi mangapi kwa sekunde hupokelewa na seva? Je, inatoa ujumbe wa makosa?
  • Taarifa za Usalama. Trafiki kati loadgen ΠΈ server inapita tu HTTP au kwa mTLS?

Istio anajibu maswali haya yote. Ili kufanya hivyo, Istio huweka proksi ya kando mjumbe katika kila ganda. Wakala wa Mjumbe hukatiza trafiki yote inayoingia na kutoka kwa vyombo vya kutuma maombi. Ina maana kwamba server ΠΈ loadgen pokea kupitia Mjumbe wa wakala wa gari la kando, na trafiki yote kutoka loadgen ΠΊ server hupitia wakala wa Mjumbe.

Miunganisho kati ya proksi za Wajumbe huunda matundu ya huduma. Usanifu wa matundu ya huduma hutoa safu ya udhibiti juu ya Kubernetes.

Kuandaa ombi la Istio

Kwa kuwa wawakilishi wa Wajumbe huendesha katika vyombo vyao wenyewe, Istio inaweza kusakinishwa juu ya nguzo ya GKE bila mabadiliko yoyote kwa msimbo wa programu. Lakini umefanya kazi fulani ili kupata ombi lako tayari kusimamiwa na Istio:

  • Huduma kwa vyombo vyote. Kwa kupelekwa server ΠΈ loadgen amefungwa kwa huduma ya Kubernetes. Hata loadgen, ambayo haipati maombi yanayoingia, kuna huduma.
  • Bandari katika huduma lazima ziwe na majina. Ingawa bandari za huduma zinaweza kuachwa bila majina katika GKE, Istio inahitaji ubainishe jina la bandari kwa mujibu wa itifaki yake. Katika faili ya YAML lango la server kuitwa httpkwa sababu seva hutumia itifaki HTTP. Kama huduma kutumika gRPC, ungetaja bandari grpc.
  • Usambazaji umealamishwa. Kwa hivyo, unaweza kutumia vipengele vya usimamizi wa trafiki vya Istio, kama vile kugawanya trafiki kati ya matoleo ya huduma sawa.

Inasakinisha Istio

Kuna njia mbili za kufunga Istio. Je! wezesha Istio kwenye ugani wa GKE au sasisha toleo la chanzo wazi la Istio kwenye nguzo. Ukiwa na Istio kwenye GKE, unaweza kudhibiti usakinishaji na visasisho vya Istio kwa urahisi katika mzunguko wa maisha wa nguzo ya GKE. Ikiwa unataka toleo jipya zaidi la Istio au udhibiti zaidi juu ya usanidi wa paneli yako ya udhibiti wa Istio, sakinisha toleo la chanzo huria badala ya Istio kwenye kiendelezi cha GKE. Kuamua juu ya mbinu, soma makala Je, ninahitaji Istio kwenye GKE?.

Teua chaguo, kagua mwongozo unaofaa, na ufuate maagizo ya kusakinisha Istio kwenye kundi lako. Ikiwa unataka kutumia Istio na programu yako mpya iliyotumwa, kuwezesha utekelezaji wa sidecar kwa nafasi ya majina default.

Kusafisha

Ili kuepuka kutozwa kwenye akaunti yako ya Google Cloud Platform kwa nyenzo ulizotumia katika mafunzo haya, futa mkusanyiko wa kontena mara tu unaposakinisha Istio na kucheza na sampuli ya programu. Hii itaondoa rasilimali zote za nguzo, kama vile matukio ya kukokotoa, diski na rasilimali za mtandao.

Nini hapo?

Chanzo: mapenzi.com

Kuongeza maoni