Is uirlis áisiúil é Istio chun feidhmchláir dháilte a nascadh, a dhaingniú agus chun monatóireacht a dhéanamh orthu. Úsáideann Istio teicneolaíochtaí éagsúla chun bogearraí a rith agus a bhainistiú ar scála, lena n-áirítear coimeádáin chun cód feidhmchláir a phacáistiú agus spleáchais le haghaidh imscaradh, agus Kubernetes chun na coimeádáin sin a bhainistiú. Mar sin, le bheith ag obair le Istio ní mór go mbeadh a fhios agat conas a oibríonn feidhmchlár le seirbhísí iolracha bunaithe ar na teicneolaíochtaí seo без Istio. Má tá na huirlisí agus na coincheapa seo ar eolas agat cheana féin, ná bíodh drogall ort an rang teagaisc seo a scipeáil agus dul díreach chuig an rannóg Suiteáil Istio ar Google Kubernetes Engine (GKE) nó síneadh a shuiteáil Istio ar GKE.
Is treoir céim ar chéim é seo nuair a shiúlfaimid tríd an bpróiseas iomlán ó chód foinse go coimeádán GKE chun tuiscint bhunúsach a thabhairt duit ar na teicneolaíochtaí seo trí shampla. Feicfidh tú freisin conas a ghiaráil Istio cumhacht na dteicneolaíochtaí seo. Glacann sé seo leis nach bhfuil aon rud ar eolas agat faoi choimeádáin, Kubernetes, meshes seirbhíse, nó Istio.
tascanna
Sa rang teagaisc seo, déanfaidh tú na tascanna seo a leanas:
Ag foghlaim feidhmchlár simplí dia duit le seirbhísí iolracha.
Rith an feidhmchlár ón gcód foinse.
Pacáistiú an iarratais i gcoimeádáin.
Cruthú braisle Kubernetes.
Coimeádáin a imscaradh isteach i mbraisle.
Sula dtosaíonn tú
Lean na treoracha chun Kubernetes Engine API a chumasú:
Sa rang teagaisc seo, is féidir leat Cloud Shell a úsáid, a ullmhaíonn an meaisín fíorúil g1-beag in Google Compute Engine le Linux bunaithe ar Debian, nó le ríomhaire Linux nó macOS.
Rogha A: Cloud Shell a úsáid
Na buntáistí a bhaineann le Cloud Shell a úsáid:
Timpeallachtaí forbartha Python 2 agus Python 3 (lena n-áirítear virtualenv) atá cumraithe go hiomlán.
Uirlisí Líne Ordú cloud, docker, git и cubectl, a úsáidfimid suiteáilte cheana féin.
Tá an feidhmchlár samplach scríofa i Python agus tá dhá chomhpháirt ann a idirghníomhaíonn ag baint úsáide as REST:
freastalaí: freastalaí simplí le críochphointe amháin FAIGH, /, a phriontálann "hello world" chuig an consól.
loadgen: script a sheolann trácht chuig freastalaí, le líon in-chumraithe iarratas in aghaidh an tsoicind.
Feidhmchlár a rith ón gcód foinseach
Chun an feidhmchlár samplach a iniúchadh, rith é in Cloud Shell nó ar do ríomhaire.
1) Sa chatalóg istio-samplaí/sample-apps/helloserver rith freastalaí:
python3 server/server.py
Ag am tosaithe freastalaí tá an méid seo a leanas ar taispeáint:
INFO:root:Starting server...
2) Oscail fuinneog teirminéil eile chun iarratais a sheoladh chucu freastalaí. Má tá Cloud Shell in úsáid agat, cliceáil ar an deilbhín leis chun seisiún eile a oscailt.
3) Iarratas a sheoladh chuig freastalaí:
curl http://localhost:8080
freagraí freastalaí:
Hello World!
4) Ón eolaire inar íoslódáil tú an cód samplach, téigh go dtí an eolaire ina bhfuil loadgen:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
5) Cruthaigh na hathróga timpeallachta seo a leanas:
Ó thaobh líonrú de, ritheann an feidhmchlár ar fad ar óstach amháin (ríomhaire áitiúil nó meaisín fíorúil Cloud Shell). Dá bhrí sin is féidir leat é a úsáid localhostchun iarratais a sheoladh chuig freastalaí.
10) A stopadh loadgen и freastalaí, isteach Ctrl-c i ngach fuinneog teirminéil.
11) Sa fhuinneog críochfoirt loadgen an timpeallacht fhíorúil a dhíghníomhachtú:
deactivate
Iarratas a phacáistiú i gcoimeádáin
Chun an feidhmchlár a rith ar GKE, ní mór duit an feidhmchlár samplach a phacáistiú − freastalaí и loadgen - ag Gabhdáin. Is bealach é coimeádán chun feidhmchlár a phacáistiú chun é a leithlisiú óna dtimpeallacht.
Chun iarratas a phacáil isteach i gcoimeádán, ní mór duit dockerfile. dockerfile Is comhad téacs é a shainíonn orduithe chun cód foinse an fheidhmchláir agus a spleáchais a thógáil isteach Íomhá docker. Nuair a bheidh tú tógtha, uaslódálann tú an íomhá chuig clárlann coimeádán mar Docker Hub nó Clárlann Coimeádán.
Tá an sampla cheana féin dockerfile le haghaidh freastalaí и loadgen leis na horduithe riachtanacha go léir chun íomhánna a bhailiú. Thíos - dockerfile le haghaidh freastalaí:
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" ]
Foireann Ó python: 3-caol mar bhonn insíonn do Docker an ceann is déanaí a úsáid Python 3 íomhá mar bhonn.
Foireann CÓIP. . cóipeáil na comhaid foinse chuig an eolaire oibre reatha (ár gcás amháin freastalaí.py) chuig córas comhaid an choimeádáin.
ENTRYPOINT sainmhíníonn sé an t-ordú a úsáidtear chun an coimeádán a thosú. Is é ár gcás, tá an t-ordú seo beagnach mar an gcéanna leis an gceann a d'úsáid tú a rith freastalaí.py ón gcód foinse.
Foireann MÍNIÚ léiríonn sin freastalaí ag fanacht le haghaidh sonraí tríd an gcalafort 8080. Níl an fhoireann seo Soláthraíonn calafoirt. Is doiciméadú de chineál éigin é seo a theastaíonn chun an calafort a oscailt 8080 nuair a thosaíonn an coimeádán.
Ag ullmhú chun d'iarratas a choimeád
1) Socraigh na hathróga timpeallachta seo a leanas. Ionadaigh PROJECT_ID chuig do ID tionscadail GCP.
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
Ag baint úsáide as luachanna PROJECT_ID и GCR_REPO clibíonn tú íomhá an Docker nuair a thógann tú é agus brú chuig Clárlann Coimeádán príobháideach í.
2) Socraigh an tionscadal GCP réamhshocraithe don uirlis líne ordaithe cloud.
gcloud config set project $PROJECT_ID
3) Socraigh an crios réamhshocraithe don uirlis líne ordaithe cloud.
gcloud config set compute/zone us-central1-b
4) Bí cinnte go bhfuil an tseirbhís Chlárlann Coimeádán cumasaithe sa tionscadal GCP.
Athbhreithnigh liosta na n-íomhánna sa stór agus deimhnigh go bhfuil na híomhánna uaslódáilte:
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio
Taispeánann an t-ordú ainmneacha na n-íomhánna nua-uaslódála:
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
Cruthú braisle GKE.
D’fhéadfaí na coimeádáin seo a rith ar mheaisín fíorúil Cloud Shell nó ar ríomhaire leis an ordú docker reáchtáil. Ach i dtimpeallacht táirgthe, is gá duit bealach chun coimeádáin a stiúradh go lárnach. Mar shampla, tá córas ag teastáil uait a chinntíonn go mbíonn coimeádáin ag rith i gcónaí, agus ní mór duit bealach chun cásanna coimeádán breise a mhéadú agus a chasadh suas má mhéadaíonn an trácht.
Is féidir leat úsáid a bhaint as feidhmchláir coimeádaithe a rith G.K.E.. Is ardán orchestration coimeádán é GKE a chomhbhailíonn meaisíní fíorúla i mbraisle. Tugtar nód ar gach meaisín fíorúil. Tá braislí GKE bunaithe ar chóras bainistíochta braisle foinse oscailte Kubernetes. Soláthraíonn Kubernetes meicníochtaí chun idirghníomhú leis an mbraisle.
Foireann cloud cruthaíonn sé braisle istioready sa tionscadal GCP agus sa chrios réamhshocraithe a shonraigh tú. Chun Istio a rith, molaimid go mbeadh ar a laghad 4 nóid agus meaisín fíorúil agat n1-chaighdeán-2.
Cruthaíonn an fhoireann an braisle i gceann cúpla bomaite. Nuair a bhíonn an braisle réidh, aschuir an t-ordú rud éigin mar seo сообщение.
2) Cuir dintiúir ar fáil san uirlis líne ordaithe cubectlé a úsáid chun an braisle a bhainistiú:
3) Anois is féidir leat cumarsáid a dhéanamh le Kubernetes trí cubectl. Mar shampla, is féidir leis an ordú seo a leanas stádas na nóid a fháil amach:
kubectl get nodes
Táirgeann an t-ordú liosta nóid:
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
Coincheapa Eochair Kubernetes
Taispeánann an léaráid feidhmchlár ar GKE:
Sula n-imscarann tú coimeádáin in GKE, foghlaim príomhchoincheapa Kubernetes. Tá naisc ag an deireadh más mian leat níos mó a fhoghlaim.
Nóid agus braislí. In GKE, is meaisín fíorúil é nód. Ar ardáin eile Kubernetes, is féidir le nód a bheith ina ríomhaire nó ina mheaisín fíorúil. Is éard is braisle ann ná cnuasach nóid is féidir a mheas mar aonad aonair ina n-imscarann tú feidhmchlár coimeádán.
Potaí. I Kubernetes, ritheann coimeádáin i pods. Is aonad doroinnte é Pod in Kubernetes. Coinníonn Pod coimeádán amháin nó níos mó. Imscarann tú coimeádáin freastalaí agus loadgen i pods ar leith. Nuair a bhíonn roinnt coimeádáin i pod (mar shampla, freastalaí iarratais agus seachfhreastalaí), déantar coimeádáin a bhainistiú mar aonán aonair agus roinntear acmhainní pod.
Imscaradh. In Kubernetes, is réad é imscaradh ar bailiúchán de phodaí comhionanna é. Seolann an t-imscaradh go leor macasamhla de choda scaipthe thar nóid bhraisle. Tagann an t-imscaradh go huathoibríoch in ionad pods ar theip orthu nó nach bhfreagraíonn.
Seirbhís Kubernetes. Nuair a bheidh cód iarratais á rith i GKE, an nasc idir loadgen и freastalaí. Nuair a chuir tú tús le seirbhísí ar mheaisín fíorúil nó ar dheasc Cloud Shell, sheol tú iarratais chuig freastalaí ag localhost: 8080. Nuair a dhéantar iad a imscaradh chuig GKE, déantar pods a fhorghníomhú ar na nóid atá ar fáil. De réir réamhshocraithe, níl aon smacht agat ar an nód a bhfuil an pod ag rith air, mar sin duitse pods gan aon seoltaí IP buana.
Chun seoladh IP a fháil le haghaidh freastalaí, ní mór duit astarraingt líonra a shainiú ar bharr na pods. Sin a bhfuil sé Seirbhís Kubernetes. Soláthraíonn an tseirbhís Kubernetes críochphointe marthanach do shraith pods. Tá cúpla cineálacha seirbhísí. freastalaí úsáidí Luchtaigh Cothromóir, a sholáthraíonn seoladh IP seachtrach chun teagmháil a dhéanamh freastalaí ón taobh amuigh den bhraisle.
Tá córas DNS ionsuite ag Kubernetes freisin a sannann ainmneacha DNS (mar shampla, helloserver.default.braisle.áitiúil) seirbhísí. A bhuí leis seo, déanann pods laistigh den bhraisle cumarsáid le pods eile sa bhraisle ag seoladh buan. Ní féidir an t-ainm DNS a úsáid lasmuigh den bhraisle, mar shampla i Cloud Shell nó ar ríomhaire.
Léirítear Kubernetes
Nuair a rith tú an feidhmchlár ón bhfoinse, d'úsáid tú an t-ordú riachtanach python3
freastalaí.py
Ciallaíonn Imperative briathar: "déan é seo."
Úsáideann Kubernetes samhail dhearbhaitheach. Ciallaíonn sé seo nach bhfuil muid ag insint go díreach do Kubernetes cad atá le déanamh, ach ag cur síos ar an staid inmhianaithe. Mar shampla, tosaíonn agus stopann Kubernetes pods de réir mar is gá chun staid iarbhír an chórais a choinneáil comhsheasmhach leis an stát atá ag teastáil.
Léiríonn tú an staid inmhianaithe i manifests nó comhaid YAML. Tá sonraíochtaí le haghaidh réad Kubernetes amháin nó níos mó i gcomhad YAML.
Tá comhad YAML le haghaidh freastalaí и loadgen. Sonraíonn gach comhad YAML staid inmhianaithe an réad imscartha agus seirbhís Kubernetes.
meiteashonraí.ainm sonraíonn an t-ainm imlonnaithe.
An chéad réimse Sonraíocht tá cur síos ar an staid inmhianaithe.
sonra.macasamhla léiríonn an líon inmhianaithe pods.
Roinn sampla.teimpléad sainmhíníonn teimpléad pod. Tá réimse sa tsonraíocht pod íomha, a shonraíonn ainm na híomhá atá le baint as an gClárlann Coimeádán.
Luchtaigh Cothromóir: Cuireann cliaint iarratais chuig seoladh IP an chothromóra ualaigh, a bhfuil seoladh IP leanúnach aige agus atá inrochtana ón taobh amuigh den bhraisle.
spriocPort: mar is cuimhin leat, an fhoireann Nochtadh 8080 в dockerfile níor chuir sé poirt ar fáil. Soláthraíonn tú an port 8080ionas gur féidir leat teagmháil a dhéanamh leis an gcoimeádán freastalaí taobh amuigh den bhraisle. Inár gcás hellosvc.default.cluster.local:80 (ainm gearr: dia duit) fhreagraíonn don phort 8080 Seoltaí IP pod freastalaí dia duit.
calafort: Seo an uimhir phoirt a seolfaidh seirbhísí eile sa bhraisle iarratais.
loadgen.yaml
Imscaradh agóid le loadgen.yaml cuma freastalaí.yaml. Is é an difríocht ná go bhfuil roinn sa réad imscartha env. Sainíonn sé na hathróga timpeallachta atá de dhíth loadgen agus a shuiteáil tú nuair a bhí an feidhmchlár á rith ón bhfoinse.
Am loadgen ní ghlacann sé le hiarratais isteach, don réimse cineál léirithe ClusterIP. Soláthraíonn an cineál seo seoladh IP leanúnach ar féidir le seirbhísí sa bhraisle a úsáid, ach níl an seoladh IP seo nochta do chliaint sheachtracha.
Ionadaigh PROJECT_ID chuig do ID tionscadail GCP.
9) Sábháil agus dún loadgen.yaml, dún an t-eagarthóir téacs.
10) Imscaradh an comhad YAML chuig Kubernetes:
kubectl apply -f loadgen.yaml
Nuair a bheidh sé críochnaithe go rathúil, táirgeann an t-ordú an cód seo a leanas:
deployment.apps/loadgenerator created
service/loadgensvc created
11) Seiceáil stádas na pods:
kubectl get pods
Taispeánann an t-ordú an stádas:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) Bain logaí iarratais as an pod loadgen. Ionadaigh POD_ID chuig an aitheantóir ón bhfreagra roimhe seo.
kubectl logs loadgenerator-POD_ID
13) Faigh seoltaí IP seachtracha dia duit:
kubectl get service
Breathnaíonn an freagra ordaithe rud éigin mar seo:
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) Iarratas a sheoladh chuig dia duit: ionad EXTERNAL_IP chuig seoladh IP seachtrach dia duit.
curl http://EXTERNAL_IP
Gabhaimid ar Istio
Tá feidhmchlár imlonnaithe chuig GKE agat cheana féin. loadgen is féidir Kubernetes DNS a úsáid (Dia duitvc:80) iarratais a chur chuig freastalaíagus is féidir leat iarratais a sheoladh chuig freastalaí trí sheoladh IP seachtrach. Cé go bhfuil go leor gnéithe ag Kubernetes, tá roinnt faisnéise in easnamh faoi na seirbhísí:
Conas a idirghníomhaíonn seirbhísí? Cad iad na caidrimh idir seirbhísí? Conas a shreabhann an trácht idir seirbhísí? An bhfuil a fhios agat go bhfuil loadgen seolann iarratais chuig freastalaí, ach samhlaigh nach bhfuil aon rud ar eolas agat faoin bhfeidhmchlár. Chun na ceisteanna seo a fhreagairt, déanaimis féachaint ar an liosta de na pods reatha in GKE.
Méadracht. Cé chomh fada freastalaí freagra a thabhairt ar iarratas isteach? Cé mhéad iarratas in aghaidh an tsoicind a fhaigheann an freastalaí? An dtugann sé teachtaireachtaí earráide?
Faisnéis Slándála. Trácht idir loadgen и freastalaí ach Gabhann tríd HTTP nó le mTLS?
Freagraíonn Istio na ceisteanna seo go léir. Chun seo a dhéanamh, cuireann Istio seachfhreastalaí taobhcharr Toscaire i ngach pod. Déanann seachfhreastalaí an Toscaire gach trácht isteach agus amach a idircheapadh chuig coimeádáin feidhmchláir. Ciallaíonn sé sin freastalaí и loadgen fháil trí Thoscaire seachfhreastalaí taobhcharr, agus gach trácht ó loadgen к freastalaí téann tríd an seachfhreastalaí Toscaire.
Cruthaíonn naisc idir seachvótálaithe Toscaire mogalra seirbhíse. Soláthraíonn an ailtireacht mogalra seirbhíse sraith rialaithe ar bharr Kubernetes.
Ós rud é go ritheann seachvótálaithe Toscaire ina gcoimeádáin féin, is féidir Istio a shuiteáil ar bharr braisle GKE gan beagnach aon athruithe ar an gcód iarratais. Ach tá roinnt oibre déanta agat chun d’iarratas a ullmhú le bheith á bhainistiú ag Istio:
Seirbhísí do gach coimeádán. Chun imscaradh freastalaí и loadgen ceangailte le seirbhís Kubernetes. Fiú loadgen, nach bhfaigheann iarratais ag teacht isteach, tá seirbhís.
Caithfidh ainmneacha a bheith ar chalafoirt i seirbhísí. Cé gur féidir poirt seirbhíse a fhágáil gan ainm in GKE, éilíonn Istio duit a shonrú ainm poirt de réir a phrótacail. Sa chomhad YAML an port le haghaidh freastalaí ar a dtugtar httptoisc go n-úsáideann an freastalaí an prótacal HTTP. Dá seirbhís úsáidtear gRPC, d'ainmnighfeá an port grpc.
Tá imscaradh bratach. Mar sin, is féidir leat gnéithe bainistíochta tráchta Istio a úsáid, mar shampla trácht a roinnt idir leaganacha den tseirbhís chéanna.
Suiteáil
Tá dhá bhealach ann chun Istio a shuiteáil. An féidir chumasú Istio ar síneadh GKE nó shuiteáil an leagan foinse oscailte de Istio ar an mbraisle. Le Istio ar GKE, is féidir leat suiteálacha agus uasghráduithe Istio a bhainistiú go héasca ar feadh shaolré braisle GKE. Más mian leat an leagan is déanaí de Istio nó níos mó smachta ar do chumraíocht painéal rialaithe Istio, suiteáil an leagan foinse oscailte in ionad an síneadh Istio on GKE. Chun cinneadh a dhéanamh ar an gcur chuige, léigh an t-alt An bhfuil Istio ar GKE de dhíth orm?.
Roghnaigh rogha, athbhreithnigh an treoir chuí, agus lean na treoracha chun Istio a shuiteáil ar do bhraisle. Más mian leat Istio a úsáid le d’fheidhmchlár nua-imlonnaithe, cur i bhfeidhm taobhcharr a chumasú don ainmspás réamhshocraithe.
Glanadh
Chun nach ngearrfar táille ar do chuntas Google Cloud Platform as na hacmhainní a d’úsáid tú sa rang teagaisc seo, scrios an bhraisle coimeádán nuair a bheidh Istio suiteáilte agat agus nuair a bheidh tú ag imirt leis an bhfeidhmchlár samplach. Bainfidh sé seo na hacmhainní braisle go léir, ar nós cásanna ríomha, dioscaí agus acmhainní líonra.
Cad atá romhainn?
Déan iniúchadh ar na teicneolaíochtaí seo a leanas: