Tħejjija ta' applikazzjoni għal Istio

Tħejjija ta' applikazzjoni għal Istio

Istio hija għodda konvenjenti għall-konnessjoni, l-iżgurar u l-monitoraġġ tal-applikazzjonijiet distribwiti. Istio juża varjetà ta 'teknoloġiji biex iħaddem u jamministra softwer fuq skala, inklużi kontenituri biex jippakkjaw kodiċi tal-applikazzjoni u dipendenzi għall-iskjerament, u Kubernetes biex jimmaniġġja dawk il-kontenituri. Għalhekk, biex taħdem ma 'Istio trid tkun taf kif taħdem applikazzjoni b'diversi servizzi bbażati fuq dawn it-teknoloġiji mingħajr Istio. Jekk dawn l-għodod u l-kunċetti diġà huma familjari għalik, tħossok liberu li taqbeż dan it-tutorja u mur dritt għas-sezzjoni Installazzjoni ta' Istio fuq Google Kubernetes Engine (GKE) jew tinstalla estensjoni Istio fuq GKE.

Din hija gwida pass pass fejn se nimxu permezz tal-proċess kollu mill-kodiċi tas-sors sal-kontenitur GKE biex nagħtuk fehim bażiku ta 'dawn it-teknoloġiji permezz ta' eżempju. Int ser tara wkoll kif Istio jisfrutta l-qawwa ta 'dawn it-teknoloġiji. Dan jassumi li ma taf xejn dwar kontenituri, Kubernetes, malji tas-servizz, jew Istio.

kompiti

F'dan it-tutorja, int se tlesti l-kompiti li ġejjin:

  1. Titgħallem applikazzjoni sempliċi hello world b'ħafna servizzi.
  2. Mexxi l-applikazzjoni mill-kodiċi tas-sors.
  3. Ippakkjar l-applikazzjoni f'kontenituri.
  4. Ħolqien ta' cluster Kubernetes.
  5. L-iskjerament ta' kontenituri fi cluster.

Qabel ma tibda

Segwi l-istruzzjonijiet biex tattiva l-API Kubernetes Engine:

  1. Mur Il-paġna tal-Kubernetes Engine fil-console Google Cloud Platform.
  2. Oħloq jew agħżel proġett.
  3. Stenna sakemm l-API u s-servizzi relatati jiġu attivati. Dan jista' jieħu ftit minuti.
  4. Kun żgur li l-kontijiet huma stabbiliti għall-proġett tiegħek Google Cloud Platform. Tgħallem kif tippermetti l-kontijiet.

F'dan it-tutorja, tista 'tuża Cloud Shell, li tipprepara l-magna virtwali g1-żgħir fil-Google Compute Engine b'Linux ibbażat fuq Debian, jew kompjuter Linux jew macOS.

Għażla A: Uża Cloud Shell

Benefiċċji tal-użu ta' Cloud Shell:

  • Ambjenti ta' żvilupp Python 2 u Python 3 (inkluż virtualenv) huma kkonfigurati bis-sħiħ.
  • Għodod tal-Linja tal-Kmand gcloud, docker, Mur и kubectl, li se nużaw huma diġà installati.
  • Għandek diversi minn fejn tagħżel edituri tat-test:
    1. Editur tal-kodiċi, li tiftaħ bl-ikona tal-editjar fin-naħa ta' fuq tat-tieqa tal-Cloud Shell.
    2. Emacs, Vim jew Nano, li jinfetħu mil-linja tal-kmand f'Cloud Shell.

Tuża Cloud Shell:

  1. Mur fil-console GCP.
  2. istampa Attiva Cloud Shell (Attiva Cloud Shell) fin-naħa ta' fuq tat-tieqa tal-console GCP.

Tħejjija ta' applikazzjoni għal Istio

Fil-parti t'isfel console GCP Sessjoni Cloud Shell b'linja ta 'kmand tinfetaħ f'tieqa ġdida.

Tħejjija ta' applikazzjoni għal Istio

Għażla B: L-użu tal-Għodod tal-Linja tal-Kmand lokalment

