Amin'ity lesona ity dia azonao atao ny mampiasa Cloud Shell, izay manomana ny milina virtoaly g1-kely ao amin'ny Google Compute Engine miaraka amin'ny Linux miorina amin'ny Debian, na solosaina Linux na macOS.
Safidy A: Mampiasa Cloud Shell
Tombontsoa amin'ny fampiasana Cloud Shell:
Python 2 sy Python 3 tontolo fampandrosoana (anisan'izany virtualenv) dia voarindra tanteraka.
Command Line Tools gcloud, docker, Mandehana ΠΈ kubectl, izay hampiasainay dia efa napetraka.
hametraka kubectl - fitaovana andalana ho an'ny asa Kubernetes.
gcloud components install kubectl
hametraka Docker Community Edition (CE). Hampiasa ny fitaovana andalana baiko ianao dockermba hamoronana sary fitoeran-javatra ho an'ny santionany fampiharana.
Apetraho ny fitaovana Git version controlmba hahazoana ny santionany fampiharana avy amin'ny GitHub.
Raha te hijery ny santionany fampiharana dia mandehana ao amin'ny Cloud Shell na amin'ny solosainao.
1) Ao amin'ny katalaogy istio-samples/sample-apps/helloserver mihazakazaka mpizara:
python3 server/server.py
Amin'ny fanombohana mpizara ireto no aseho:
INFO:root:Starting server...
2) Sokafy varavarankely terminal hafa handefasana fangatahana mpizara. Raha mampiasa Cloud Shell ianao dia kitiho ny kisary ampio mba hanokafana fivoriana hafa.
3) Alefaso any amin'ny mpizara:
curl http://localhost:8080
Valin'ny mpizara:
Hello World!
4) Avy amin'ny lahatahiry nisintonanao ny code santionany, mandehana any amin'ny lahatahiry misy loadgen:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
Avy amin'ny fomba fijerin'ny tambajotra, ny fampiharana manontolo dia mandeha amin'ny mpampiantrano tokana (solosaina eo an-toerana na milina virtoaly Cloud Shell). Noho izany dia azonao ampiasaina localhosthandefasana fangatahana mpizara.
10) Mijanona loadgen ΠΈ mpizara, miditra Ctrl-c amin'ny varavarankely terminal rehetra.
11) Ao amin'ny varavarankely terminal loadgen esory ny tontolo virtoaly:
deactivate
Fametahana fampiharana ao anaty container
Mba hampandehanana ny rindranasa amin'ny GKE dia mila mametaka ny fampiharana santionany ianao β mpizara ΠΈ loadgen - in fitoeran. Ny kaontenera dia fomba iray hametahana rindranasa hanasaraka azy amin'ny tontolo iainany.
Mba hamehezana fampiharana ao anaty fitoeran-javatra iray dia mila dockerfile. dockerfile dia rakitra an-tsoratra izay mamaritra ny baiko amin'ny fananganana ny kaody loharanon'ny fampiharana sy ny fiankinany Sary Docker. Rehefa vita dia ampidiro ao amin'ny rejisitry ny container toy ny Docker Hub na Rejistra kaontenera.
Ny ohatra efa misy dockerfile ho an'ny mpizara ΠΈ loadgen miaraka amin'ny baiko ilaina rehetra hanangonana sary. ambany- dockerfile ho an'ny mpizara:
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" ]
ekipa Avy amin'ny python:3-slim ho fototra dia milaza amin'i Docker hampiasa ny farany Python 3 sary ho fototra.
ekipa COPY. . dia mandika ny rakitra loharano mankany amin'ny lahatahiry miasa amin'izao fotoana izao (raha ny anay ihany server.py) mankany amin'ny rafitra fichier an'ny container.
ENTRYPOINT mamaritra ny baiko ampiasaina hanombohana ny fitoeran-javatra. Aminay, io baiko io dia saika mitovy amin'ny an'ilay efa nampiasainao server.py avy amin'ny kaody loharano.
ekipa hampiharihary milaza izany mpizara miandry angona amin'ny alalan'ny seranana 8080. Tsy ity ekipa ity manome seranana. Ity dia karazana antontan-taratasy ilaina hanokafana ny seranana 8080 rehefa manomboka ny fitoeran-javatra.
Avereno jerena ny lisitry ny sary ao amin'ny tahiry ary hamarino fa nampiakarina ireo sary:
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio
Ny baiko dia mampiseho ny anaran'ireo sary vao nampidirina:
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
Mamorona cluster GKE.
Ireo kaontenera ireo dia azo atao amin'ny milina virtoaly Cloud Shell na amin'ny solosaina misy ny baiko docker run. Saingy ao anatin'ny tontolo famokarana dia mila fomba handrindrana ny kaontenera afovoany ianao. Ohatra, mila rafitra ianao izay manome antoka fa mandeha foana ny kaontenera, ary mila fomba hanamafisana sy hanodinana trangan-javatra fanampiny ianao raha mitombo ny fifamoivoizana.
Mba hampandehanana fampiharana containerized azonao ampiasaina G.K.E.. GKE dia sehatra orkestra kaontenera izay manangona milina virtoaly ho vondrona iray. Ny milina virtoaly tsirairay dia antsoina hoe node. Ny kluster GKE dia mifototra amin'ny rafitra fitantanana kluster Kubernetes open source. Kubernetes dia manome mekanika hifaneraserana amin'ny cluster.
ekipa gcloud mamorona kluster istioready ao amin'ny tetikasa GCP sy faritra voafantinao. Mba hampandehanana an'i Istio, dia manoro hevitra ny hanana node 4 farafahakeliny sy milina virtoaly izahay n1-fenitra-2.
Ny ekipa dia mamorona ny cluster ao anatin'ny minitra vitsy. Rehefa vonona ny cluster dia mamoaka zavatra toy izao ny baiko ny hafatra.
2) Omeo fahazoan-dΓ lana ao amin'ny fitaovana andalana baiko kubectlhampiasa azy io hitantana ny cluster:
3) Afaka mifandray amin'ny Kubernetes ianao izao kubectl. Ohatra, ity baiko manaraka ity dia afaka mamantatra ny toetry ny nodes:
kubectl get nodes
Ny baiko dia mamokatra lisitry ny nodes:
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
Hevitra fototra Kubernetes
Ny kisary dia mampiseho fampiharana amin'ny GKE:
Alohan'ny hametrahanao kaontenera ao amin'ny GKE dia fantaro ny foto-kevitra fototra momba ny Kubernetes. Misy rohy any amin'ny farany indrindra raha te hianatra bebe kokoa ianao.
Nodes sy cluster. Ao amin'ny GKE, ny node dia milina virtoaly. Amin'ny sehatra Kubernetes hafa, ny node dia mety ho solosaina na milina virtoaly. Ny kluster dia fitambarana nodes izay azo raisina ho vondrona tokana izay hametrahanao fampiharana voatahiry.
Pods. Ao amin'ny Kubernetes, ny kaontenera dia mandeha amin'ny pods. Ny Pod ao amin'ny Kubernetes dia singa tsy azo zaraina. Ny Pod dia mitazona fitoeran-javatra iray na maromaro. Mametraka kaontenera mpizara ianao ary loadgen amin'ny pods misaraka. Rehefa misy kaontenera maromaro ao anaty pod (ohatra, mpizara fampiharana sy mpizara proxy), kaontenera dia tantanina ho toy ny singa tokana ary mizara loharano pod.
Fametrahana. Ao amin'ny Kubernetes, ny fametrahana dia zavatra izay fitambarana pods mitovy. Ny fandefasana dia mamoaka dika mitovy amin'ny pods zaraina amin'ny node cluster. Ny fametrahana dia manolo ho azy ireo pod izay tsy nahomby na tsy namaly.
Serivisy Kubernetes. Rehefa mihazakazaka ny kaody fampiharana ao amin'ny GKE, ny fifandraisana eo amin'ny loadgen ΠΈ mpizara. Rehefa nanomboka tolotra tamin'ny milina virtoaly Cloud Shell na biraonao ianao dia nandefa fangatahana mpizara ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ localhost: 8080. Vantany vao napetraka amin'ny GKE, ny pods dia tanterahana amin'ny nodes misy. Amin'ny alΓ lan'ny default, tsy azonao atao ny mifehy ny node izay iasan'ny pod, ka ianao pods tsy misy adiresy IP maharitra.
Mba hahazoana adiresy IP ho an'ny mpizara, mila mamaritra abstraction amin'ny tambajotra ianao eo an-tampon'ny pods. Izany no izy Serivisy Kubernetes. Ny serivisy Kubernetes dia manome teboka farany maharitra ho an'ny andian-pod. Misy vitsivitsy karazana tolotra. mpizara fampiasana LoadBalancer, izay manome adiresy IP ivelany hifandraisana mpizara avy any ivelan'ny cluster.
Kubernetes koa dia manana rafitra DNS naorina izay manome anarana DNS (ohatra, helloserver.default.cluster.local) serivisy. Noho izany, ny pods ao anatin'ny cluster dia mifandray amin'ny pods hafa ao amin'ny cluster amin'ny adiresy maharitra. Tsy azo ampiasaina ivelan'ny cluster ny anarana DNS, toy ny ao amin'ny Cloud Shell na amin'ny solosaina.
Kubernetes miseho
Rehefa nihazakazaka ny fampiharana avy amin'ny loharano ianao dia nampiasa ny baiko imperative python3
server.py
Imperative dia midika hoe matoanteny: "ataovy izao."
Mampiasa ny Kubernetes modely fanambarana. Midika izany fa tsy milaza amin'i Kubernetes mazava tsara izay tokony hatao izahay, fa mamaritra ny fanjakana irina. Ohatra, ny Kubernetes dia manomboka sy mampiato ny pods raha ilaina mba hahazoana antoka fa ny tena toetran'ny rafitra dia mifanaraka amin'ny toetry ny tiana.
Asehonao amin'ny manifests na ny rakitra ny fanjakana tianao YAML. Ny rakitra YAML dia misy fepetra manokana ho an'ny zavatra Kubernetes iray na maromaro.
Ny ohatra dia misy rakitra YAML ho an'ny mpizara ΠΈ loadgen. Ny rakitra YAML tsirairay dia mamaritra ny toe-javatra tiana amin'ny zavatra fametrahana sy ny serivisy Kubernetes.
saha voalohany spec misy famaritana ny fanjakana tiana.
spec.replicas manondro ny isan'ny pods tiana.
fizarana spec.template mamaritra modely pod. Misy saha ao amin'ny famaritana pod sary, izay mamaritra ny anaran'ny sary tsy maintsy esorina ao amin'ny Rejistra Container.
LoadBalancer: Ny mpanjifa dia mandefa fangatahana amin'ny adiresy IP an'ny mpandrindra entana, izay manana adiresy IP maharitra ary azo idirana avy any ivelan'ny cluster.
targetPort: araka ny tsaroanao, ny ekipa 8080 Π² dockerfile tsy nanome seranana. Ianao no manome ny seranana 8080mba hahafahanao mifandray amin'ny container mpizara ivelan'ny cluster. Raha ny antsika hellosvc.default.cluster.local:80 (anarana fohy: hellosvc) mifanaraka amin'ny seranan-tsambo 8080 Adiresy IP Pod helloserver.
seranan-tsambo: Ity no laharan'ny seranan-tsambo izay handefasana fangatahana hafa ao amin'ny cluster.
loadgen.yaml
Objet de deployment to loadgen.yaml toa server.yaml. Ny mahasamihafa azy dia misy fizarana iray ny zavatra deployment mandefa. Izy io dia mamaritra ny fari-piainan'ny tontolo iainana ilaina loadgen ary napetrakao rehefa mampandeha ny fampiharana avy amin'ny loharano.
Soloy PROJECT_ID mankany amin'ny ID tetikasa GCP-nao.
9) Tehirizo ary akatona loadgen.yaml, akatony ny tonian-dahatsoratra.
10) Apetraho amin'ny Kubernetes ny rakitra YAML:
kubectl apply -f loadgen.yaml
Rehefa vita soa aman-tsara dia mamoaka izao code manaraka izao ny baiko:
deployment.apps/loadgenerator created
service/loadgensvc created
11) Jereo ny toetry ny pods:
kubectl get pods
Ny baiko dia mampiseho ny sata:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) Esory ny logs fampiharana avy amin'ny pod loadgen. Soloy POD_ID amin'ny famantarana avy amin'ny valiny teo aloha.
kubectl logs loadgenerator-POD_ID
13) Mahazoa adiresy IP ivelany hellosvc:
kubectl get service
Ny valin'ny baiko dia toa izao:
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) Alefaso any amin'ny hellosvc: soloina EXTERNAL_IP mankany amin'ny adiresy IP ivelany hellosvc.
curl http://EXTERNAL_IP
Andeha isika haka an'i Istio
Efa manana fampiharana napetraka amin'ny GKE ianao. loadgen afaka mampiasa DNS Kubernetes (hellosvc:80) handefasana fangatahana mpizaraary afaka mandefa fangatahana ianao mpizara amin'ny adiresy IP ivelany. Na dia manana endri-javatra maro aza i Kubernetes, misy fampahalalana tsy ampy momba ny serivisy:
Ahoana ny fifandraisan'ny serivisy? Inona avy ireo fifandraisana misy eo amin'ny serivisy? Ahoana ny fandehan'ny fifamoivoizana eo amin'ny serivisy? Fantatrao ve izany loadgen mandefa fangatahana amin'ny mpizara, fa alaivo sary an-tsaina hoe tsy mahalala na inona na inona momba ny fampiharana ianao. Mba hamaliana ireo fanontaniana ireo dia andeha hojerentsika ny lisitry ny pods mihazakazaka ao amin'ny GKE.
mari-pandrefesana. Hafiriana mpizara mamaly ny fangatahana ho avy? Firy ny fangatahana isan-tsegondra voarain'ny mpizara? Manome hafatra diso ve izany?
Fampahafantarana momba ny fiarovana. Fifamoivoizana eo anelanelan'ny loadgen ΠΈ mpizara mandalo fotsiny HTTP na avy amin'i mTLS?
Mamaly ireo fanontaniana rehetra ireo i Istio. Mba hanaovana izany dia mametraka proxy sidecar i Istio iraka amin'ny pod tsirairay. Ny proxy Envoy dia manakana ny fifamoivoizana miditra sy mivoaka rehetra mankany amin'ny kaontenera fampiharana. Midika izany fa mpizara ΠΈ loadgen mahazo amin'ny alalan'ny sidecar proxy Envoy, sy ny fifamoivoizana rehetra avy loadgen ΠΊ mpizara mandeha amin'ny alΓ lan'ny proxy Envoy.
Ny fifandraisana eo amin'ny proxies Envoy dia mamorona tambajotra serivisy. Manome sosona fanaraha-maso eo an-tampon'ny Kubernetes ny rafitra mesh service.
Satria ny proxies Envoy dia mandeha ao anaty fitoerany manokana, Istio dia azo apetraka eo an-tampon'ny cluster GKE izay saika tsy misy fiovana amin'ny kaody fampiharana. Saingy nanao asa vitsivitsy ianao mba hanomanana ny fangatahanao ho tantanan'i Istio:
Serivisy ho an'ny kaontenera rehetra. To deployments mpizara ΠΈ loadgen mifandray amin'ny serivisy Kubernetes. na dia loadgen, izay tsy mahazo fangatahana miditra dia misy serivisy.
Ny seranan-tsambo amin'ny serivisy dia tsy maintsy manana anarana. Na dia azo avela tsy hotononina ao amin'ny GKE aza ny seranan-tsambo serivisy, i Istio dia mitaky anao hamaritra anaran'ny seranan-tsambo araka ny protocole. Ao amin'ny rakitra YAML ny port for mpizara is called Sokajysatria mampiasa ny protocol ny server HTTP... RAHA fanompoana ampiasaina gRPC, hataonao anarana ny seranana grpc.
Voamarika ny fandefasana. Noho izany, azonao atao ny mampiasa ny endri-pitantanana ny fifamoivoizana an'i Istio, toy ny fanasarahana ny fifamoivoizana eo amin'ny dikan-teny mitovy.
Fametrahana Istio
Misy fomba roa hametrahana Istio. afaka avelao ny Istio amin'ny fanitarana GKE na apetraho ny version open source an'ny Istio amin'ny cluster. Miaraka amin'ny Istio amin'ny GKE, azonao atao ny mitantana mora foana ny fametrahana sy ny fanavaozana Istio mandritra ny tsingerin'ny fiainan'ny cluster GKE. Raha tianao ny kinova farany an'ny Istio na fanaraha-maso bebe kokoa amin'ny fikirakirana tontonana fanaraha-maso Istio dia apetraho ny dikan-teny misokatra fa tsy ny fanitarana Istio amin'ny GKE. Mba hanapa-kevitra momba ny fomba, vakio ny lahatsoratra Mila Istio amin'ny GKE ve aho?.
Misafidiana safidy iray, avereno jerena ny torolΓ lana mety, ary araho ny torolΓ lana hametrahana Istio amin'ny cluster. Raha te hampiasa Istio amin'ny fampiharanao vao napetraka ianao, mamela ny fampiharana sidecar ho an'ny namespace toerana misy anao.
fanadiovana
Mba tsy ho voaloa amin'ny kaontinao Google Cloud Platform noho ireo loharano nampiasainao tamin'ity lesona ity, vonoy ny klioban'ny kaontenera rehefa nametraka Istio ianao ary nilalao tamin'ny fampiharana santionany. Izany dia hanaisotra ny loharanon'ny cluster rehetra, toy ny tranga kajy, kapila ary loharanon-tambajotra.