Istio ndi chida chothandizira kulumikiza, kuteteza ndi kuyang'anira mapulogalamu omwe amagawidwa. Istio imagwiritsa ntchito matekinoloje osiyanasiyana kuyendetsa ndikuwongolera mapulogalamu pamlingo waukulu, kuphatikiza zotengera kuyika ma code ogwiritsira ntchito ndi zodalira kuti zitumizidwe, ndi Kubernetes kuyang'anira zotengerazo. Chifukwa chake, kuti mugwire ntchito ndi Istio muyenera kudziwa momwe pulogalamu yokhala ndi mautumiki angapo kutengera matekinolojewa amagwirira ntchito popanda Istio. Ngati zida ndi mfundozi mukuzidziwa kale, khalani omasuka kudumpha phunziroli ndikupita kugawoli Kuyika Istio pa Google Kubernetes Engine (GKE) kapena kukhazikitsa chowonjezera Istio pa GKE.
Ichi ndi chiwongolero cha sitepe ndi sitepe kumene tidzayendamo ndondomeko yonse kuchokera ku code code kupita ku chidebe cha GKE kuti tikupatseni chidziwitso choyambirira cha matekinolojewa kudzera mu chitsanzo. Muwonanso momwe Istio imathandizira mphamvu zamaukadaulo awa. Izi zikuganiza kuti simukudziwa chilichonse chokhudza zotengera, Kubernetes, ma meshes a service, kapena Istio.
ntchito
Mu phunziro ili, mudzamaliza ntchito zotsatirazi:
Kuphunzira pulogalamu yosavuta yapadziko lonse lapansi yokhala ndi ntchito zingapo.
Mu phunziro ili, mungagwiritse ntchito Cloud Shell, yomwe imakonzekera makina enieni g1-yaing'ono mu Google Compute Engine ndi Debian-based Linux, kapena Linux kapena macOS kompyuta.
Njira A: Kugwiritsa Ntchito Cloud Shell
Ubwino wogwiritsa ntchito Cloud Shell:
Python 2 ndi Python 3 malo otukuka (kuphatikiza virtualenv) amakonzedwa mokwanira.
Chitsanzocho chimalembedwa mu Python ndipo chimakhala ndi zigawo ziwiri zomwe zimagwiritsa ntchito Bwerani:
seva: seva yosavuta yokhala ndi mapeto amodzi GET, /, yomwe imasindikiza "hello world" ku console.
loadgen: script yomwe imatumiza traffic ku seva, ndi chiwerengero chosinthika cha zopempha pamphindikati.
Kuyendetsa ntchito kuchokera ku code code
Kuti muwone chitsanzo cha pulogalamuyo, yesani mu Cloud Shell kapena pa kompyuta yanu.
1) Mu catalog istio-samples/sample-apps/helloserver thamanga seva:
Kuchokera pamawonedwe apa intaneti, pulogalamu yonseyi imagwira ntchito pagulu limodzi (kompyuta yakomweko kapena makina a Cloud Shell). Chifukwa chake mutha kugwiritsa ntchito localhostkutumiza zopempha kwa seva.
10) Kuti asiye loadgen ΠΈ seva, kulowa Ctrl-c pawindo lililonse la terminal.
11) Mu terminal zenera loadgen thimitsani chilengedwe:
deactivate
Kuyika pulogalamu muzotengera
Kuti mugwiritse ntchito pulogalamuyi pa GKE, muyenera kuyika chitsanzo cha ntchito - seva ΠΈ loadgen - mkati muli. Chidebe ndi njira yopangira pulogalamu kuti isiyanitse ndi chilengedwe.
Kuti mupange pulogalamu mu chidebe, muyenera Dockerfile. Dockerfile ndi fayilo yomwe imatanthauzira malamulo opangira ma source code a pulogalamuyo ndi zodalira zake Chithunzi cha Docker. Mukangomangidwa, mumakweza chithunzicho ku registry yachidebe monga Docker Hub kapena Container Registry.
Chitsanzo chachitika kale Dockerfile chifukwa seva ΠΈ loadgen ndi malamulo onse ofunikira kusonkhanitsa zithunzi. Pansi - Dockerfile chifukwa seva:
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 KUCHOKERA pa python:3-slim monga maziko amauza Docker kuti agwiritse ntchito zaposachedwa Chithunzi cha Python 3 ngati maziko.
timu KOPI. . amakopera mafayilo oyambira ku bukhu lomwe likugwira ntchito pano (kwa ife kokha seva.py) ku fayilo ya chidebecho.
ENTRYPOINT imatanthauzira lamulo lomwe likugwiritsidwa ntchito poyambitsa chidebecho. Kwa ife, lamulo ili ndi lofanana ndi lomwe munkayendetsa seva.py kuchokera ku source kodi.
timu ONERA zikusonyeza kuti seva amadikirira deta kudzera padoko 8080. Timu iyi sichoncho amapereka madoko. Uwu ndi mtundu wina wa zolemba zomwe zimafunikira kuti mutsegule doko 8080 poyambira chidebecho.
Kukonzekera kuyika pulogalamu yanu
1) Khazikitsani zosintha zotsatirazi. M'malo PROJECT_ID ku ID yanu ya projekiti ya GCP.
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
Kugwiritsa ntchito mfundo zofunika PROJECT_ID ΠΈ GCR_REPO mumayika chithunzi cha Docker mukachimanga ndikuchikankhira ku Registry yachinsinsi ya Container.
2) Khazikitsani pulojekiti ya GCP yachida cha mzere wolamula gcloud.
gcloud config set project $PROJECT_ID
3) Khazikitsani zone yokhazikika ya chida cha mzere wolamula gcloud.
gcloud config set compute/zone us-central1-b
4) Onetsetsani kuti ntchito ya Container Registry yayatsidwa mu projekiti ya GCP.
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
Kupanga gulu la GKE.
Zotengerazi zitha kuyendetsedwa pamakina a Cloud Shell kapena pakompyuta ndi lamulo docker akuthamanga. Koma m'malo opanga, muyenera njira yopangira zida zapakati. Mwachitsanzo, mufunika makina omwe amaonetsetsa kuti zotengera zikuyenda nthawi zonse, ndipo mufunika njira yowonjezerera ndikuwonjezera zotengera zina ngati kuchuluka kwa magalimoto kumawonjezeka.
Kuti mugwiritse ntchito mapulogalamu omwe ali ndi zida zomwe mungagwiritse ntchito G.K.E.. GKE ndi nsanja yoyimba chidebe yomwe imaphatikiza makina enieni kukhala gulu. Makina aliwonse odziwika amatchedwa node. Magulu a GKE amachokera ku Open source Kubernetes cluster management system. Kubernetes imapereka njira zolumikizirana ndi gulu.
timu gcloud imapanga gulu la istioready mu projekiti ya GCP ndi zone yokhazikika yomwe mudatchula. Kuti tiyendetse Istio, timalimbikitsa kukhala ndi ma node osachepera 4 ndi makina enieni n1-mulingo-2.
3) Tsopano mutha kulumikizana ndi Kubernetes kudzera kubctl. Mwachitsanzo, lamulo ili limatha kudziwa momwe ma node alili:
kubectl get nodes
Lamulo limapanga mndandanda wa node:
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
Malingaliro Ofunika a Kubernetes
Chithunzichi chikuwonetsa ntchito pa GKE:
Musanatumize zotengera ku GKE, phunzirani mfundo zazikuluzikulu za Kubernetes. Pali maulalo kumapeto kwenikweni ngati mukufuna kudziwa zambiri.
Nodes ndi masango. Mu GKE, node ndi makina enieni. Pamapulatifomu ena a Kubernetes, node ikhoza kukhala kompyuta kapena makina enieni. Cluster ndi gulu la ma node omwe atha kuwonedwa ngati gawo limodzi pomwe mumayika pulogalamu yokhala ndi zida.
Mabedi. Ku Kubernetes, zotengera zimayenda m'matumba. Pod ku Kubernetes ndi gawo losawoneka. Pod imakhala ndi chidebe chimodzi kapena zingapo. Mumatumiza zotengera za seva ndi loadgen m'malo osiyanasiyana. Pakakhala zotengera zingapo mu pod (mwachitsanzo, seva yogwiritsira ntchito ndi seva ya proxy), zotengera zimayendetsedwa ngati chinthu chimodzi ndikugawana zothandizira.
Deployments. Ku Kubernetes, kutumizidwa ndi chinthu chomwe chimasonkhanitsa ma pod ofanana. Kutumiza kumayambitsa mitundu ingapo ya ma pod omwe amagawidwa m'magulumagulu. Kutumiza kumalowetsa m'malo mwa ma pod omwe alephera kapena osalabadira.
Kubernetes service. Mukamagwiritsa ntchito kachidindo ka GKE, kulumikizana pakati loadgen ΠΈ seva. Mutayamba ntchito pamakina apakompyuta kapena pakompyuta ya Cloud Shell, mudatumiza zopempha kwa seva ndi adilesi localhost: 8080. Akatumizidwa ku GKE, ma pods amachitidwa pa node zomwe zilipo. Mwachikhazikitso, mulibe ulamuliro pa node yomwe pod ikuyendetsa, kotero inu matumba palibe ma adilesi a IP okhazikika.
Kuti mupeze adilesi ya IP ya seva, muyenera kufotokozera zamtundu wa netiweki pamwamba pa ma pod. Ndi chimene icho chiri Kubernetes service. Utumiki wa Kubernetes umapereka mathero osalekeza a ma pod. Pali ochepa mitundu ya mautumiki. seva amagwiritsa LoadBalancer, yomwe imapereka adilesi yakunja ya IP kuti mulumikizane nayo seva kuchokera kunja kwa tsango.
Kubernetes ilinso ndi makina omangidwira a DNS omwe amapereka mayina a DNS (mwachitsanzo, helloserver.default.cluster.local) ntchito. Chifukwa cha izi, makoko omwe ali mkati mwa tsango amalumikizana ndi makoko ena pagulu pa adilesi yokhazikika. Dzina la DNS silingagwiritsidwe ntchito kunja kwa tsango, monga mu Cloud Shell kapena pakompyuta.
Munda woyamba masuliridwe lili ndi kufotokoza za dziko lofunidwa.
zofotokozera zikuwonetsa nambala yomwe mukufuna.
Gawo spec.template amatanthauzira pod template. Pali gawo mu pod specifications chithunzi, yomwe imatchula dzina la chithunzi chomwe chiyenera kuchotsedwa ku Container Registry.
LoadBalancer: Makasitomala amatumiza zopempha ku adilesi ya IP ya chojambulira katundu, chomwe chili ndi adilesi ya IP yosalekeza ndipo imapezeka kuchokera kunja kwa gululo.
targetPort: monga mukukumbukira, gulu EXPOSE 8080 Π² Dockerfile sanapereke madoko. Mumapereka doko 8080kuti mutha kulumikizana ndi chidebecho seva kunja kwa tsango. Kwa ife hellosvc.default.cluster.local:80 (dzina lalifupi: hellosvc) zimagwirizana ndi doko 8080 Ma adilesi a IP a Pod helloserver.
doko: Iyi ndi nambala ya doko pomwe mautumiki ena pagulu adzatumiza zopempha.
loadgen.yaml
Chinthu chotumizira ku loadgen.yaml woneka ngati seva.yaml. Kusiyana kwake ndikuti chinthu chotumizira chimakhala ndi gawo kutumiza. Imatanthauzira zosintha zachilengedwe zomwe zimafunikira loadgen ndi zomwe mudaziyika mukamayendetsa pulogalamuyi kuchokera kugwero.
Kamodzi loadgen sichivomereza zopempha zomwe zikubwera, zamunda mtundu zikuwonetsedwa ClusterIP. Mtundu uwu umapereka adilesi ya IP yosalekeza yomwe ntchito zamagulu angagwiritse ntchito, koma adilesi ya IP iyi simawonekera kwa makasitomala akunja.
M'malo PROJECT_ID ku ID yanu ya projekiti ya GCP.
9) Sungani ndi kutseka loadgen.yaml, tsekani zolemba zosintha.
10) Tumizani fayilo ya YAML ku Kubernetes:
kubectl apply -f loadgen.yaml
Mukamaliza bwino, lamulo limapanga code iyi:
deployment.apps/loadgenerator created
service/loadgensvc created
11) Onani momwe ma pod:
kubectl get pods
Lamulo likuwonetsa mawonekedwe:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) Chotsani zipika za ntchito kuchokera pa pod loadgen. M'malo POD_ID kupita ku chizindikiritso kuchokera ku yankho lapitalo.
kubectl logs loadgenerator-POD_ID
13) Pezani ma adilesi akunja a IP hellosvc:
kubectl get service
Lamulo la lamulo likuwoneka motere:
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) Tumizani pempho kwa hellosvc: sinthani EXTERNAL_IP ku adilesi yakunja ya IP hellosvc.
curl http://EXTERNAL_IP
Tiyeni titenge Istio
Muli ndi kale ntchito yotumizidwa ku GKE. loadgen angagwiritse ntchito Kubernetes DNS (uwu:80) kutumiza zopempha kwa sevandipo mutha kutumiza zopempha kwa seva ndi adilesi yakunja ya IP. Ngakhale Kubernetes ali ndi zambiri, pali zina zomwe zikusowa pazantchitozi:
Kodi mautumiki amalumikizana bwanji? Kodi pali maubwenzi otani pakati pa mautumiki? Kodi magalimoto amayenda bwanji pakati pa mautumiki? Kodi mukudziwa zimenezo loadgen amatumiza zopempha ku seva, koma yerekezani kuti simukudziwa kalikonse za pulogalamuyi. Kuti tiyankhe mafunsowa, tiyeni tiwone mndandanda wa ma pod mu GKE.
Metrics. Motalika bwanji seva imayankha pempho lomwe likubwera? Kodi zopempha zingati pa sekondi imodzi zimalandiridwa ndi seva? Kodi imapereka mauthenga olakwika?
Information Security. Magalimoto pakati loadgen ΠΈ seva zimangodutsa HTTP kapena mwa mTLS?
Istio amayankha mafunso onsewa. Kuti muchite izi, Istio imayika woyimira wam'mbali nthumwi mu gulu lililonse. Proxy ya Envoy imaletsa magalimoto onse omwe akubwera ndi otuluka kuzinthu zofunsira. Izo zikutanthauza kuti seva ΠΈ loadgen landirani kudzera pa sidecar proxy Envoy, ndi magalimoto onse ochokera loadgen ΠΊ seva amadutsa mu projekiti ya Envoy.
Kulumikizana pakati pa Envoy proxies kumapanga mauna a service. Zomangamanga za ma mesh a service zimapereka chiwongolero pamwamba pa Kubernetes.
Popeza ma proxies a Envoy amayenda m'mitsuko yawo, Istio ikhoza kukhazikitsidwa pamwamba pa gulu la GKE popanda kusintha kulikonse pamakina ogwiritsira ntchito. Koma mwachitapo kanthu kuti pulogalamu yanu ikonzekere kuyendetsedwa ndi Istio:
Ntchito zotengera zonse. Ku deployments seva ΠΈ loadgen wolumikizidwa ku ntchito ya Kubernetes. Ngakhale loadgen, yomwe sichilandira zopempha zomwe zikubwera, pali ntchito.
Madoko muzantchito ayenera kukhala ndi mayina. Ngakhale madoko a ntchito amatha kusiyidwa osadziwika ku GKE, Istio ikufuna kuti mufotokozere dzina ladoko molingana ndi ndondomeko yake. Mu fayilo ya YAML doko la seva wotchedwa httpchifukwa seva imagwiritsa ntchito protocol HTTP... Ngati utumiki ntchito gRPC, mungatchule doko gpc.
Pali njira ziwiri zoyika Istio. Mutha yambitsani Istio pa kukulitsa kwa GKE kapena khazikitsani mtundu wotsegulira wa Istio pa cluster. Ndi Istio pa GKE, mutha kuyang'anira kuyika kwa Istio mosavuta ndikukweza pagulu lonse la GKE. Ngati mukufuna mtundu waposachedwa wa Istio kapena kuwongolera zambiri pakusintha kwa gulu lanu la Istio, yikani mawonekedwe otseguka m'malo mwa Istio pa kukulitsa kwa GKE. Kuti musankhe njirayo, werengani nkhaniyi Kodi ndikufunika Istio pa GKE?.
Kupewa kulipiritsidwa ku akaunti yanu ya Google Cloud Platform pazida zomwe mudagwiritsa ntchito m'phunziroli, chotsani gulu la zotengera mukangoyika Istio ndikusewera ndi pulogalamu yachitsanzo. Izi zidzachotsa zinthu zonse zamagulu, monga ma compute, disks, ndi maukonde.