He taputapu watea a Istio mo te hono, te pupuri me te aro turuki i nga tono toha. Ka whakamahi a Istio i nga momo hangarau hei whakahaere me te whakahaere i nga rorohiko i runga i te rahi, tae atu ki nga ipu ki te kiki i nga waehere tono me nga whakawhirinakitanga mo te tuku, me nga Kubernetes hei whakahaere i aua ipu. No reira, ki te mahi tahi me Istio me mohio koe me pehea te mahi o te tono me nga ratonga maha i runga i enei hangarau kaore Istio. Mena kua mohio koe ki enei taputapu me enei ariā, me pekehia tenei akoranga ka haere tika ki te waahanga Te Tāuta Istio ki Google Kubernetes Engine (GKE) te whakauru ranei i tetahi toronga Istio i runga i te GKE.
He aratohu taahiraa-i-te-taahiraa ka hikoi matou i nga mahi katoa mai i te waehere puna ki te ipu GKE kia mohio koe ki enei hangarau ma te tauira. Ka kite ano koe me pehea te whakamahi a Istio i te mana o enei hangarau. Ko te whakaaro tenei kaore koe e mohio mo nga ipu, Kubernetes, meshes ratonga, Istio ranei.
mahi
I tenei akoranga, ka oti ia koe nga mahi e whai ake nei:
Te ako i tetahi tono oha ao ngawari me nga ratonga maha.
Whakahaerehia te tono mai i te waehere puna.
Te takai i te tono ki roto i nga ipu.
Te hanga i te roopu Kubernetes.
Te tuku ipu ki roto i te tautau.
I mua i to tiimata
Whaia nga tohutohu kia taea ai te Kubernetes Engine API:
I tenei akoranga, ka taea e koe te whakamahi Cloud Shell, e whakarite ana i te miihini mariko g1-iti i roto i te Google Compute Engine me te Linux-a-Debian, he rorohiko Linux, macOS ranei.
Kōwhiringa A: Mā te Cloud Shell
Nga painga o te whakamahi Cloud Shell:
Python 2 me Python 3 taiao whanaketanga (tae atu ki te mariko) kua tino whirihora.
Utauta Raina Whakahau gcloud, toka, git и kubectl, ka whakamahia e matou kua whakauruhia.
Ko te tauira tono kua tuhia ki te Python me nga waahanga e rua e taunekeneke ana ma te whakamahi te okiokinga:
tūmau: tūmau ngawari me te pito mutunga Tikina, /, e tuhi ana "kia ora te ao" ki te papatohu.
utaina: tuhinga e tuku waka ki tūmau, me te maha o nga tono mo ia hekona.
Te whakahaere tono mai i te waehere puna
Hei torotoro i te tauira tono, whakahaere ki Cloud Shell, ki to rorohiko ranei.
1) Kei roto i te raarangi istio-samples/tauira-taupānga/helloserver rere tūmau:
python3 server/server.py
I te tiimata tūmau ka whakaatuhia enei e whai ake nei:
INFO:root:Starting server...
2) Whakatuwheratia tetahi atu matapihi kati hei tuku tono ki tūmau. Mena kei te whakamahi koe i te Cloud Shell, paatohia te ata taapiri hei whakatuwhera i tetahi atu huihuinga.
3) Tukuna he tono ki tūmau:
curl http://localhost:8080
nga whakautu a te tūmau:
Hello World!
4) Mai i te raarangi i tangohia e koe te tauira tauira, haere ki te raarangi kei roto utaina:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
Mai i te tirohanga whatunga, ka rere te tono katoa i runga i te kaihautu kotahi (rorohiko rohe, miihini mariko Cloud Shell ranei). Na reira ka taea e koe te whakamahi localhostki te tuku tono ki tūmau.
10) Kia mutu utaina и tūmau, tomo Mana-c i ia matapihi kati.
11) I roto i te matapihi kāpeka utaina whakawetohia te taiao mariko:
deactivate
Te takai tono ki roto i nga ipu
Hei whakahaere i te tono ki runga i te GKE, me kikii koe i te tauira tono − tūmau и utaina - i roto i nga ipu. Ko te ipu he huarahi ki te koopaki i tetahi tono hei wehe mai i tona taiao.
Ki te kohikohi tono ki roto i te ipu, me hiahia koe Dockerfile. Dockerfile he konae tuhinga e tautuhi ana i nga whakahau mo te hanga i te waehere puna o te tono me ona whakawhirinakitanga ki roto Whakaahua Docker. Ka oti te hanga, ka tukuna e koe te ahua ki tetahi rehita ipu penei i a Docker Hub ranei Rehita Ipu.
Kei te tauira Dockerfile ki tūmau и utaina me nga whakahau katoa hei kohi whakaahua. Kei raro - Dockerfile ki tūmau:
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" ]
rōpū MAI i te python:3-slim hei turanga ka kii a Docker ki te whakamahi i nga mea hou Whakaahua Python 3 hei turanga.
rōpū KAUPAPA. . ka kape i nga konae puna ki te raarangi mahi o naianei (i ta matou keehi anake server.py) ki te pūnaha kōnae o te ipu.
TOHUTOHU ka tautuhi i te whakahau e whakamahia ana hei timata i te ipu. I a maatau, he rite tonu tenei whakahau ki te whakahau i whakahaerea e koe server.py mai i te waehere puna.
rōpū WHAKAMAHI e tohu ana tera tūmau ka tatari mo nga raraunga ma te tauranga 8080. Ehara tenei kapa whakarato tauranga. Koinei etahi momo tuhinga e hiahiatia ana hei whakatuwhera i te tauranga 8080 ina timata te ipu.
Kei te whakareri ki te whakauru i to tono
1) Tautuhia nga taurangi taiao e whai ake nei. Whakakapi PROJECT_ID ki to ID kaupapa GCP.
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
Te whakamahi uara PROJECT_ID и GCR_REPO ka tohu koe i te ahua Docker ina hanga ana e koe ka pana ki te Rehita Ipu Tangata.
2) Tautuhia te kaupapa GCP taunoa mo te taputapu raina whakahau gcloud.
gcloud config set project $PROJECT_ID
3) Tautuhia te rohe taunoa mo te taputapu raina whakahau gcloud.
gcloud config set compute/zone us-central1-b
4) Me mohio kei te whakahohea te ratonga Rehita Ipu i roto i te kaupapa GCP.
Arotakehia te rarangi o nga whakaahua kei roto i te putunga me te manatoko kua tukuna nga whakaahua:
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio
Ka whakaatu te whakahau i nga ingoa o nga whakaahua katahi ano ka tukuna:
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
Waihangahia he tautau GKE.
Ka taea te whakahaere i enei ipu i runga i te miihini mariko Cloud Shell, i runga ranei i te rorohiko me te whakahau ka oma te mahi. Engari i roto i te taiao whakaputa, me whai huarahi koe ki te whakarite i nga ipu. Hei tauira, ka hiahia koe ki tetahi punaha kia mohio kei te rere tonu nga ipu, ka hiahia koe ki tetahi huarahi ki te whakanui ake me te huri i etahi atu waahanga ipu mena ka piki te waka.
Ki te whakahaere i nga tono ipu ka taea e koe te whakamahi G.K.E.. Ko te GKE he papahanga whakahiato ipu e whakahiato ana i nga miihini mariko ki roto i te tautau. Ko ia miihini mariko ka kiia he node. Ko nga kohinga GKE kei runga i te punaha whakahaere roopu Kubernetes puna tuwhera. Ka whakaratohia e Kubernetes nga tikanga mo te taunekeneke me te roopu.
rōpū gcloud ka waihanga i te kahui istioready i roto i te kaupapa GCP me te rohe taunoa i tohua e koe. Hei whakahaere i a Istio, ka tūtohu kia 4 nga pona me tetahi miihini mariko n1-paerewa-2.
Ka hangaia e te roopu te roopu i roto i etahi meneti. Ina reri te tautau, ka puta te whakahau penei Сообщение.
2) Whakaratohia nga tohu i roto i te taputapu raina whakahau kubectlhei whakamahi hei whakahaere i te tautau:
3) Inaianei ka taea e koe te korero ki a Kubernetes ma kubectl. Hei tauira, ka kitea e te whakahau e whai ake nei te mana o nga pona:
kubectl get nodes
Ka whakaputahia e te tono he rarangi o nga pona:
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 Nga Tikanga Matua
E whakaatu ana te hoahoa i tetahi tono i runga i te GKE:
I mua i to tohatoha ipu ki GKE, akohia nga kaupapa matua o Kubernetes. He hononga kei te mutunga ki te hiahia koe ki te ako atu.
Nodes me nga tautau. I te GKE, he miihini mariko te node. I etahi atu papaaho Kubernetes, he rorohiko, he miihini mariko ranei te node. Ko te tautau he kohinga node ka taea te whakaaro he waeine kotahi ka tukuna e koe he tono kua mau.
Pods. I Kubernetes, ka rere nga ipu ki roto i nga putunga. Ko te Pod i Kubernetes he waeine kore e wehewehe. Kei te Pod tetahi ipu, neke atu ranei. Ka horahia e koe nga ipu tūmau me te utaina i roto i nga putea motuhake. Ina he maha nga ipu kei roto i tetahi pota (hei tauira, he tūmau tono me te tūmau takawaenga), ka whakahaerehia nga ipu hei hinonga kotahi, ka tohatoha i nga rauemi pod.
Te tukunga. I roto i nga Kubernetes, ko te horahanga he ahanoa he kohinga o nga poro riterite. Ka whakarewahia e te Whakamahinga nga tauira maha o nga putunga ka tohatoha puta noa i nga kohinga kohinga. Ka whakakapi aunoa i te tukunga i nga putunga kua rahua, kua kore ranei e aro.
Ratonga Kubernetes. A, no te rere waehere tono i roto i te GKE, te hononga i waenganui i utaina и tūmau. I te wa i timata koe i nga ratonga i runga i te miihini mariko Cloud Shell, papamahi ranei, i tukuna e koe nga tono ki tūmau I localhost: 8080. Ina tukuna ki te GKE, ka mahia nga pene ki runga i nga waahanga e waatea ana. Ma te taunoa, karekau he mana ki runga ko wai te pona e rere ana te pona, na ko koe nga poti kore wāhitau IP pūmau.
Ki te whiwhi wāhitau IP mo tūmau, me tautuhi koe i te tangohanga whatunga ki runga ake o nga poti. Koia tena Ratonga Kubernetes. Ka whakaratohia e te ratonga Kubernetes he waahi mutunga mo te huinga o nga pene. He torutoru momo ratonga. tūmau whakamahinga LoadBalancer, e whakarato ana i te wāhitau IP waho hei whakapā atu tūmau mai i waho o te tautau.
Kei a Kubernetes ano he punaha DNS kua whakauruhia ki roto hei tohu ingoa DNS (hei tauira, helloserver.default.cluster.local) ratonga. Ko te mihi ki tenei, ko nga pene i roto i te tautau ka korero ki etahi atu pokano i roto i te kohinga i te waahi noho pumau. Kaore e taea te whakamahi i te ingoa DNS ki waho o te roopu, penei i te Cloud Shell, i runga rorohiko ranei.
Ka whakaatu a Kubernetes
I te wa i whakahaerea e koe te tono mai i te puna, i whakamahia e koe te whakahau nui python3
server.py
Imperative te tikanga o te kupumahi: "mahia tenei."
Ka whakamahia e Kubernetes tauira whakapuaki. Ko te tikanga kaore matou e korero tika ki a Kubernetes me aha, engari ko te whakaahua i te ahua e hiahiatia ana. Hei tauira, ka timata, ka whakamutua e Kubernetes nga putunga ina hiahiatia kia rite te ahua o te punaha ki te ahua e hiahiatia ana.
Ka tohu koe i te ahua e hiahiatia ana i roto i nga whakaaturanga, i nga konae ranei TENEI. Kei roto i te konae YAML nga whakaritenga mo tetahi, neke atu ranei nga taonga Kubernetes.
Kei roto i te tauira he konae YAML mo tūmau и utaina. Ko ia kōnae YAML e tohu ana i te ahua e hiahiatia ana o te ahanoa tuku me te ratonga Kubernetes.
Mara tuatahi tauira he whakaahuatanga mo te ahua e hiahiatia ana.
spec.replicas e tohu ana i te maha o nga poro e hiahiatia ana.
Wāhanga spec.template ka tautuhi i te tauira pd. He waahi kei roto i te waahanga o te pene image, e tohu ana i te ingoa o te ahua ka tangohia mai i te Rehita Ipu.
LoadBalancer: Ka tukuna e nga kaihoko nga tono ki te wahitau IP o te taurite kawenga, kei a ia he wahitau IP pumau, ka uru mai i waho o te roopu.
Tauranga ūnga: kia mahara koe, ko te kapa WHAKARANGA 8080 в Dockerfile kihai i whakarato tauranga. Ka whakaratohia e koe te tauranga 8080kia taea e koe te whakapā atu ki te ipu tūmau kei waho o te kahui. I roto i to tatou take hellosvc.default.cluster.local:80 (ingoa poto: hellosvc) e hāngai ana ki te tauranga 8080 Wāhitau IP Pod helloserver.
tauranga: Koinei te tau tauranga ka tukuna e etahi atu ratonga o te roopu nga tono.
loadgen.yaml
He aha te tuku ki loadgen.yaml ahua rite server.yaml. Ko te rereke ko te ahanoa tohatoha kei roto he waahanga env. Ka tautuhi i nga taurangi taiao e hiahiatia ana utaina i whakauruhia e koe i te wa e whakahaere ana koe i te tono mai i te puna.
Kotahi utaina e kore e whakaae ki nga tono taumai, mo te mara momo tohua RōpūIP. Ka whakaratohia e tenei momo he wahitau IP tohe ka taea e nga ratonga i roto i te roopu te whakamahi, engari kaore tenei wahitau IP e kitea ki nga kiritaki o waho.
Whakakapi PROJECT_ID ki to ID kaupapa GCP.
9) Tiakina ka kati loadgen.yaml, kati te ētita kuputuhi.
10) Tukuna te kōnae YAML ki Kubernetes:
kubectl apply -f loadgen.yaml
I te otinga angitu, ka whakaputahia e te whakahau te waehere e whai ake nei:
deployment.apps/loadgenerator created
service/loadgensvc created
11) Tirohia te mana o nga pene:
kubectl get pods
Ka whakaatu te tono i te mana:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) Tangohia nga raarangi tono mai i te pd utaina. Whakakapi POD_ID ki te tautohu mai i te whakautu o mua.
kubectl logs loadgenerator-POD_ID
13) Tikina nga wahitau IP o waho hellosvc:
kubectl get service
He penei te ahua o te urupare whakahau:
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) Tukuna he tono ki hellosvc: whakakapi HE_IP ki te wāhitau IP waho hellosvc.
curl http://EXTERNAL_IP
Kia mau ki a Istio
Kua tukuna kētia he tono ki a GKE. utaina ka taea te whakamahi Kubernetes DNS (kia oravc:80) ki te tuku tono ki tūmaua ka taea e koe te tuku tono ki tūmau mā te wāhitau IP waho. Ahakoa he maha nga ahuatanga a Kubernetes, kei te ngaro etahi korero mo nga ratonga:
He pehea te taunekeneke o nga ratonga? He aha nga hononga i waenga i nga ratonga? He pehea te rere o nga waka i waenga i nga ratonga? Kei te mohio koe ki tena utaina tuku tono ki tūmau, engari whakaarohia kaore koe e mohio ki tetahi mea mo te tono. Hei whakautu i enei patai, me titiro ki te rarangi o nga poti rere i GKE.
Inenga. Kia pehea te roa tūmau ka whakautu ki tetahi tono taumai? E hia nga tono mo ia hēkona ka whakawhiwhia e te tūmau? Ka tuku karere hapa?
Mōhiohio Haumarutanga. Te waka i waenga utaina и tūmau haere noa HTTP e te ranei mTLS?
Ka whakautua e Istio enei patai katoa. Ki te mahi i tenei, ka tuu e Istio he takawaenga motika karere i roto i ia pene. Ka haukotia e te takawaenga o te Envoy nga waka taumai me te puta atu ki nga ipu tono. Ko te tikanga tera tūmau и utaina riro mai ma te Kaihoko takawaenga taha, me nga waka katoa mai utaina к tūmau haere i roto i te takawaenga Envoy.
Ko nga hononga i waenga i nga kaiwawao a Envoy ka hanga he mata ratonga. Ko te hoahoanga mata ratonga e whakarato ana i te paparanga mana ki runga ake o Kubernetes.
I te mea e rere ana nga takawaenga o Envoy ki roto i a raatau ake ipu, ka taea te whakauru a Istio ki runga ake o te kahui GKE me te kore e huri ki te waehere tono. Engari kua mahia e koe etahi mahi kia rite ai to tono kia whakahaerehia e Istio:
Nga ratonga mo nga ipu katoa. Ki nga whakatakotoranga tūmau и utaina herea ki te ratonga Kubernetes. Ahakoa utaina, e kore e whiwhi tono taumai, he ratonga.
Me whai ingoa nga tauranga i roto i nga ratonga. Ahakoa ka taea te waiho nga tauranga ratonga kia kore e whakaingoatia ki te GKE, me whakaingoatia e Istio ingoa tauranga i runga ano i tana kawa. I roto i te kōnae YAML te tauranga mo tūmau ka karangahia httpna te mea ka whakamahia e te tūmau te kawa HTTP. Mehemea ratonga whakamahia gRPC, ka whakaingoatia te tauranga grpc.
Ka tohuhia nga tukunga. Na reira, ka taea e koe te whakamahi i nga ahuatanga whakahaere waka a Istio, penei i te wehewehe i nga waka i waenga i nga putanga o te ratonga kotahi.
Tāuta Istio
E rua nga huarahi ki te whakauru i a Istio. Ka taea whakahohea a Istio ki te toronga GKE ranei tāuta te putanga puna tuwhera o Istio i runga i te tautau. Ma te Istio i runga i te GKE, ka taea e koe te whakahaere ngawari i nga whakaurunga me nga whakamohoatanga o Istio puta noa i te huringa ora o te roopu GKE. Mena kei te hiahia koe ki te putanga hou o Istio, mana ake ranei mo to whirihoranga paewhiri mana Istio, whakauruhia te putanga puna tuwhera hei utu mo te toronga Istio i runga i te GKE. Hei whakatau i te huarahi, panuihia te tuhinga Kei te hiahia ahau ki a Istio i runga i te GKE?.
Tīpakohia he kōwhiringa, arotakehia te aratohu e tika ana, ka whai i nga tohutohu ki te whakauru i a Istio ki to huinga. Mena kei te pirangi koe ki te whakamahi i a Istio me to tono hou kua tukuna, whakaahei te whakatinana i nga waka taha mo te waahi ingoa Taunoa.
Te horoi
Hei karo i te utu ki to putea Google Cloud Platform mo nga rauemi i whakamahia e koe i tenei akoranga, mukua te kahui ipu ina oti i a koe te whakauru i a Istio me te takaro me te tauira tono. Ma tenei ka tango i nga rauemi huinga katoa, penei i nga tauira rorohiko, nga kopae, me nga rauemi whatunga.