Jekk se tkun qed taħdem fuq kompjuter li jħaddem Linux jew macOS, ser ikollok bżonn tikkonfigura u tinstalla l-komponenti li ġejjin:

  1. Ippersonalizza Ambjent ta 'żvilupp Python 3 u Python 2.

  2. Installa Cloud SDK b'għodda tal-linja tal-kmand gcloud.

  3. Set kubectl - għodda tal-linja tal-kmand biex taħdem magħhom Kubernetes.

    gcloud components install kubectl

  4. Set Docker Community Edition (CE). Se tuża l-għodda tal-linja tal-kmand dockerbiex toħloq immaġini tal-kontenitur għall-applikazzjoni tal-kampjun.

  5. Installa l-għodda Kontroll tal-verżjoni Gitbiex tikseb l-applikazzjoni tal-kampjun minn GitHub.

Niżżel il-kodiċi tal-kampjun

  1. Niżżel il-kodiċi tas-sors helloserver:

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

  2. Mur fid-direttorju tal-kodiċi eżempju:

    cd istio-samples/sample-apps/helloserver

Tesplora applikazzjoni b'diversi servizzi

L-applikazzjoni tal-kampjun hija miktuba f'Python u tikkonsisti f'żewġ komponenti li jinteraġixxu bl-użu SERĦAN:

  • servers: server sempliċi b'endpoint wieħed IKOLLOK, /, li jistampa "hello world" fuq il-console.
  • loadgen: skript li jibgħat it-traffiku lil servers, b'numru konfigurabbli ta' talbiet kull sekonda.

Tħejjija ta' applikazzjoni għal Istio

Tmexxi applikazzjoni mill-kodiċi tas-sors

Biex tesplora l-applikazzjoni tal-kampjun, mexxiha f'Cloud Shell jew fuq il-kompjuter tiegħek.
1) Fil-katalgu istio-samples/sample-apps/helloserver run servers:

python3 server/server.py

Fl-istartjar servers jintwera dan li ġej:

INFO:root:Starting server...

2) Iftaħ tieqa terminali oħra biex tibgħat it-talbiet lil servers. Jekk qed tuża Cloud Shell, ikklikkja l-ikona żid biex tiftaħ sessjoni oħra.
3) Ibgħat talba lil servers:

curl http://localhost:8080

tweġibiet tas-server:

Hello World!

4) Mid-direttorju fejn niżżilt il-kodiċi tal-kampjun, mur fid-direttorju li fih loadgen:

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

5) Oħloq il-varjabbli ambjentali li ġejjin:

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

6) Mexxi virtualenv:

virtualenv --python python3 env

7) Attiva l-ambjent virtwali:

source env/bin/activate

8) Issettja rekwiżiti għal loadgen:

pip3 install -r requirements.txt

9) Mexxi loadgen:

python3 loadgen.py

Fl-istartjar loadgen juri xi ħaġa bħall-messaġġ li ġej:

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

F'tieqa terminali oħra servers joħroġ il-messaġġi li ġejjin lill-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: */*

Mill-perspettiva tan-netwerking, l-applikazzjoni kollha taħdem fuq host wieħed (kompjuter lokali jew magna virtwali Cloud Shell). Għalhekk tista 'tuża localhostbiex tibgħat talbiet lil servers.
10) Biex tieqaf loadgen и servers, daħħal Ctrl-c f'kull tieqa terminali.
11) Fit-tieqa tat-terminal loadgen iddiżattiva l-ambjent virtwali:

deactivate

Ippakkjar ta' applikazzjoni f'kontenituri

Biex tħaddem l-applikazzjoni fuq GKE, għandek bżonn tippakkja l-applikazzjoni ta' eżempju − servers и loadgen - fi Kontenituri. Kontenitur huwa mod biex tiġi ppakkjata applikazzjoni biex tiġi iżolata mill-ambjent tagħha.

Biex tippakkja applikazzjoni f'kontenitur, għandek bżonn dockerfile. dockerfile huwa fajl test li jiddefinixxi kmandi għall-bini tal-kodiċi tas-sors tal-applikazzjoni u d-dipendenzi tagħha fihom Immaġini Docker. Ladarba tinbena, ittella 'l-immaġni f'reġistru tal-kontejners bħal Docker Hub jew Reġistru tal-Kontenituri.

L-eżempju diġà għandu dockerfile għall- servers и loadgen bil-kmandi kollha meħtieġa biex tiġbor immaġini. Hawn taħt - dockerfile għall- servers:

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

  • Team MINN python:3-slim bħala bażi jgħid lil Docker biex juża l-aħħar Immaġini Python 3 bħala bażi.
  • Team KOPJA. . tikkopja l-fajls tas-sors fid-direttorju tax-xogħol kurrenti (fil-każ tagħna biss server.py) għas-sistema tal-fajls tal-kontenitur.
  • PUNT TA' DĦUL jiddefinixxi l-kmand li jintuża biex jibda l-kontenitur. Fil-każ tagħna, dan il-kmand huwa kważi l-istess bħal dak li kont tmexxi server.py mill-kodiċi tas-sors.
  • Team ESPOŻI jindika li servers jistenna dejta mill-port 8080. Dan it-tim mhux jipprovdi portijiet. Din hija xi tip ta 'dokumentazzjoni li hija meħtieġa biex tiftaħ il-port 8080 meta tibda l-kontenitur.

Tħejjija biex tikkontejnizza l-applikazzjoni tiegħek

1) Issettja l-varjabbli ambjentali li ġejjin. Ibdel PROJECT_ID għall-ID tal-proġett GCP tiegħek.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Jużaw il-valuri PROJECT_ID и GCR_REPO inti tag l-immaġni Docker meta tibniha u timbottaha għal Reġistru tal-Kontenituri privat.

2) Issettja l-proġett GCP default għall-għodda tal-linja tal-kmand gcloud.

gcloud config set project $PROJECT_ID

3) Issettja ż-żona default għall-għodda tal-linja tal-kmand gcloud.

gcloud config set compute/zone us-central1-b

4) Kun żgur li s-servizz tar-Reġistru tal-Kontenituri huwa attivat fil-proġett GCP.

gcloud services enable containerregistry.googleapis.com

Server ta' kontenituri

  1. Mur fid-direttorju fejn jinsab l-eżempju servers:

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

  2. Arma l-immaġni bl-użu dockerfile u l-varjabbli ambjentali li ddefinijt qabel:

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

Parametru -t tirrappreżenta t-tikketta Docker. Dan huwa l-isem tal-immaġini li tuża meta tuża l-kontenitur.

  1. Tella' l-immaġni fir-Reġistru tal-Kontenituri:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Kontenitur ta' loadgen

1) Mur fid-direttorju fejn jinsab l-eżempju loadgen:

cd ../loadgen

2) Iġbor l-immaġni:

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

3) Tella' l-immaġni fir-Reġistru tal-Kontenituri:

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

Ara lista ta' stampi

Irrevedi l-lista tal-immaġini fir-repożitorju u vverifika li l-immaġini ttellgħu:

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

Il-kmand juri l-ismijiet tal-immaġini li għadhom kif ttellgħu:

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

Il-ħolqien ta' cluster GKE.

Dawn il-kontenituri jistgħu jitħaddmu fuq magna virtwali Cloud Shell jew fuq kompjuter bil-kmand docker run. Iżda f'ambjent ta 'produzzjoni, għandek bżonn mod kif orkestra l-kontenituri ċentralment. Pereżempju, għandek bżonn sistema li tiżgura li l-kontejners ikunu dejjem għaddejjin, u għandek bżonn mod kif tkabbar u żżid każijiet ta' kontenituri addizzjonali jekk jiżdied it-traffiku.

Biex tħaddem applikazzjonijiet f'kontejners tista' tuża G.K.E.. GKE hija pjattaforma tal-orkestrazzjoni tal-kontejners li tiġbor magni virtwali fi cluster. Kull magna virtwali tissejjaħ node. Il-clusters tal-GKE huma bbażati fuq is-sistema ta' ġestjoni tal-clusters ta' Kubernetes open source. Kubernetes jipprovdi mekkaniżmi għall-interazzjoni mal-cluster.

Il-ħolqien ta' cluster GKE:

1) Oħloq cluster:

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

Team gcloud joħloq cluster istioready fil-proġett GCP u fiż-żona default li speċifikajt. Biex tmexxi Istio, nirrakkomandaw li jkollok mill-inqas 4 nodi u magna virtwali n1-standard-2.

It-tim joħloq il-cluster fi ftit minuti. Meta l-cluster ikun lest, il-kmand joħroġ xi ħaġa bħal din Сообщение.

2) Ipprovdi kredenzjali fl-għodda tal-linja tal-kmand kubectlbiex tużaha biex timmaniġġja l-cluster:

gcloud container clusters get-credentials istioready

3) Issa tista 'tikkomunika ma' Kubernetes permezz kubectl. Pereżempju, il-kmand li ġej jista 'jsib l-istatus tan-nodi:

kubectl get nodes

Il-kmand jipproduċi lista ta’ 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

