Tha Istio na inneal goireasach airson a bhith a’ ceangal, a’ daingneachadh agus a’ cumail sùil air tagraidhean sgaoilte. Bidh Istio a’ cleachdadh grunn theicneòlasan gus bathar-bog a ruith agus a riaghladh aig sgèile, a’ toirt a-steach soithichean gus còd tagraidh a phacadh agus eisimeileachd airson an cleachdadh, agus Kubernetes gus na soithichean sin a riaghladh. Mar sin, airson a bhith ag obair le Istio feumaidh fios a bhith agad mar a tha tagradh le grunn sheirbheisean stèidhichte air na teicneòlasan sin ag obair gun Istio. Ma tha na h-innealan agus na bun-bheachdan sin eòlach ort mu thràth, na bi leisg an oideachadh seo a sheachnadh agus a dhol dìreach chun roinn A’ stàladh Istio air Google Kubernetes Engine (GKE) no leudachadh a stàladh Istio air GKE.
Is e stiùireadh ceum air cheum a tha seo far an coisich sinn tron phròiseas gu lèir bho chòd stòr gu soitheach GKE gus tuigse bhunaiteach a thoirt dhut air na teicneòlasan sin tro eisimpleir. Chì thu cuideachd mar a tha Istio a’ cleachdadh cumhachd nan teicneòlasan sin. Tha seo a’ gabhail ris nach eil fios agad càil mu shoithichean, Kubernetes, meshes seirbheis, no Istio.
gnìomhan
San oideachadh seo, nì thu na gnìomhan a leanas:
Ag ionnsachadh tagradh cruinne Hello sìmplidh le grunn sheirbheisean.
Ruith an aplacaid bhon chòd stòr.
A 'pacadh an tagraidh ann an soithichean.
A 'cruthachadh buidheann de Kubernetes.
A 'cur soithichean a-steach gu buidheann.
Mus tòisich thu
Lean an stiùireadh gus an Kubernetes Engine API a chomasachadh:
San oideachadh seo, faodaidh tu Cloud Shell a chleachdadh, a bhios ag ullachadh an inneal brìgheil g1-beag ann an Google Compute Engine le Linux stèidhichte air Debian, no coimpiutair Linux no macOS.
Roghainn A: A’ cleachdadh Cloud Shell
Buannachdan bho bhith a’ cleachdadh Cloud Shell:
Àrainneachdan leasachaidh Python 2 agus Python 3 (a’ gabhail a-steach virtualenv) air an làn rèiteachadh.
Innealan loidhne-àithne clod, docker, git и cubectl, a chleachdas sinn air an stàladh mu thràth.
Stàlaich cubectl - inneal loidhne-àithne airson obrachadh leis Kubernetes.
gcloud components install kubectl
Stàlaich Deasachadh Coimhearsnachd Docker (CE). Cleachdaidh tu an inneal loidhne-àithne dockergus ìomhaighean container a chruthachadh airson an tagradh sampall.
Stàlaich an t-inneal Git smachd tionndadhgus an tagradh sampall fhaighinn bho GitHub.
Tha an tagradh sampall air a sgrìobhadh ann am Python agus tha dà phàirt ann a bhios ag eadar-obrachadh le bhith a’ cleachdadh CÒRR:
frithealaiche: frithealaiche sìmplidh le aon phuing crìochnachaidh FAIGH, /, a tha a 'clò-bhualadh "hello world" chun a' chonsail.
luchdaichgen: sgriobt a chuireas trafaig gu frithealaiche, le àireamh rèiteachaidh de dh'iarrtasan gach diog.
A’ ruith aplacaid bhon chòd thùsail
Gus sgrùdadh a dhèanamh air an tagradh sampall, ruith e ann an Cloud Shell no air do choimpiutair.
1) Anns a 'chatalog istio-samples/sample-apps/helloserver ruith frithealaiche:
python3 server/server.py
Aig toiseach tòiseachaidh frithealaiche tha na leanas air a thaisbeanadh:
INFO:root:Starting server...
2) Fosgail uinneag crìochnachaidh eile gus iarrtasan a chuir thuige frithealaiche. Ma tha thu a’ cleachdadh Cloud Shell, cliog air an ìomhaigh cuir ris gus seisean eile fhosgladh.
3) Cuir iarrtas gu frithealaiche:
curl http://localhost:8080
freagairtean an fhrithealaiche:
Hello World!
4) Bhon eòlaire far an do luchdaich thu sìos an còd sampall, rachaibh chun eòlaire anns a bheil luchdaichgen:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
5) Cruthaich na caochladairean àrainneachd a leanas:
Bho shealladh lìonraidh, bidh an tagradh gu lèir a ’ruith air aon aoigh (coimpiutar ionadail no inneal brìgheil Cloud Shell). Mar sin faodaidh tu a chleachdadh localhostiarrtasan a chur gu frithealaiche.
10) Gus stad luchdaichgen и frithealaiche, cuir a-steach Ctrl-c anns a h-uile uinneag terminal.
11) Anns an uinneag crìche luchdaichgen cuir dheth an àrainneachd bhrìgheil:
deactivate
Iarrtas pacaidh ann an containers
Gus an tagradh a ruith air GKE, feumaidh tu an tagradh eisimpleir a phacadh - frithealaiche и luchdaichgen - a-steach soithichean. Tha soitheach na dhòigh air tagradh a phacadh gus a sgaradh bhon àrainneachd aige.
Gus tagradh a phacadh a-steach do shoitheach, feumaidh tu Faidhle docker. Faidhle docker na fhaidhle teacsa a tha a’ mìneachadh òrdughan airson còd stòr an tagraidh agus na eisimeileachd a th’ ann Dealbh docker. Nuair a bhios tu air a thogail, bidh thu a’ luchdachadh suas an ìomhaigh gu clàr container leithid Docker Hub no Clàradh Container.
Tha an eisimpleir mu thràth Faidhle docker airson frithealaiche и luchdaichgen leis na h-òrdughan riatanach uile airson ìomhaighean a chruinneachadh. Gu h-ìosal - Faidhle docker airson frithealaiche:
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" ]
sgioba BHO python: 3-slim mar bhunait ag iarraidh air Docker am fear as ùire a chleachdadh Python 3 dealbh a mar bhunait.
sgioba LAOIDH. . lethbhreac a dhèanamh de na faidhlichean tùsail chun eòlaire obrach gnàthach (anns a’ chùis againn a-mhàin frithealaiche.py) gu siostam faidhle an t-soithich.
EADAR-MHINEACHADH a’ mìneachadh an àithne a thathas a’ cleachdadh gus an soitheach a thòiseachadh. Anns a 'chùis againn, tha an àithne seo cha mhòr an aon rud ris an fhear a chleachd thu a bhith a' ruith frithealaiche.py bhon chòd stòr.
sgioba TORAIDHEAN a’ nochdadh sin frithealaiche feitheamh airson dàta tron phort 8080. Chan eil an sgioba seo a’ toirt seachad puirt. Is e seo seòrsa de sgrìobhainnean a tha a dhìth gus am port fhosgladh 8080 nuair a thòisicheas an soitheach.
Ag ullachadh airson an tagradh agad a stòradh
1) Suidhich na caochladairean àrainneachd a leanas. Cuir na àite PROJECT_ID gu ID a’ phròiseict GCP agad.
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
A 'cleachdadh luachan PROJECT_ID и GCR_REPO bidh thu a’ tagadh ìomhaigh an Docker nuair a thogas tu e agus ga phutadh gu Clàr-gleidhidh prìobhaideach.
2) Suidhich am pròiseact GCP bunaiteach airson an inneal loidhne-àithne clod.
gcloud config set project $PROJECT_ID
3) Suidhich an sòn bunaiteach airson an inneal loidhne-àithne clod.
gcloud config set compute/zone us-central1-b
4) Dèan cinnteach gu bheil an t-seirbheis Clàradh Container air a chomasachadh sa phròiseact GCP.
Dèan lèirmheas air liosta nan ìomhaighean san stòr agus dearbhaich gun deach na h-ìomhaighean a luchdachadh suas:
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio
Bidh an àithne a’ taisbeanadh ainmean nan dealbhan a chaidh a luchdachadh suas às ùr:
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
A’ cruthachadh buidheann GKE.
Dh’ fhaodadh na soithichean sin a bhith air an ruith air inneal brìgheil Cloud Shell no air coimpiutair leis an àithne docker run. Ach ann an àrainneachd cinneasachaidh, feumaidh tu dòigh air soithichean a chuir air dòigh sa mheadhan. Mar eisimpleir, feumaidh tu siostam a nì cinnteach gu bheil soithichean an-còmhnaidh a’ ruith, agus feumaidh tu dòigh air barrachd shoithichean a mheudachadh agus a shnìomh ma thèid trafaic àrdachadh.
Gus tagraidhean container a ruith as urrainn dhut a chleachdadh G.K.E.. Tha GKE na àrd-ùrlar orchestration container a bhios a’ cruinneachadh innealan brìgheil gu cruinneachadh. Canar nód ris gach inneal brìgheil. Tha cruinneachaidhean GKE stèidhichte air siostam riaghlaidh cnuasachadh stòr fosgailte Kubernetes. Tha Kubernetes a’ toirt seachad uidheamachdan airson eadar-obrachadh leis a’ bhuidheann.
sgioba clod a’ cruthachadh cruinneachadh ùr anns a’ phròiseact GCP agus an sòn bunaiteach a shònraich thu. Gus Istio a ruith, tha sinn a’ moladh gum bi co-dhiù 4 nodan agus inneal brìgheil ann n1-inbhe-2.
Bidh an sgioba a’ cruthachadh a’ bhuidheann ann am beagan mhionaidean. Nuair a bhios an cruinneachadh deiseil, bidh an àithne a’ toirt a-mach rudeigin mar seo teachdaireachd.
2) Thoir seachad teisteanasan anns an inneal loidhne-àithne cubectla chleachdadh airson a’ bhuidheann a stiùireadh:
3) A-nis faodaidh tu conaltradh le Kubernetes tro cubectl. Mar eisimpleir, faodaidh an àithne a leanas faighinn a-mach inbhe nodan:
kubectl get nodes
Bidh an àithne a’ toirt a-mach liosta de nodan:
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 prìomh bhun-bheachdan
Tha an diagram a’ sealltainn tagradh air GKE:
Mus cuir thu soithichean ann an GKE, ionnsaich na prìomh bhun-bheachdan aig Kubernetes. Tha ceanglaichean aig an deireadh ma tha thu airson barrachd ionnsachadh.
Nòtaichean agus cruinneachaidhean. Ann an GKE, is e inneal brìgheil a th’ ann an nód. Air àrd-ùrlaran Kubernetes eile, faodaidh nód a bhith na choimpiutair no na inneal brìgheil. Is e cruinneachadh de nodan a th’ ann am brabhsair a dh’fhaodar a mheas mar aonad singilte far am bi thu a’ cleachdadh tagradh soithich.
Podan. Ann an Kubernetes, bidh soithichean a 'ruith ann am pods. Tha Pod ann an Kubernetes na aonad do-roinnte. Bidh Pod a’ cumail aon shoitheach no barrachd. Bidh thu a’ cleachdadh soithichean frithealaiche agus luchdaichgen ann am poitean fa leth. Nuair a tha grunn shoithichean ann am pod (mar eisimpleir, frithealaiche tagraidh agus frithealaiche progsaidh), tha soithichean air an riaghladh mar aon bhuidheann agus a’ roinn ghoireasan pod.
Cleachdaidhean. Ann an Kubernetes, tha cleachdadh na nì a tha na chruinneachadh de phodan co-ionann. Bidh cleachdadh a’ cur air bhog iomadh mac-samhail de pods air an sgaoileadh thairis air nodan brabhsair. Bidh cleachdadh gu fèin-ghluasadach a’ dol an àite pods a dh’ fhàilnich no nach eil a’ freagairt.
Seirbheis Kubernetes. Nuair a ruitheas tu còd tagraidh ann an GKE, bidh an ceangal eadar luchdaichgen и frithealaiche. Nuair a thòisich thu air seirbheisean air inneal brìgheil no deasg Cloud Shell, chuir thu iarrtasan gu frithealaiche aig localhost: 8080. Nuair a thèid an cur gu GKE, thèid pods a chuir gu bàs air na nodan a tha rim faighinn. Gu gnàthach, chan eil smachd agad air dè an nód a tha am pod a’ ruith air, mar sin thusa pods chan eil seòlaidhean IP maireannach ann.
Airson seòladh IP fhaighinn airson frithealaiche, feumaidh tu tarraing lìonra a mhìneachadh air mullach nan pods. Sin mar a tha e Seirbheis Kubernetes. Tha seirbheis Kubernetes a’ toirt seachad crìoch leantainneach airson seata de pods. Tha beagan ann sheòrsaichean de sheirbheisean. frithealaiche cleachdaidhean Loadbalancer, a bheir seachad seòladh IP taobh a-muigh airson fios a chuir thu frithealaiche bho thaobh a-muigh na buidhne.
Tha siostam DNS togte aig Kubernetes cuideachd a bhios a’ sònrachadh ainmean DNS (mar eisimpleir, helloserver.default.cluster.local) seirbhisean. Taing dha seo, bidh pods taobh a-staigh a’ bhuidheann a’ conaltradh le pods eile sa bhuidheann aig seòladh maireannach. Chan urrainnear an t-ainm DNS a chleachdadh taobh a-muigh a’ bhraisle, leithid ann an Cloud Shell no air coimpiutair.
Kubernetes a 'nochdadh
Nuair a ruith thu an tagradh bhon stòr, chleachd thu an àithne riatanach python3
frithealaiche.py
Tha Imperative a’ ciallachadh gnìomhair: “dèan seo.”
Bidh Kubernetes a’ cleachdadh modail dearbhach. Tha seo a 'ciallachadh nach eil sinn ag innse do Kubernetes dè dìreach a nì sinn, ach a' toirt cunntas air an staid a tha sinn ag iarraidh. Mar eisimpleir, bidh Kubernetes a 'tòiseachadh agus a' stad pods mar a dh 'fheumar gus dèanamh cinnteach gu bheil fìor staid an t-siostaim a' freagairt ris an stàit a tha a dhìth.
Bidh thu a’ comharrachadh an staid a tha thu ag iarraidh ann am manifestos no faidhlichean YAML. Ann am faidhle YAML tha mion-chomharrachadh airson aon nì Kubernetes no barrachd.
Anns an eisimpleir tha faidhle YAML airson frithealaiche и luchdaichgen. Bidh gach faidhle YAML a’ sònrachadh staid miannaichte an nì cleachdadh agus seirbheis Kubernetes.
metadata.name a’ sònrachadh ainm an t-suidheachaidh.
A 'chiad raon sònrachadh tha tuairisgeul ann air an staid a tha thu ag iarraidh.
mac-samhail a’ comharrachadh an àireamh de phònaichean a tha thu ag iarraidh.
Earrann spec.template a’ mìneachadh teamplaid pod. Tha raon anns an t-sònrachadh pod dealbh, a tha a 'sònrachadh ainm an ìomhaigh a dh'fheumas a bhith air a thoirt a-mach às a' Chlàr Container.
Tha an t-seirbheis air a mhìneachadh mar a leanas:
Loadbalancer: Bidh teachdaichean a’ cur iarrtasan gu seòladh IP an neach-cothromachaidh luchdan, aig a bheil seòladh IP seasmhach agus a tha ruigsinneach bho thaobh a-muigh a’ bhuidheann.
targaid Port: mar a tha cuimhne agad, an sgioba Sealladh farsaing air 8080 в Faidhle docker cha tug e seachad puirt. Bheir thu seachad am port 8080gus an urrainn dhut fios a chuir chun bhogsa frithealaiche taobh a-muigh na buidhne. Anns a 'chùis againn hellosvc.default.cluster.local:80 (ainm goirid: halò) a’ freagairt ris a’ phort 8080 Seòlaidhean IP pod frithealaidh.
port: Seo an àireamh puirt far an cuir seirbheisean eile sa bhuidheann iarrtasan.
luchdaichgen.yaml
Cur an sàs an aghaidh luchdaichgen.yaml Coimhead coltach frithealaiche.yaml. Is e an t-eadar-dhealachadh gu bheil earrann anns an nì cleachdadh approx. Bidh e a’ mìneachadh nan caochladairean àrainneachd a tha a dhìth luchdaichgen agus a chuir thu a-steach nuair a ruith thu an aplacaid bhon stòr.
Ùine luchdaichgen chan eil e a’ gabhail ri iarrtasan a tha a’ tighinn a-steach, airson an raoin seòrsa air a chomharrachadh ClusterIP. Tha an seòrsa seo a’ toirt seachad seòladh IP seasmhach a dh’ fhaodas seirbheisean sa bhuidheann a chleachdadh, ach chan eil an seòladh IP seo fosgailte do luchd-dèiligidh bhon taobh a-muigh.
Cuir na àite PROJECT_ID gu ID a’ phròiseict GCP agad.
9) Sàbhail agus dùin luchdaichgen.yaml, dùin an deasaiche teacsa.
10) Cuir am faidhle YAML gu Kubernetes:
kubectl apply -f loadgen.yaml
Nuair a bhios e deiseil gu soirbheachail, bheir an àithne a-mach an còd a leanas:
deployment.apps/loadgenerator created
service/loadgensvc created
11) Thoir sùil air inbhe nan pods:
kubectl get pods
Tha an àithne a 'sealltainn an inbhe:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) Thoir a-mach logaichean tagraidh bhon pod luchdaichgen. Cuir na àite POD_ID chun an aithnichear bhon fhreagairt roimhe.
kubectl logs loadgenerator-POD_ID
13) Faigh seòlaidhean IP taobh a-muigh halò:
kubectl get service
Tha am freagairt àithne a’ coimhead rudeigin 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) Cuir iarrtas gu halò: cuir an àite EXTERNAL_IP gu seòladh IP taobh a-muigh halò.
curl http://EXTERNAL_IP
Gabhamaid air Istio
Tha tagradh agad mu thràth air a chuir gu GKE. luchdaichgen an urrainn dhut Kubernetes DNS a chleachdadh (hallovc:80) iarrtasan a chur gu frithealaicheagus faodaidh tu iarrtasan a chuir gu frithealaiche le seòladh IP taobh a-muigh. Ged a tha mòran fheartan aig Kubernetes, tha beagan fiosrachaidh a dhìth mu na seirbheisean:
Ciamar a bhios seirbheisean ag eadar-obrachadh? Dè na dàimhean a tha eadar seirbheisean? Ciamar a tha trafaic a’ sruthadh eadar seirbheisean? A bheil thu mothachail air sin luchdaichgen a’ cur iarrtasan gu frithealaiche, ach smaoinich nach eil fios agad càil mun tagradh. Gus na ceistean sin a fhreagairt, leig dhuinn sùil a thoirt air liosta nam pods ruith ann an GKE.
Meatrics. Cho fada frithealaiche freagairt ri iarrtas a thig a-steach? Cia mheud iarrtas gach diog a gheibh am frithealaiche? A bheil e a’ toirt seachad teachdaireachdan mearachd?
Fiosrachadh tèarainteachd. Trafaig eadar luchdaichgen и frithealaiche dìreach a 'dol seachad HTTP no le mTLS?
Tha Istio a’ freagairt nan ceistean sin uile. Gus seo a dhèanamh, bidh Istio a’ cur neach-ionaid sidecar Teachdaire anns gach cuach. Bidh an neach-ionaid Tosgaire a’ toirt a-steach a h-uile trafaic a-steach is a-mach gu soithichean tagraidh. Tha e a’ ciallachadh sin frithealaiche и luchdaichgen faighinn tro neach-ionaid taobh càr, agus an trafaic gu lèir bho luchdaichgen к frithealaiche a’ dol tron neach-ionaid Envoy.
Bidh ceanglaichean eadar luchd-ionaid Envoy a’ cruthachadh mogal seirbheis. Tha ailtireachd mogal na seirbheis a’ toirt seachad ìre de smachd air mullach Kubernetes.
Leis gu bheil luchd-ionaid Envoy a’ ruith anns na soithichean aca fhèin, faodar Istio a chuir a-steach air mullach cruinneachadh GKE gun cha mhòr atharrachadh sam bith air còd an tagraidh. Ach tha thu air beagan obrach a dhèanamh gus an tagradh agad ullachadh airson a bhith air a riaghladh le Istio:
Seirbheisean airson a h-uile container. Gu cleachdaidhean frithealaiche и luchdaichgen ceangailte ri seirbheis Kubernetes. eadhon luchdaichgen, nach eil a 'faighinn iarrtasan a' tighinn a-steach, tha seirbheis ann.
Feumaidh ainmean a bhith aig puirt ann an seirbheisean. Ged a dh’ fhaodar puirt seirbheis fhàgail gun ainm ann an GKE, tha Istio ag iarraidh ort sònrachadh ainm port a rèir a phròtacal. Anns an fhaidhle YAML tha am port airson frithealaiche air a ghairm httpoir tha am frithealaiche a' cleachdadh a' phròtacail HTTP... Ma tha seirbheis cleachdadh gRPC, dh'ainmicheadh tu am port grpc.
Tha suaicheantais air an comharrachadh. Mar sin, faodaidh tu feartan stiùireadh trafaic Istio a chleachdadh, leithid a bhith a’ roinn trafaic eadar dreachan den aon sheirbheis.
Stàladh
Tha dà dhòigh air Istio a stàladh. Faodaidh comas a thoirt do Istio air leudachadh GKE no stàlaich an tionndadh stòr fosgailte de Istio air a' chnuasaich. Le Istio air GKE, is urrainn dhut gu furasta ionadan Istio a riaghladh agus ùrachadh tro chuairt-beatha brabhsair GKE. Ma tha thu ag iarraidh an dreach as ùire de Istio no barrachd smachd air an rèiteachadh pannal smachd Istio agad, stàlaich an tionndadh stòr fosgailte an àite an leudachadh Istio on GKE. Gus co-dhùnadh mun dòigh-obrach, leugh an artaigil A bheil feum agam air Istio air GKE?.
Tagh roghainn, thoir sùil air an stiùireadh iomchaidh, agus lean an stiùireadh gus Istio a chuir air do chlàr. Ma tha thu airson Istio a chleachdadh leis an tagradh ùr agad, cuir an gnìomh taobh-chàraichean comasach airson àrainn ainmean default.
Glanadh
Gus nach tèid do ghearradh chun chunntas Google Cloud Platform agad airson na goireasan a chleachd thu san oideachadh seo, cuir às don chruinneachadh de shoithichean aon uair ‘s gu bheil thu air Istio a chuir a-steach agus air cluich leis an tagradh sampall. Bheir seo air falbh a h-uile goireas brabhsair, leithid eisimpleirean coimpiutaireachd, diosgan, agus goireasan lìonra.