Istio o se meafaigaluega talafeagai mo le faʻafesoʻotaʻi, faʻamautinoa ma mataʻituina talosaga tufatufaina. O lo'o fa'aogaina e Istio le tele o tekinolosi e fa'atino ai ma fa'atautaia polokalame i le fua, e aofia ai atigipusa e fa'apipi'i ai fa'ailoga tusi talosaga ma fa'alagolago mo le fa'atinoina, ma Kubernetes e fa'atautaia na koneteina. O le mea lea, e galulue ai ma Istio e tatau ona e iloa pe faʻapefea ona galue se talosaga ma le tele o auaunaga e faʻavae i luga o nei tekinolosi e aunoa ma Istio. Afai o nei meafaigaluega ma manatu ua e masani ia te oe, lagona le saoloto e faamisi lenei aʻoaʻoga ma alu saʻo i le vaega Fa'apipi'i Istio ile Google Kubernetes Engine (GKE) poʻo le faʻapipiʻiina o se faʻaopoopoga Istio i le GKE.
Ole ta'iala lea ole la'asaga ole a tatou savalia le faagasologa atoa mai le source code ile GKE container e avatu ai ia te oe se malamalamaga faavae o nei tekinolosi e ala i se fa'ata'ita'iga. E te va'ai fo'i pe fa'afefea ona fa'aogaina e Istio le malosi o nei tekonolosi. E fa'apea e te le iloa se mea e uiga i koneteina, Kubernetes, meshes tautua, po'o Istio.
Galuega
I lenei aʻoaʻoga, o le ae faʻamaeʻaina galuega nei:
A'oa'oina se fa'aoga faigofie i le lalolagi fa'afeiloa'i ma le tele o tautua.
Fa'aola le talosaga mai le fa'ailoga puna.
Tu'u le talosaga i totonu o pusa.
Fausia se fuifui Kubernetes.
Fa'asoa pusa i totonu o se fuifui.
Ae e te lei amata
Mulimuli i faatonuga ina ia mafai ai le Kubernetes Engine API:
I lenei aʻoaʻoga, e mafai ona e faʻaogaina le Cloud Shell, lea e saunia ai le masini masini g1-laiti ile Google Compute Engine fa'atasi ai ma Linux fa'avae Debian, po'o se komepiuta Linux po'o macOS.
Filifiliga A: Fa'aaogā le Cloud Shell
Fa'amanuiaga ole fa'aogaina ole Cloud Shell:
Python 2 ma le Python 3 atinaʻe siosiomaga (e aofia ai taupou) ua fa'atulaga atoatoa.
Meafaigaluega Laina Poloaiga gcloud, toso, git и kubectl, lea o le a matou faʻaogaina ua uma ona faʻapipiʻiina.
O le faʻataʻitaʻiga talosaga o loʻo tusia i le Python ma e aofia ai vaega e lua e fegalegaleai faʻaoga mapu:
faigaluega: server faigofie e tasi le pito MAUA, /, lea e lolomi "hello world" i le faʻamafanafanaga.
utaina: tusitusiga e auina atu ai feoaiga i faigaluega, faatasi ai ma se numera fetuutuunai o talosaga i le sekone.
Fa'atino se talosaga mai le fa'ailoga puna
Ina ia su'esu'e le fa'ata'ita'iga talosaga, fa'agasolo ile Cloud Shell po'o lau komepiuta.
1) I le lisi istio-samples/sample-apps/helloserver tamo'e faigaluega:
python3 server/server.py
I le amataga faigaluega ua fa'aalia mea nei:
INFO:root:Starting server...
2) Tatala se isi fa'amalama fa'amau e lafo ai talosaga i faigaluega. Afai o lo'o e fa'aogaina le Cloud Shell, kiliki le fa'aopoopo fa'aikona e tatala ai se isi sauniga.
3) Auina atu se talosaga i faigaluega:
curl http://localhost:8080
tali a le server:
Hello World!
4) Mai le lisi na e siiina mai ai le faʻataʻitaʻiga code, alu i le lisi o loʻo i ai utaina:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
Mai se va'aiga feso'ota'iga, o le talosaga atoa e fa'atautaia i luga o se 'au e tasi (komipiuta fa'apitonu'u po'o le Cloud Shell virtual machine). O lea e mafai ona e faʻaaogaina localhoste lafo atu talosaga i faigaluega.
10) Ia taofi utaina и faigaluega, ulufale Ctrl-c i fa'amalama fa'amalama uma.
11) I le faʻamalama faʻamalama utaina fa'agata le si'osi'omaga virtual:
deactivate
Fa'apipi'i se talosaga i totonu o koneteina
Ina ia fa'agasolo le talosaga ile GKE, e tatau ona e fa'apipi'i le fa'ata'ita'iga talosaga - faigaluega и utaina - i le koneteina. O se atigipusa o se auala e afifiina ai se talosaga e vavae ese mai lona siosiomaga.
Ina ia afifi se talosaga i totonu o se koneteina, e te manaʻomia faila faila. faila faila ose faila faila e fa'amatala ai fa'atonuga mo le fausiaina o le fa'apogai o le tusi talosaga ma ona fa'alagolago i totonu Ata Docker. A maeʻa ona fausia, e te lafoina le ata i se koneteina resitala pei ole Docker Hub poʻo Tusi Resitala Container.
O le faataitaiga ua uma ona i ai faila faila mo faigaluega и utaina faatasi ai ma poloaiga talafeagai uma e aoina ai ata. Lalo - faila faila mo faigaluega:
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" ]
au MAI python:3-slim e pei o le faavae taʻu atu ia Docker e faʻaaoga le mea fou Python 3 ata e fai ma faavae.
au KOPI. . kopiina faila autu i le lisi galue o loʻo iai nei (i le matou tulaga server.py) i le faiga faila a le koneteina.
ENTRYPOINT fa'amatala le fa'atonuga e fa'aaoga e amata ai le koneteina. I la matou tulaga, o lenei poloaiga e toetoe lava tutusa ma le tasi na e faʻaaogaina server.py mai le source code.
au FAʻAALIGA faailoa mai lena faigaluega fa'atali mo fa'amatalaga e ala i le uafu 8080. E leai lenei 'au saunia uafu. O se ituaiga o faʻamaumauga e manaʻomia e tatala ai le taulaga 8080 pe a amata le koneteina.
Sauni e fa'aputu lau talosaga
1) Seti suiga ole siosiomaga nei. Sui PROJECT_ID i lau ID galuega GCP.
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
Fa'aaogaina o mea taua PROJECT_ID и GCR_REPO e te faʻailogaina le ata Docker pe a e fausia ma tulei i se Resitala Container tumaoti.
2) Seti le GCP galuega faatino mo le meafaigaluega laina poloaiga gcloud.
gcloud config set project $PROJECT_ID
3) Seti le sone fa'aletonu mo le meafaigaluega laina poloaiga gcloud.
gcloud config set compute/zone us-central1-b
4) Ia mautinoa o lo'o fa'agaoioi le auaunaga Resitala Container ile poloketi GCP.
Toe iloilo le lisi o ata i totonu o le fale teu oloa ma faʻamaonia ua uma ona tuʻuina ata:
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio
O le faʻatonuga e faʻaalia ai igoa o ata fou na tuʻuina atu:
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
Fausia se fuifui GKE.
O nei koneteina e mafai ona faʻatautaia i luga o se masini komepiuta Cloud Shell poʻo luga o se komepiuta ma le faʻatonuga toso tamoe. Ae i se siosiomaga gaosiga, e te manaʻomia se auala e faʻapipiʻi ai pusa. Mo se faʻataʻitaʻiga, e te manaʻomia se faiga e faʻamautinoa ai o loʻo taʻavale i taimi uma pusa, ma e te manaʻomia se auala e faʻalautele ai ma faʻapipiʻi i luga isi mea faʻapipiʻi pe a faʻateleina feoaiga.
Mo le fa'agaioia o mea fa'apipi'i e mafai ona e fa'aogaina GKE. O le GKE ose koneteina tu'ufa'atasiga fa'apipi'i e fa'apotopotoina masini fa'apitoa i se fuifui. E ta'ua ta'itasi masini fa'apitoa o se node. O fuifui GKE e fa'avae i luga ole faiga fa'afoe o le fa'aogaina o fa'alapotopotoga Kubernetes. Ua saunia e Kubernetes auala e fegalegaleai ai ma le fuifui.
au gcloud fa'atupuina se fuifui istioready i le GCP poloketi ma le sone fa'aletonu na e fa'ailoa mai. Ina ia faʻagasolo Istio, matou te fautuaina le i ai o le itiiti ifo ma le 4 nodes ma se masini masini n1-tulaga-2.
E faia e le 'au le fuifui i ni nai minute. A sauni le fuifui, o le poloaiga e faʻaalia se mea faʻapea feʻau.
2) Tuuina atu faʻamaoniga i le meafaigaluega laina faʻatonu kubectle fa'aaoga e pulea ai le fuifui:
3) O lea e mafai ona e fesoʻotaʻi ma Kubernetes e ala i kubectl. Mo se faʻataʻitaʻiga, o le poloaiga lenei e mafai ona iloa ai le tulaga o nodes:
kubectl get nodes
O le poloaiga e maua ai se lisi o 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
Kubernetes Manatu Autu
O le ata o loʻo faʻaalia ai se talosaga ile GKE:
Ae e te le'i tu'uina atu pusa i le GKE, a'oa'o manatu autu o Kubernetes. E iai feso'ota'iga i le pito tonu pe a e mana'o e a'oa'o atili.
Nodes ma fuifui. I le GKE, o le node o se masini komepiuta. I luga o isi tulaga Kubernetes, o le node e mafai ona avea ma komepiuta poʻo se masini komepiuta. O le fuifui o se aofa'iga o nodes e mafai ona manatu o se iunite e tasi e te fa'aogaina ai se talosaga fa'apipi'i.
Pods. I Kubernetes, o koneteina o loʻo taʻavale i pusa. O le Pod i Kubernetes o se iunite e le mavaevae. O le Pod o lo'o uuina se atigipusa se tasi pe sili atu. E te fa'apipi'i pusa server ma utaina i pusa eseese. Pe a tele ni koneteina i totonu o se pusa (mo se faʻataʻitaʻiga, se server application ma sui sui), koneteina o lo'o fa'afoeina o se fa'alapotopotoga e tasi ma fefa'asoaa'i punaoa pod.
Fa'atonuga. I totonu o Kubernetes, o le faʻapipiʻiina o se mea faitino o se aofaʻiga o pusa tutusa. O le fa'atinoina e fa'alauiloa ai le tele o fa'atusa o pods o lo'o fa'asoa i nodes fuifui. E otometi lava ona sui le fa'apolokalame ia pods ua le manuia pe ua le tali mai.
auaunaga Kubernetes. Pe a faʻatautaia le code talosaga i le GKE, o le fesoʻotaʻiga i le va utaina и faigaluega. Ina ua e amataina au'aunaga i luga o se masini komepiuta Cloud Shell po'o le desktop, na e lafoina talosaga i faigaluega i localhost: 8080. O le taimi lava e tu'uina atu ai i le GKE, e fa'atino fo'i pods i nodes avanoa. I le faaletonu, e leai sau pule i luga o le pona o loʻo faʻaogaina ai le pod, o oe pusa leai ni tuatusi IP tumau.
Ina ia maua se tuatusi IP mo faigaluega, e tatau ona e faʻamalamalamaina se faʻaogaina o fesoʻotaʻiga i luga o pods. O le mea lena auaunaga Kubernetes. Ole 'au'aunaga Kubernetes e maua ai se fa'ai'uga tumau mo se seti o pods. E i ai nai ituaiga auaunaga. faigaluega faʻaaoga LoadBalancer, lea e maua ai se tuatusi IP fafo e faʻafesoʻotaʻi faigaluega mai fafo o le fuifui.
O lo'o iai fo'i i le Kubernetes se fa'aoga DNS e tu'uina atu igoa DNS (mo se fa'ata'ita'iga, helloserver.default.cluster.local) auaunaga. Fa'afetai i lenei mea, o pusa i totonu o le fuifui e feso'ota'i ma isi pods i le fuifui i se tuatusi faifaipea. Le igoa DNS e le mafai ona fa'aoga i fafo atu o le fuifui, pei ole Cloud Shell po'o luga ole komepiuta.
Kubernetes faʻaalia
Ina ua e tamo'e le talosaga mai le puna, na e fa'aogaina le fa'atonuga taua python3
server.py
Imperative e faauigaina se veape: "fai lenei."
Fa'aaoga e Kubernetes fa'ata'ita'iga fa'ailoa. O lona uiga matou te le o taʻuina saʻo ia Kubernetes le mea e fai, ae o loʻo faʻamatalaina le tulaga manaʻomia. Mo se faʻataʻitaʻiga, Kubernetes amata ma taofi pods pe a manaʻomia e faʻatumauina le tulaga moni o le faiga e ogatasi ma le tulaga manaʻomia.
E te faʻaalia le tulaga manaʻomia i faʻaaliga poʻo faila YAML. O se faila YAML o lo'o iai fa'amatalaga mo se tasi pe sili atu mea Kubernetes.
O le faʻataʻitaʻiga o loʻo i ai se faila YAML mo faigaluega и utaina. O faila YAML taʻitasi e faʻamaonia ai le tulaga manaʻomia o le mea faʻapipiʻi ma auaunaga Kubernetes.
Muamua fanua faʻamatalaga o loʻo i ai se faʻamatalaga o le tulaga manaʻomia.
spec.replicas ta'u mai ai le numera mana'omia o pods.
Fuaiupu spec.template fa'amatala se mamanu pod. O loʻo i ai se fanua i le faʻamatalaga pod faʻatusa, lea e faʻamaonia ai le igoa o le ata e manaʻomia ona aveese mai le Container Registry.
LoadBalancer: E auina atu e tagata faʻatau talosaga i le tuatusi IP o le paleni o uta, o loʻo i ai se tuatusi IP tumau ma e mafai ona maua mai fafo atu o le fuifui.
targetPort: e pei ona e manatua, o le au FAAALIA 8080 в faila faila e le'i saunia ni uafu. E te saunia le uafu 8080ina ia mafai ona e faʻafesoʻotaʻi le pusa faigaluega fafo o le fuifui. I lo tatou tulaga hellosvc.default.cluster.local:80 (igoa puupuu: talofavc) e fetaui ma le uafu 8080 Pod tuatusi IP Helloserver.
tāulaga: O le numera lea o le taulaga lea e auina atu ai e isi au'aunaga i totonu o le fuifui talosaga.
loadgen.yaml
Fa'atino mea e loadgen.yaml e foliga server.yaml. O le eseesega o le mea faʻapipiʻi o loʻo i ai se vaega auina atu. O lo'o fa'amatalaina ai suiga ole si'osi'omaga e mana'omia utaina ma na e faʻapipiʻiina pe a faʻagaoioia le talosaga mai le puna.
Tasi utaina e le talia talosaga e sau, mo le fanua ituaiga faailoa ClusterIP. O lenei ituaiga e maua ai se tuatusi IP tumau e mafai ona faʻaogaina e auʻaunaga i le fuifui, ae o lenei tuatusi IP e le faʻaalia i tagata mai fafo.
Sui PROJECT_ID i lau ID galuega GCP.
9) Faasaoina ma tapuni loadgen.yaml, tapuni le faatonu o tusitusiga.
10) Tuʻu le faila YAML i Kubernetes:
kubectl apply -f loadgen.yaml
A maeʻa manuia, o le poloaiga e maua ai le code lea:
deployment.apps/loadgenerator created
service/loadgensvc created
11) Siaki le tulaga o pusa:
kubectl get pods
O le poloaiga e faʻaalia ai le tulaga:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) Ave'ese tusi talosaga mai le pod utaina. Sui POD_ID i le fa'ailoa mai le tali muamua.
kubectl logs loadgenerator-POD_ID
13) Maua tuatusi IP fafo talofavc:
kubectl get service
O le tali o le poloaiga e foliga mai e pei o lenei:
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) Auina atu se talosaga i talofavc: sui EXTERNAL_IP i tuatusi IP fafo talofavc.
curl http://EXTERNAL_IP
Sei o tatou ave Istio
Ua uma ona i ai sau talosaga ua fa'apipi'i ile GKE. utaina mafai ona fa'aoga Kubernetes DNS (talofavc:80) e lafo atu talosaga i faigaluegama e mafai ona e lafo talosaga i faigaluega e ala ile tuatusi IP fafo. E ui lava e tele foliga o Kubernetes, o loʻo i ai nisi faʻamatalaga o loʻo misi e uiga i auaunaga:
E fa'afefea ona fegalegaleai au'aunaga? O a sootaga i le va o auaunaga? E fa'afefea ona feoa'i feoaiga i le va o auaunaga? O e silafia lena mea utaina auina atu talosaga i faigaluega, ae mafaufau e te le iloa se mea e uiga i le talosaga. Ina ia tali nei fesili, se'i o tatou va'ai i le lisi o ta'avale pods i le GKE.
Fuafuaga. Le a le umi faigaluega e tali atu i se talosaga e sau? E fia talosaga i le sekone e maua e le server? E aumai ni fe'au sese?
Fa'amatalaga Puipuiga. Ta'avale i le va utaina и faigaluega na ona pasia HTTP pe e ala i mTLS?
E tali e Istio nei fesili uma. Ina ia faia lenei mea, e tuʻuina e Istio se sui taʻavale Envoy i pusa taitasi. O le sui sui o le Envoy e fa'alavelave uma femalaga'iga ulufale ma fafo atu i pusa talosaga. O lona uiga faigaluega и utaina maua e ala i sidecar sui Avefeau, ma feoaiga uma mai utaina к faigaluega alu atu i le sui sui.
O feso'ota'iga i le va o sui sui o le Envoy e fausia ai se 'au'aunaga. O le au'aunaga mesh architecture e maua ai se fa'atonuga i luga o Kubernetes.
Talu ai ona o sui o le Envoy e tamomoe i totonu o latou lava koneteina, e mafai ona faʻapipiʻi Istio i luga o le kulupu GKE e toetoe lava a leai ni suiga i le numera o talosaga. Ae ua e faia se galuega e saunia ai lau talosaga e pulea e Istio:
Au'aunaga mo koneteina uma. I deployments faigaluega и utaina noatia i le auaunaga Kubernetes. E oo lava utaina, lea e le maua mai talosaga mai, o loʻo i ai se auaunaga.
O taulaga i auaunaga e tatau ona iai igoa. E ui lava e mafai ona tu'u le ta'ua ports i le GKE, e mana'omia e Istio oe e fa'amaoti igoa uafu e tusa ai ma lana feagaiga. I le faila YAML le taulaga mo faigaluega ua valaauina httpaua o lo'o fa'aogaina e le server le protocol HTTP. Afai tautua faʻaaoga gRPC, e te faaigoa le uafu grpc.
Ua fa'ailogaina fa'agaioiga. O le mea lea, e mafai ona e faʻaogaina le faʻaogaina o fefaʻatauaiga a Istio, e pei o le vaeluaina o fefaʻatauaiga i le va o lomiga o le auaunaga lava e tasi.
Fa'apipi'i Istio
E lua auala e faʻapipiʻi ai Istio. E mafai fa'aagaoioia Istio ile fa'aopoopoga GKE poʻo faʻapipiʻi le faʻamatalaga tatala o Istio i luga o le fuifui. Faatasi ai ma Istio i luga o le GKE, e faigofie ona e pulea Istio faʻapipiʻi ma faʻaleleia i le GKE cluster lifecycle. Afai e te manaʻo i le lomiga lata mai o Istio poʻo le sili atu le puleaina o lau Istio control panel configuration, faʻapipiʻi le faʻamatalaga tatala puna ae le o le Istio i le GKE faʻaopoopoga. Ina ia filifili i le auala, faitau le tusiga Ou te mana'omia Istio ile GKE?.
Filifili se filifiliga, faitau le taʻiala talafeagai, ma mulimuli i faʻatonuga e faʻapipiʻi ai Istio i lau fuifui. Afai e te manaʻo e faʻaoga Istio ma lau talosaga fou, fa'ataga le fa'atinoga o ta'avale mo igoa avanoa Leai se totogi.
Faamama
Ina ia aloese mai le molia i lau Google Cloud Platform account mo punaoa na e faʻaaogaina i lenei aʻoaʻoga, tape le pusa pusa pe a uma ona e faʻapipiʻi Istio ma taʻalo i le faʻataʻitaʻiga talosaga. Ole mea lea ole a ave'esea uma alagaoa fuifui, e pei ole fa'atulagaina o fa'ata'ita'iga, tisiki, ma punaoa feso'otaiga.