Kubernetes Kunċetti Ewlenin

Id-dijagramma turi applikazzjoni fuq GKE:

Tħejjija ta' applikazzjoni għal Istio

Qabel ma tuża kontenituri f'GKE, tgħallem il-kunċetti ewlenin ta' Kubernetes. Hemm links fl-aħħar nett jekk trid titgħallem aktar.

  • Nodi u raggruppamenti. Fil-GKE, node hija magna virtwali. Fuq pjattaformi Kubernetes oħra, nodu jista 'jkun kompjuter jew magna virtwali. Cluster huwa ġabra ta' nodi li jistgħu jitqiesu bħala unità waħda fejn tuża applikazzjoni fil-kontejners.
  • Imżiewed. F'Kubernetes, il-kontenituri jimxu fi imżiewed. Pod f'Kubernetes hija unità indiviżibbli. Pod iżomm kontenitur wieħed jew aktar. Inti tiskjera kontenituri tas-server u loadgen fi imżiewed separati. Meta jkun hemm diversi kontenituri f'pod (pereżempju, server tal-applikazzjoni u proxy server), il-kontenituri huma ġestiti bħala entità waħda u jaqsmu r-riżorsi pod.
  • Skjeramenti. F'Kubernetes, skjerament huwa oġġett li huwa ġabra ta 'miżwed identiċi. L-iskjerament tniedi repliki multipli ta’ pods imqassma fuq in-nodi tal-clusters. L-iskjerament jissostitwixxi awtomatikament il-miżwed li fallew jew li ma jirrispondux.
  • Servizz Kubernetes. Meta tħaddem kodiċi tal-applikazzjoni fil-GKE, il-konnessjoni bejn loadgen и servers. Meta bdejt is-servizzi fuq magna virtwali jew desktop tal-Cloud Shell, bgħatt talbiet lil servers по адресу localhost: 8080. Ladarba jiġu skjerati fil-GKE, il-miżwed jiġu esegwiti fuq in-nodi disponibbli. B'mod awtomatiku, m'għandekx kontroll fuq liema node qed jaħdem il-pod, allura inti imżiewed l-ebda indirizz IP permanenti.
    Biex tikseb indirizz IP għal servers, għandek bżonn tiddefinixxi estrazzjoni tan-netwerk fuq il-miżwed. Dak hu Servizz Kubernetes. Is-servizz Kubernetes jipprovdi punt final persistenti għal sett ta 'miżwed. Hemm ftit tipi ta' servizzi. servers użi LoadBalancer, li jipprovdi indirizz IP estern biex tikkuntattja servers minn barra l-cluster.
    Kubernetes għandu wkoll sistema DNS inkorporata li tassenja ismijiet DNS (pereżempju, helloserver.default.cluster.local) servizzi. Grazzi għal dan, il-miżwed fi ħdan il-cluster jikkomunikaw ma 'miżwed oħra fil-cluster f'indirizz permanenti. L-isem DNS ma jistax jintuża barra l-cluster, bħal fil-Cloud Shell jew fuq kompjuter.

Kubernetes manifest

Meta ħadt l-applikazzjoni mis-sors, użajt il-kmand imperattiv python3

server.py

L-imperattiv jimplika verb: "għamel dan."

Kubernetes juża mudell dikjarattiv. Dan ifisser li mhux qed ngħidu lil Kubernetes eżattament x'għandu jagħmel, iżda pjuttost niddeskrivu l-istat mixtieq. Pereżempju, Kubernetes jibda u jwaqqaf il-miżwed kif meħtieġ biex jiżgura li l-istat attwali tas-sistema jaqbel mal-istat mixtieq.

Int tindika l-istat mixtieq f'manifesti jew fajls IAML. Fajl YAML fih speċifikazzjonijiet għal oġġett Kubernetes wieħed jew aktar.

L-eżempju fih fajl YAML għal servers и loadgen. Kull fajl YAML jispeċifika l-istat mixtieq tal-oġġett tal-iskjerament u s-servizz Kubernetes.

