
Istio â Ă«shtĂ« njĂ« mjet i pĂ«rshtatshĂ«m pĂ«r lidhjen, mbrojtjen dhe monitorimin e aplikacioneve tĂ« shpĂ«rndara. NĂ« Istio pĂ«rdoren teknologji tĂ« ndryshme pĂ«r lançimin dhe menaxhimin masiv tĂ« software-it, duke pĂ«rfshirĂ« kontejnerĂ«t pĂ«r paketimin e kodit tĂ« aplikacionit dhe varĂ«sive pĂ«r shpĂ«rndarje dhe Kubernetes â pĂ«r menaxhimin e kĂ«tyre kontejnerĂ«ve. Prandaj, pĂ«r tĂ« punuar me Istio duhet tĂ« dini se si funksionon njĂ« aplikacion me disa shĂ«rbime duke u bazuar nĂ« kĂ«to teknologji. pa Istio. NĂ«se kĂ«to mjete dhe koncepte ju janĂ« tashmĂ« tĂ« njohura, ndihuni tĂ« lirĂ« tĂ« kaloni kĂ«tĂ« udhĂ«zues dhe tĂ« kaloni drejtpĂ«rdrejt nĂ« seksionin ose instalimi i shtesĂ«s .
Ky udhëzues hap pas hapi do të shqyrtojë të gjithë procesin nga kodi burimor deri në kontejnerin në GKE, që të merrni një përmbledhje të bazës mbi këto teknologji përmes një shembulli. Gjithashtu do të shihni se si Istio shfrytëzon kapacitetet e këtyre teknologjive. Bëhet fjalë se nuk dini asgjë për kontejnerët, Kubernetes, service mesh ose Istio.
Detyrat
Në këtë udhëzues do të kryeni detyrat e mëposhtme:
- Studimi i një aplikacioni të thjeshtë hello world me disa shërbime.
- Ekzekutimi i aplikacionit nga kodi burimor.
- Paketa e aplikacionit në kontejnerë.
- Krijimi i një klasteri Kubernetes.
- Zhvillimi i kontejnerëve në klaster.
Para se të filloni
Ndiqni udhëzimet për të aktivizuar API-në e Kubernetes Engine:
- Shkoni në në konsolën Google Cloud Platform.
- Krijoni ose zgjidhni një projekt.
- Prisni derisa API-ja dhe shërbimet e lidhura të aktivizohen. Kjo mund të zgjasë disa minuta.
- Sigurohuni që faturimi për projektin Google Cloud Platform është i aktivizuar. .
Në këtë udhëzues, mund të përdorni Cloud Shell, i cili përgatit një makinë virtuale me Linux të bazuar në Debian, ose një kompjuter me Linux ose macOS.
Opsioni A: përdorimi i Cloud Shell
Përfitimet e përdorimit të Cloud Shell:
- Mjediset e zhvillimit për Python 2 dhe Python 3 (përfshirë virtualenv) janë plotësisht të konfigurueshme.
- Veglat e komandës gcloud, docker, git dhe kubectl, të cilat do të përdorim, janë tashmë të instaluara.
- Keni disa :
- , i cili hapet me ikonën e redaktimit në majën e dritares Cloud Shell.
- Emacs, Vim ose Nano, që hapen nga linja e komandës në Cloud Shell.
Për të përdorur :
- Shkoni në konsolën GCP.
- Klikoni butonin Aktivizo Cloud Shell (Aktivizoni Cloud Shell) në pjesën e sipërme të dritares së konsolës GCP.
![]()
Në fund në një dritare të re do të hapet një seancë Cloud Shell me komandën.

Mënyra B: përdorimi i mjeteve të komandave lokal
Nëse do të punoni në një kompjuter me Linux ose macOS, duhet të konfiguroni dhe instaloni komponentët e mëposhtëm:
Konfiguroni .
me mjetin e komandës gcloud.
Instaloni kubectl â mjeti i komandĂ«s pĂ«r tĂ« punuar me .
gcloud components install kubectlInstaloni . Do të përdorni mjetin e komandës docker, për të krijuar imazhe kontejnerësh për shembull aplikacioni.
Instaloni mjetin , për të marrë shembullin e aplikacionit nga GitHub.
Shkarkimi i shembullit të kodit
Shkarkoni kodin burimor helloserver:
git clone https://github.com/GoogleCloudPlatform/istio-samplesShkoni në katalogun e shembullit të kodit:
cd istio-samples/sample-apps/helloserver
Studimi i aplikacionit me disa shërbime
Shembulli i aplikacionit është shkruar në Python dhe përbëhet nga dy komponentë, të cilët ndyhmojnë përmes :
- server: një server i thjeshtë me një pikëfund GET, /, i cili nxjerr "hello world" në konsolë.
- loadgen: skripti që dërgon trafikun në server, me numrin e personalizuar të kërkesave në sekondë.

Fillimi i aplikacionit nga kodi burimor
Për të studiuar shembujt e aplikacionit, filloni atë në Cloud Shell ose në kompjuterin tuaj.
1) NĂ« katalg istio-samples/sample-apps/helloserver ekzekutoni server:
python3 server/server.pyKur të filloni, server shfaqet si më poshtë:
INFO:root:Po fillon serverin...2) Hapni një dritare tjetër terminali për të dërguar kërkesa tek server. Nëse po përdorni Cloud Shell, klikoni në ikonën e shtimit për të hapur një seancë tjetër.
3) Dërgoni kërkesë te server:
curl http://localhost:8080serveri përgjigjet:
Përshëndetje Botë!4) Nga katalgu ku ngarkuat shembujt e kodit, shkoni në katalgun që përmban loadgen:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen5) Krijoni këto variabla mjedisi:
export SERVER_ADDR=http://localhost:8080
export REQUESTS_PER_SECOND=56) Filloni virtualenv:
virtualenv --python python3 env7) Aktivizoni mjedisin virtual:
source env/bin/activate8) Installoni kërkesat për loadgen:
pip3 install -r requirements.txt9) Filloni loadgen:
python3 loadgen.pyKur të filloni, loadgen shfaq mesazhin afërsisht si më poshtë:
Duke nisur loadgen: 2019-05-20 10:44:12.448415
5 kërkes(a) e përfunduara tek http://localhost:8080Në një dritare tjetër terminali server shfaq mesazhe afërsisht si më poshtë në konsolë:
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: */*Nga pikëpamja e rrjetit, të gjithë aplikacioni funksionon në një host të vetëm (kompjuteri lokal ose makinë virtuale Cloud Shell). Prandaj, mund të përdorni localhost, për të dërguar kërkesa në server.
10) Për të ndaluar loadgen dhe server, shkruani Ctrl-c në çdo dritare terminali.
11) Në dritaren e terminalit loadgen çaktivizoni mjedisin virtual:
deactivatePaketa e aplikacionit në kontejnerë
PĂ«r tĂ« nisur aplikacionin nĂ« GKE, duhet tĂ« paketoni shembullin e aplikacionit â server dhe loadgen â nĂ« . Konteineri Ă«shtĂ« njĂ« mĂ«nyrĂ« pĂ«r tĂ« paketuar aplikacionin, pĂ«r ta izoluar atĂ« nga mjedisi.
PĂ«r tĂ« paketuar aplikacionin nĂ« konteiner, nevojitet Dockerfile. Dockerfile â ky Ă«shtĂ« njĂ« skedar tekstual, ku pĂ«rcaktohen komandat pĂ«r ndĂ«rtimin e kodit burimor tĂ« aplikacionit dhe varĂ«sive tĂ« tij nĂ« Pas ndĂ«rtimit, e ngarkoni imazhin nĂ« regjistrin e kontejnerĂ«ve, siç Ă«shtĂ« Docker Hub ose .
Shembulli tashmĂ« ka Dockerfile pĂ«r server dhe loadgen me tĂ« gjitha komandat e nevojshme pĂ«r tĂ« ndĂ«rtuar imazhet. MĂ« poshtĂ« â Dockerfile pĂ«r 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/*
# Aktivizoni regjistrimin pa tampon
FROM base as final
ENV PYTHONUNBUFFERED=1
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
wget
WORKDIR /helloserver
# Merrni paketat nga ndërtuesi
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/
# Shtoni aplikacionin
COPY . .
EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]- Ekipa FROM python:3-slim as base kërkon që Docker të përdorë të fundit si bazë.
- Ekipa COPY . . kopjon skedaret burimore në katalogun aktual të punës (në rastin tonë vetëm server.py) në sistemin e skedarëve të kontejnerit.
- ENTRYPOINT përcakton komandën që përdoret për të nisur kontejnerin. Në rastin tonë kjo komandë thuajse përputhet me atë që keni përdorur për të nisur server.py nga kodi burimor.
- Ekipa EXPOSE tregon se server pritet tĂ« marrin tĂ« dhĂ«na pĂ«rmes portit 8080. Kjo komandĂ« nuk . ĂshtĂ« diçka si dokumentimi qĂ« nevojitet pĂ«r tĂ« hapur portin 8080 kur filloni kontejnerin.
Përgatitja për konteinerizimin e aplikacionit
1) Vendosni variablat e mëposhtëm të mjedisit. Zëvendësoni PROJECT_ID me identifikuesin e projektit tuaj GCP.
export PROJECT_ID="PROJECT_ID"export GCR_REPO="preparing-istio"Me vlerat PROJECT_ID dhe GCR_REPO Ju shënoni imazhin Docker kur e ndërroni dhe e dërgoni atë në Container Registry privat.
2) Caktoni projektin GCP si parazgjedhje për mjetin e komandave gcloud.
gcloud config set project $PROJECT_ID3) Caktoni zonën si parazgjedhje për mjetin e komandave gcloud.
gcloud config set compute/zone us-central1-b4) Sigurohuni që shërbimi Container Registry të jetë aktiv në projektin GCP.
gcloud services enable containerregistry.googleapis.comKontrakta server
Shkoni në katalogun ku ndodhet shembulli server:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/Ndërtoni imazhin duke përdorur Dockerfile dhe variablat e mjedisit që keni përcaktuar më parë:
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .
Parametri -t përfaqëson etiketën Docker. Kjo është emri i imazhit që përdorni kur zhvilloni kontejnerin.
- Dërgoni imazhin në Container Registry:
docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1
Kontrakta loadgen
1) Shkoni në katalogun ku ndodhet shembulli loadgen:
cd ../loadgen2) Ndërtoni imazhin:
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .3) Dërgoni imazhin në Container Registry:
docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1Shikoni listën e imagjëve
Shikoni listën e imagjëve në depotheke dhe sigurohuni që imazhet janë dërguar:
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istioEkipa jep emrat e imazheve që sapo janë dërguar:
EMRI
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgenKrijimi i një klasteri GKE.
Këto kontejnerë mund të nisin në një makinë virtuale Cloud Shell ose në një kompjuter me komandën docker run. Por në mjedisin e prodhimit, nevojitet një mënyrë për të orkestruar kontejnerët në mënyrë qendrore. Për shembull, nevojitet një sistem që siguron se kontejnerët punojnë gjithmonë, dhe nevojitet një mënyrë për të rritur shkallën dhe për të nisur ekzemplarë shtesë kontejnerësh nëse ngarkesa rritet.
PĂ«r tĂ« nisur aplikacionet kontejner, mund tĂ« pĂ«rdoret . GKE Ă«shtĂ« njĂ« platformĂ« pĂ«r orkestrimin e kontejnerĂ«ve qĂ« bashkon makinat virtuale nĂ« njĂ« klaster. Ădo makinĂ« virtuale quhet nyje. Klasteret GKE bazohen nĂ« sistemin e menaxhimit tĂ« klasterĂ«ve me kod tĂ« hapur Kubernetes. Kubernetes ofron mekanizma pĂ«r ndĂ«rveprimin me klasterin.
Krijimi i një klasteri GKE:
1) Krijoni klasterin:
gcloud container clusters create istioready
--cluster-version latest
--machine-type=n1-standard-2
--num-nodes 4Ekipa gcloud krijon klasterin istioready në projektin GCP dhe zonën e parazgjedhur që keni specifikuar. Për të nisur Istio, rekomandohet të keni të paktën 4 nyje dhe një makinë virtuale. .
Ekipi krijon një klaster për disa minuta. Kur klasteri të jetë gati, ekipi jep diçka si .
2) Specifikoni informacionin e qasjes në mjetin e komandës , për ta përdorur atë për të menaxhuar klasterin:
gcloud container clusters get-credentials istioready3) Tani mund të komunikoni me Kubernetes përmes kubectl. Për shembull, me komandën e mëposhtme mund të mësoni statusin e nyjeve:
kubectl get nodesKomanda jep një listë nyjesh:
EMRI STATUS ROLET MOSHA VERSION
gke-istoready-default-pool-dbeb23dc-1vg0 Gati <asgjë> 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5 Gati <asgjë> 100s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s Gati <asgjë> 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw Gati <asgjë> 99s v1.13.6-gke.13Koncepte kyçe të Kubernetes
Në diagram tregohet aplikacioni në GKE:

Para se të vendosni kontejnerët në GKE, studioni konceptet kyçe të Kubernetes. Në fund ka lidhje, nëse dëshironi të mësoni më shumë.
- Nyjet dhe klasterët. Në GKE, një nyje është një makinë virtuale. Në platforma të tjera, një nyje Kubernetes mund të jetë një kompjuter ose një makinë virtuale. Një klaster është një grup nyjesh që mund të konsiderohen si një tërësi dhe ku vendosni aplikacionin e kontejnerizuar.
- PodâĂ«t. NĂ« Kubernetes, kontejnerĂ«t ekzekutohen nĂ« pod'Ă«. Pod nĂ« Kubernetes Ă«shtĂ« njĂ« njĂ«si e pandashme. Pod'i pĂ«rmban njĂ« ose mĂ« shumĂ« kontejnerĂ«. Ju zhvilloni kontejnerĂ«t server dhe loadgen nĂ« pod'e tĂ« veçantĂ«. Kur nĂ« njĂ« pod ka disa kontejnerĂ« (pĂ«r shembull, serveri i aplikacionit dhe ), kontejnerĂ«t menaxhohen si njĂ« objekt i vetĂ«m dhe ndajnĂ« burimet e pod'it.
- Zhvillime. Në Kubernetes, zhvillimi është një objekt që përfaqëson një grup pod'esh identik. Zhvillimi nis disa replika pod'esh, të shpërndara në nyje të klasterit. Zhvillimi automatikisht zëvendëson pod'ët që kanë dështuar ose që nuk përgjigjen.
- Shërbimi Kubernetes. Kur ekzekutoni kodin e aplikacionit në GKE, lidhja midis loadgen dhe server. Kur keni nisur shërbimet në makinat virtuale Cloud Shell ose në kompjuter, keni dërguar kërkesa në server në adresën localhost:8080. Pas zhvillimit në GKE, pod'ët ekzekutohen në nyjet e disponueshme. Në mënyrë standarde, nuk mund të menaxhoni se në cilën nyje është nisur pod'i, kështu që nuk kanë adresa IP të përhershme.
PĂ«r tĂ« marrĂ« njĂ« adresĂ« IP pĂ«r server, duhet tĂ« pĂ«rcaktoni njĂ« abstraksion rrjeti mbi pod'Ă«t. Kjo Ă«shtĂ« . ShĂ«rbimi Kubernetes ofron njĂ« pikĂ« tĂ« vazhdueshme lidhĂ«se pĂ«r njĂ« grup podâesh. Ka disa . server pĂ«rdor LoadBalancer, i cili ofron njĂ« adresĂ« IP publike pĂ«r t'u lidhur me server jashtĂ« grupit.
Po ashtu, Kubernetes ka njĂ« sistem tĂ« integruar DNS, qĂ« i jep emra DNS (p.sh., helloserver.default.cluster.local) shĂ«rbimeve. KĂ«shtu, podâĂ«t brenda grupit lidhen me podâĂ« tĂ« tjerĂ« brenda grupit me njĂ« adresĂ« tĂ« vazhdueshme. Emri DNS nuk mund tĂ« pĂ«rdoret jashtĂ« grupit, p.sh. nĂ« Cloud Shell ose nĂ« kompjuter.
Manifestet e Kubernetes
Kur keni regjistruar aplikacionin nga kodi burimor, keni përdorur komandën imperative python3
server.py
Imperativiteti nënkupton një folje: «bëj këtë».
Kubernetes pĂ«rdor . Kjo do tĂ« thotĂ« se ne nuk i themi Kubernetesit se çfarĂ« tĂ« bĂ«jĂ«, por pĂ«rshkruajmĂ« gjendjen e dĂ«shiruar. PĂ«r shembull, Kubernetes aktivizon dhe ndalon podâĂ«t sipas nevojĂ«s, nĂ« mĂ«nyrĂ« qĂ« gjendja aktuale e sistemit tĂ« korrespondonte me atĂ« tĂ« dĂ«shiruar.
Gjendja e dëshiruar e përcaktoni në manifestet, ose skedarët . Skedari YAML përmban specifikimet për një ose disa objekte Kubernetes.
NĂ« shembull pĂ«rfshihet njĂ« skedar YAML pĂ«r server dhe loadgen. Ădo skedar YAML tregon gjendjen e dĂ«shiruar tĂ« objektit tĂ« implementimit dhe shĂ«rbimit 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- kind tregon llojin e objektit.
- metadata.name tregon emrin e implementimit.
- Fusha e parë spec përmban përshkrimin e gjendjes së dëshiruar.
- spec.replicas tregon numrin e dĂ«shiruar tĂ« podâĂ«ve.
- Pjesa spec.template shton modelin e podâit. NĂ« specifikimin e podâĂ«ve ka njĂ« fushĂ« image, ku tregohet emri i imazhit qĂ« duhet tĂ« tĂ«rhiqet nga Container Registry.
Shërbimi përcaktohet si më poshtë:
apiVersion: v1
kind: Service
metadata:
name: hellosvc
spec:
type: LoadBalancer
selector:
app: helloserver
ports:
- name: http
port: 80
targetPort: 8080- LoadBalancer: klientët dërgojnë kërkesa në IP-në e balancuesit të ngarkesës, i cili ka një IP të përhershme dhe është i disponueshëm jashtë klasterit.
- targetPort: siç e mbani mend, komanda EXPOSE 8080 nĂ« Dockerfile nuk ofronte porte. Ju ofroni portin 8080, pĂ«r tâu lidhur me kontejnerin server jashtĂ« klasterit. NĂ« rastin tonĂ« hellosvc.default.cluster.local:80 (emri i shkurtĂ«r: hellosvc) pĂ«rputhet me portin 8080 IP-adresa e pods helloserver.
- port: kjo është numri i portit ku shërbimet e tjera në klaster do të dërgojnë kërkesa.
loadgen.yaml
Objekti i deploy-it në loadgen.yaml ngjason me server.yaml. Dallimi është se objekti i deploy-it përmban seksionin env. Ai përcakton variablat e mjedisit që nevojiten loadgen dhe që ju keni vendosur gjatë nisjes së aplikacionit nga kodi burimor.
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: 512MiNjë herë loadgen nuk pranon kërkesa hyrëse, për fushën type është specifikuar ClusterIP. Ky tip ofron një IP të përhershme që mund të përdorin shërbimet në klaster, por kjo IP nuk i ofrohet klientëve të jashtëm.
apiVersion: v1
kind: Service
metadata:
name: loadgensvc
spec:
type: ClusterIP
selector:
app: loadgenerator
ports:
- name: http
port: 80
targetPort: 8080Deployimi i kontejnerëve në GKE
1) Shkoni në katalogun ku ndodhet shembulli server:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/2) Hapni server.yaml në një redaktues teksti.
3) Ndryshoni emrin në fushën image në emrin e imazhit tuaj Docker.
image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1Zëvendësoni PROJECT_ID në identifikuesin e projektit tuaj GCP.
4) Ruani dhe mbyllni server.yaml.
5) Implementoni skedarin YAML në Kubernetes:
kubectl apply -f server.yamlPas përfundimit të suksesshëm, ekipi jep kodin e mëposhtëm:
deployment.apps/helloserver created
service/hellosvc created6) Shkoni në katalogun ku ndodhet loadgen:
cd ../loadgen7) Hapni loadgen.yaml në një redaktues teksti.
8) Ndryshoni emrin në fushën image në emrin e imazhit tuaj Docker.
image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1Zëvendësoni PROJECT_ID në identifikuesin e projektit tuaj GCP.
9) Ruani dhe mbyllni loadgen.yaml, mbyllni editorin e tekstit.
10) Implementoni skedarin YAML në Kubernetes:
kubectl apply -f loadgen.yamlPas përfundimit të suksesshëm, ekipi jep kodin e mëposhtëm:
deployment.apps/loadgenerator created
service/loadgensvc created11) Kontrolloni statusin e pod-ëve:
kubectl get podsKomanda tregon statusin:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s12) Nxirrni logët e aplikacionit nga poda loadgen. Zëvendësoni POD_ID në identifikuesin nga përgjigjja e mëparshme.
kubectl logs loadgenerator-POD_ID13) Merrni adresat IP të jashtme hellosvc:
kubectl get servicePërgjigja e komandës duket kështu:
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 443/TCP 93m
loadgensvc ClusterIP 10.81.15.155 80/TCP 4m52s14) Dërgoni një kërkesë në hellosvc: ndërroni EXTERNAL_IP në IP-në e jashtme hellosvc.
curl http://EXTERNAL_IPTĂ« merremi me Istio
Ju tashmë keni një aplikacion të vendosur në GKE. loadgen mund të përdorë DNS-in e Kubernetes (hellosvc:80), për të dërguar kërkesa në server, dhe ju mund të dërgoni kërkesa në server në IP-në e jashtme. Edhe pse Kubernetes ka shumë mundësi, disa informacione për shërbimet mungojnë:
- Si ndërveprojnë shërbimet? Cilat janë marrëdhëniet mes shërbimeve? Si kalon trafiku mes shërbimeve? A jeni në dijeni se loadgen dërgon kërkesa në server, por imagjinoni se nuk dini asgjë për aplikacionin. Për të përgjigjur në këto pyetje, shikoni listën e konteinerëve të vendosur në GKE.
- Metricat. Sa kohë server përgjigjet në një kërkesë të ardhur? Sa kërkesa në sekondë mbërrijnë në server? A jep mesazhe gabimi?
- Informacione mbi sigurinë. Trafiku midis loadgen dhe server kalon thjesht përmes HTTP ose përmes ?
I gjithë ky informacion jepet nga Istio. Për këtë, Istio vendos një proxy sidecar në çdo pod. Proxy Envoy kap të gjithë trafikun e ardhshëm dhe të dalë në konteinerët e aplikacionit. Kjo do të thotë që server dhe loadgen merrni përmes proxy sidecar Envoy, dhe gjithë trafiku nga loadgen për server kalon përmes proxy Envoy.
Lidhjet midis proxy-t Envoy formojnë një service mesh. Arkitektura e service mesh ofron një nivel kontrolli mbi Kubernetes.

Pasi proxy-t Envoy ekzekutohen në kontejnerët e tyre, Istio mund të instalohet mbi klasterin GKE, pothuajse pa ndryshuar kodin e aplikacionit. Por keni bërë disa përgatitje për të menaxhuar aplikacionin me ndihmën e Istio:
- Shërbime për të gjitha kontejnerët. Me implementimet server dhe loadgen janë të lidhura sipas shërbimit Kubernetes. Edhe ai loadgen, për të cilin nuk vijnë kërkesa hyrëse, ka një shërbim.
- Portat në shërbime duhet të kenë emra. Megjithëse në GKE portet e shërbimeve mund të lihen pa emër, Istio kërkon që të përputhet me protokollin e tij. Në skedarin YAML, porta për server quhet http, sepse serveri përdor protokollin HTTP. Po të service përdorte gRPC, do ta kishit quajtur portën grpc.
- Implementimet etiketohen. Prandaj, mund të përdorni funksionet e menaxhimit të trafikut të Istio, për shembull, për të ndarë trafikun midis versioneve të një shërbimi.
Instalimi i Istio
Istio mund të instalohet në dy mënyra. Mund të ose në klastra. Me Istio on GKE, mund të menaxhoni lehtësisht instalimin dhe përditësimin e Istio brenda ciklit të jetës së klastra GKE. Nëse ju nevojitet versioni më i ri i Istio ose më shumë kontroll mbi konfigurimin e panelit të kontrollit të Istio, instaloni versionin open-source në vend të zgjerimit Istio on GKE. Për të vendosur qasjen, lexoni artikullin .
Zgjidhni një mundësi, studio udhëzimin përkatës dhe ndiqni udhëzimet për të instaluar Istio në klastra. Nëse dëshironi të përdorni Istio me një aplikacion të sapo vendosur, për hapësirat e emrave default.
Pastrimi
Për të mos u ngarkuar për burimet që keni përdorur në këtë udhëzim nga llogaria Google Cloud Platform, fshini klastrin e kontejnerit kur të keni instaluar Istio dhe të keni luajtur me shembullin e aplikacionit. Kështu do të fshihen të gjitha burimet e klastri, si instancat e llogaritjes, diskët dhe burimet rrjetit.
ĂfarĂ« ndodh mĂ« tej?
Studioni teknologjitë e mëposhtme:
Studioni mjetet e mëposhtme:
Studioni konceptet Kubernetes:
Burimi: habr.com