server.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloserver
spec:
  selector:
    matchLabels:
      app: helloserver
  replicas: 1
  template:
    metadata:
      labels:
        app: helloserver
    spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: main
        image: gcr.io/google-samples/istio/helloserver:v0.0.1
        imagePullPolicy: Always

  • tip jindika t-tip tal-oġġett.
  • metadata.name jispeċifika l-isem tal-iskjerament.
  • L-ewwel qasam spec fih deskrizzjoni tal-istat mixtieq.
  • spec.repliki jindika n-numru mixtieq ta’ imżiewed.
  • Sezzjoni spec.template jiddefinixxi mudell pod. Hemm qasam fl-ispeċifikazzjoni tal-pod immaġni, li jispeċifika l-isem tal-immaġni li jeħtieġ li tiġi estratta mir-Reġistru tal-Kontenituri.

Is-servizz huwa definit kif ġej:

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

  • LoadBalancer: Il-klijenti jibagħtu talbiet lill-indirizz IP tal-load balancer, li għandu indirizz IP persistenti u huwa aċċessibbli minn barra l-cluster.
  • targetPort: kif tiftakar, it-tim JESPONI 8080 в dockerfile ma pprovdewx portijiet. Inti tipprovdi l-port 8080sabiex inti tista 'tikkuntattja l-kontenitur servers barra l-cluster. Fil-każ tagħna hellosvc.default.cluster.local:80 (isem fil-qosor: hellosvc) jikkorrispondi għall-port 8080 Pod indirizzi IP helloserver.
  • port: Dan huwa n-numru tal-port fejn servizzi oħra fil-cluster se jibagħtu t-talbiet.

loadgen.yaml

Oġġezzjoni għall-iskjerament loadgen.yaml qisek server.yaml. Id-differenza hija li l-oġġett tal-iskjerament fih sezzjoni NS. Jiddefinixxi l-varjabbli ambjentali li huma meħtieġa loadgen u li installajt meta tħaddem l-applikazzjoni mis-sors.

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

Darba loadgen ma jaċċettax talbiet deħlin, għall-qasam tip indikat ClusterIP. Dan it-tip jipprovdi indirizz IP persistenti li s-servizzi fil-cluster jistgħu jużaw, iżda dan l-indirizz IP mhuwiex espost għal klijenti esterni.

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

Skjerament ta' Kontenituri fil-GKE

1) Mur fid-direttorju fejn jinsab l-eżempju servers:

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

2) Iftaħ server.yaml f'editur tat-test.
3) Ibdel l-isem fil-qasam immaġni għall-isem tal-immaġni Docker tiegħek.

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

Ibdel PROJECT_ID għall-ID tal-proġett GCP tiegħek.
4) Issejvja u agħlaq server.yaml.
5) Uża l-fajl YAML għal Kubernetes:

kubectl apply -f server.yaml

Mat-tlestija b'suċċess, il-kmand jipproduċi l-kodiċi li ġej:

deployment.apps/helloserver created
service/hellosvc created

6) Mur fid-direttorju fejn loadgen:

cd ../loadgen

7) Iftaħ loadgen.yaml f'editur tat-test.
8) Ibdel l-isem fil-qasam immaġni għall-isem tal-immaġni Docker tiegħek.

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

Ibdel PROJECT_ID għall-ID tal-proġett GCP tiegħek.
9) Issejvja u agħlaq loadgen.yaml, agħlaq l-editur tat-test.
10) Uża l-fajl YAML għal Kubernetes:

kubectl apply -f loadgen.yaml

Mat-tlestija b'suċċess, il-kmand jipproduċi l-kodiċi li ġej:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Iċċekkja l-istatus tal-imżiewed:

kubectl get pods

Il-kmand juri l-istatus:

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

12) Oħroġ zkuk tal-applikazzjoni mill-pod loadgen. Ibdel POD_ID għall-identifikatur mit-tweġiba preċedenti.

kubectl logs loadgenerator-POD_ID

13) Ikseb indirizzi IP esterni hellosvc:

kubectl get service

Ir-rispons tal-kmand jidher xi ħaġa bħal din:

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) Ibgħat talba lil hellosvc: ibdel ESTERNA_IP għal indirizz IP estern hellosvc.

curl http://EXTERNAL_IP

Ejja nieħdu fuq Istio

Diġà għandek applikazzjoni skjerata għal GKE. loadgen tista' tuża Kubernetes DNS (hellosvc:80) biex tibgħat talbiet lil serversu tista 'tibgħat talbiet lil servers mill-indirizz IP estern. Għalkemm Kubernetes għandu ħafna karatteristiċi, hemm xi informazzjoni nieqsa dwar is-servizzi:

  • Kif jinteraġixxu s-servizzi? X'inhuma r-relazzjonijiet bejn is-servizzi? Kif jgħaddi t-traffiku bejn is-servizzi? Inti konxju li loadgen jibgħat talbiet lil servers, imma immaġina li ma taf xejn dwar l-applikazzjoni. Biex inwieġbu dawn il-mistoqsijiet, inħarsu lejn il-lista ta 'miżwed li jaħdmu fil-GKE.
  • Metriċi. Kemm idum servers jirrispondi għal talba li tkun waslet? Kemm ir-rikjesti kull sekonda jaslu mis-server? Jagħti messaġġi ta' żball?
  • Informazzjoni dwar is-Sigurtà. Traffiku bejn loadgen и servers jgħaddi biss HTTP jew minn mTLS?

Istio iwieġeb dawn il-mistoqsijiet kollha. Biex tagħmel dan, Istio ipoġġi prokura sidecar mibgħut f'kull pod. Il-prokura tal-Mibgħut jinterċetta t-traffiku kollu deħlin u ħerġin lejn il-kontenituri tal-applikazzjoni. Dan ifisser li servers и loadgen tirċievi permezz ta' prokura sidecar Mibgħut, u t-traffiku kollu minn loadgen к servers jgħaddi mill-prokura tal-Mibgħut.

Konnessjonijiet bejn il-prokuri tal-Envoy jiffurmaw xibka tas-servizz. L-arkitettura tal-malji tas-servizz tipprovdi saff ta 'kontroll fuq Kubernetes.

Tħejjija ta' applikazzjoni għal Istio

Peress li l-prokuri tal-Envoy jaħdmu fil-kontenituri tagħhom stess, Istio jista' jiġi installat fuq cluster GKE bi kważi l-ebda tibdil fil-kodiċi tal-applikazzjoni. Imma għamilt xi xogħol biex tħejji l-applikazzjoni tiegħek biex tkun immaniġġjata minn Istio:

  • Servizzi għall-kontejners kollha. Għal skjeramenti servers и loadgen marbut mas-servizz Kubernetes. Anke loadgen, li ma jirċievix talbiet deħlin, hemm servizz.
  • Portijiet fis-servizzi għandu jkollhom ismijiet. Għalkemm il-portijiet tas-servizz jistgħu jitħallew mingħajr isem fil-GKE, Istio jeħtieġ li tispeċifika isem tal-port skond il-protokoll tiegħu. Fil-fajl YAML il-port għal servers imsejħa httpgħaliex is-server juża l-protokoll HTTP... Jekk servizz użati gRPC, inti ssemmi l-port grpc.
  • L-iskjeramenti huma mmarkati. Għalhekk, tista 'tuża l-karatteristiċi tal-ġestjoni tat-traffiku ta' Istio, bħall-qsim tat-traffiku bejn verżjonijiet tal-istess servizz.

Installazzjoni Istio

Hemm żewġ modi kif tinstalla Istio. Can abilita Istio fuq l-estensjoni GKE jew installa l-verżjoni open source ta 'Istio fuq il-cluster. B'Istio fuq GKE, tista' faċilment timmaniġġja l-installazzjonijiet u l-aġġornamenti ta' Istio matul iċ-ċiklu tal-ħajja tal-cluster GKE. Jekk trid l-aħħar verżjoni ta 'Istio jew aktar kontroll fuq il-konfigurazzjoni tal-pannell tal-kontroll Istio tiegħek, installa l-verżjoni open source minflok l-estensjoni Istio fuq GKE. Biex tiddeċiedi dwar l-approċċ, aqra l-artiklu Għandi bżonn Istio fuq GKE?.

Agħżel għażla, irrevedi l-gwida xierqa, u segwi l-istruzzjonijiet biex tinstalla Istio fuq il-cluster tiegħek. Jekk trid tuża Istio mal-applikazzjoni ġdida tiegħek, jippermettu l-implimentazzjoni sidecar għall-ispazju tal-isem inadempjenza.

Tindif

Biex tevita li tiġi ċċarġjata fuq il-kont tiegħek tal-Google Cloud Platform għar-riżorsi li użajt f'dan it-tutorja, ħassar ir-raggruppament tal-kontejners ladarba tkun installajt Istio u lgħabt bl-applikazzjoni tal-kampjun. Dan se jneħħi r-riżorsi kollha tal-clusters, bħal istanzi ta' komputazzjoni, diski, u riżorsi tan-netwerk.

Xi jmiss?

Sors: www.habr.com

Żid kumment