Prepare yon aplikasyon pou Istio

Prepare yon aplikasyon pou Istio

Istio se yon zouti pratik pou konekte, sekirize ak kontwole aplikasyon distribiye yo. Istio sèvi ak yon varyete teknoloji pou kouri ak jere lojisyèl nan echèl, tankou resipyan pou pake kòd aplikasyon ak depandans pou deplwaman, ak Kubernetes pou jere resipyan sa yo. Se poutèt sa, pou travay ak Istio ou dwe konnen ki jan yon aplikasyon ki gen plizyè sèvis ki baze sou teknoloji sa yo fonksyone san yo pa Istio. Si zouti ak konsèp sa yo deja abitye pou ou, santi yo lib pou sote leson patikilye sa a epi ale tou dwat nan seksyon an Enstale Istio sou Google Kubernetes Engine (GKE) oswa enstale yon ekstansyon Istio sou GKE.

Sa a se yon gid etap pa etap kote nou pral mache atravè tout pwosesis la soti nan kòd sous ak veso GKE ba ou yon konpreyansyon debaz sou teknoloji sa yo atravè yon egzanp. Ou pral wè tou ki jan Istio pwofite pouvwa teknoloji sa yo. Sa a sipoze ou pa konnen anyen sou resipyan, Kubernetes, may sèvis, oswa Istio.

travay

Nan leson patikilye sa a, ou pral ranpli travay sa yo:

  1. Aprann yon senp aplikasyon bonjou mond ak plizyè sèvis.
  2. Kouri aplikasyon an soti nan kòd sous.
  3. Anbalaj aplikasyon an nan resipyan.
  4. Kreye yon gwoup Kubernetes.
  5. Deplwaye resipyan nan yon gwoup.

Anvan ou kòmanse

Swiv enstriksyon yo pou pèmèt API Kubernetes Engine:

  1. Ale nan Paj Kubernetes Engine nan konsole Google Cloud Platform la.
  2. Kreye oswa chwazi yon pwojè.
  3. Rete tann jiskaske API a ak sèvis ki gen rapò yo aktive. Sa a ka pran kèk minit.
  4. Asire w ke yo mete bòdwo pou pwojè Google Cloud Platform ou a. Aprann kijan pou pèmèt bòdwo.

Nan leson patikilye sa a, ou ka itilize Cloud Shell, ki prepare machin vityèl la g1-small nan Google Compute Engine ak Linux ki baze sou Debian, oswa yon òdinatè Linux oswa macOS.

Opsyon A: Sèvi ak Cloud Shell

Avantaj lè w sèvi ak Cloud Shell:

  • Anviwònman devlopman Python 2 ak Python 3 (ki gen ladan virtualenv) yo konplètman configuré.
  • Zouti Liy Kòmand gcloud, wokè, ale и kubectl, ke nou pral itilize yo deja enstale.
  • Ou gen plizyè pou chwazi nan editè tèks yo:
    1. Editè kòd, ki ouvè ak ikòn modifye ki anlè fenèt Cloud Shell la.
    2. Emacs, Vim oswa Nano, ki louvri nan liy kòmand nan Cloud Shell.

Pou itilize Jwèt Cloud Shell:

  1. Ale nan konsole GCP la.
  2. Klike sou bouton an Aktive Cloud Shell (Aktive Cloud Shell) nan tèt fenèt konsole GCP la.

Prepare yon aplikasyon pou Istio

Nan pati ki pi ba a GCP konsole Yon sesyon Cloud Shell ak yon liy lòd ap louvri nan yon nouvo fenèt.

Prepare yon aplikasyon pou Istio

Opsyon B: Sèvi ak zouti liy kòmand lokalman

Si w ap travay sou yon òdinatè ki kouri Linux oswa macOS, w ap bezwen konfigirasyon ak enstale eleman sa yo:

  1. Customize Anviwònman devlopman Python 3 ak Python 2.

  2. Enstale Cloud SDK ak zouti liy kòmand gcloud.

  3. Mete kubectl - zouti liy kòmand pou travay avèk Kubernetes.

    gcloud components install kubectl

  4. Mete Docker Community Edition (CE). Ou pral sèvi ak zouti liy lòd la wokèpou kreye imaj veso pou aplikasyon echantiyon an.

  5. Enstale zouti a Kontwòl vèsyon Gitpou jwenn echantiyon aplikasyon an nan GitHub.

Telechaje echantiyon kòd

  1. Telechaje kòd sous la bonjou sèvè:

    git clone https://github.com/GoogleCloudPlatform/istio-samples

  2. Ale nan anyè kòd egzanp lan:

    cd istio-samples/sample-apps/helloserver

Eksplore yon aplikasyon ak plizyè sèvis

Echantiyon aplikasyon an ekri nan Python epi li konsiste de de eleman ki kominike lè l sèvi avèk REST:

  • sèvè: senp sèvè ak yon pwen final JWENN, /, ki enprime "bonjou mond" nan konsole a.
  • loadgen: script ki voye trafik nan sèvè, ak yon kantite configurable nan demann pou chak segonn.

Prepare yon aplikasyon pou Istio

Kouri yon aplikasyon nan kòd sous

Pou eksplore echantiyon aplikasyon an, kouri li nan Cloud Shell oswa sou òdinatè w lan.
1) Nan katalòg la istio-samples/sample-apps/helloserver kouri sèvè:

python3 server/server.py

Nan demaraj sèvè sa ki annapre yo parèt:

INFO:root:Starting server...

2) Louvri yon lòt fenèt tèminal pou voye demann bay sèvè. Si w ap itilize Cloud Shell, klike sou ikòn ajoute pou ouvri yon lòt sesyon.
3) Voye yon demann bay sèvè:

curl http://localhost:8080

repons sèvè:

Hello World!

4) Soti nan anyè kote ou telechaje kòd egzanp lan, ale nan anyè ki genyen ladan l loadgen:

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen

5) Kreye varyab anviwònman sa yo:

export SERVER_ADDR=http://localhost:8080
export REQUESTS_PER_SECOND=5

6) Kouri virtualenv:

virtualenv --python python3 env

7) Aktive anviwònman vityèl la:

source env/bin/activate

8) Mete kondisyon pou loadgen:

pip3 install -r requirements.txt

9) Kouri loadgen:

python3 loadgen.py

Nan demaraj loadgen montre yon bagay tankou mesaj sa a:

Starting loadgen: 2019-05-20 10:44:12.448415
5 request(s) complete to http://localhost:8080

Nan yon lòt fenèt tèminal sèvè bay mesaj sa yo nan konsole a:

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: */*

Soti nan yon pèspektiv rezo, aplikasyon an antye kouri sou yon sèl lame (òdinatè lokal oswa Cloud Shell machin vityèl). Se poutèt sa ou ka itilize lokalostpou voye demann bay sèvè.
10) Pou sispann loadgen и sèvè, antre Ctrl-c nan chak fenèt tèminal.
11) Nan fennèt tèminal la loadgen dezaktive anviwònman vityèl la:

deactivate

Anbalaj yon aplikasyon nan resipyan

Pou kouri aplikasyon an sou GKE, ou bezwen pake echantiyon aplikasyon an - sèvè и loadgen - nan resipyan. Yon veso se yon fason pou pake yon aplikasyon pou izole li nan anviwònman li.

Pou pake yon aplikasyon nan yon veso, ou bezwen dockerfile. dockerfile se yon dosye tèks ki defini kòmandman pou bati kòd sous aplikasyon an ak depandans li yo nan Docker imaj. Yon fwa bati, ou telechaje imaj la nan yon rejis veso tankou Docker Hub oswa Rejis veso.

Egzanp lan deja genyen dockerfile pou sèvè и loadgen ak tout kòmandman ki nesesè yo kolekte imaj. Anba a - dockerfile pou sèvè:

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" ]

  • Ekip SOTI nan piton: 3-slim kòm baz di Docker pou l sèvi ak dènye a Python 3 imaj kòm yon baz.
  • Ekip KOPI. . kopye fichye sous yo nan anyè k ap travay aktyèl la (nan ka nou an sèlman server.py) nan sistèm dosye veso a.
  • ENTRYPOINT defini kòmandman ki itilize pou kòmanse veso a. Nan ka nou an, kòmandman sa a se prèske menm jan ak sa ou te konn kouri a server.py soti nan kòd sous.
  • Ekip Ekspoze endike sa sèvè tann pou done nan pò a 8080. Ekip sa a pa bay pò. Sa a se kèk kalite dokiman ki nesesè yo louvri pò a 8080 lè w kòmanse veso a.

Preparasyon pou mete aplikasyon w lan nan kontenè

1) Mete varyab anviwònman sa yo. Ranplase PROJECT_ID nan ID pwojè GCP ou a.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Sèvi ak valè PROJECT_ID и GCR_REPO ou tag imaj la Docker lè ou bati li epi pouse li nan yon Rejis Container prive.

2) Mete pwojè GCP default pou zouti liy kòmand la gcloud.

gcloud config set project $PROJECT_ID

3) Mete zòn default pou zouti liy lòd la gcloud.

gcloud config set compute/zone us-central1-b

4) Asire w ke sèvis Rejis Container la aktive nan pwojè GCP la.

gcloud services enable containerregistry.googleapis.com

Sèvè Containerization

  1. Ale nan anyè kote egzanp lan ye sèvè:

    cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

  2. Rasanble imaj la lè l sèvi avèk dockerfile ak varyab anviwònman ou te defini pi bonè yo:

    docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .

Paramèt -t reprezante tag Docker la. Sa a se non imaj ou itilize lè w ap deplwaye veso a.

  1. Voye imaj la nan rejis veso a:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Containerization nan loadgen

1) Ale nan anyè kote egzanp lan ye loadgen:

cd ../loadgen

2) Kolekte imaj la:

docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .

3) Telechaje imaj la nan rejis veso a:

docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1

Gade yon lis imaj

Revize lis imaj yo nan depo a epi verifye ke imaj yo te telechaje:

gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio

Kòmandman an montre non imaj ki fèk telechaje yo:

NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen

Kreye yon gwoup GKE.

Kontenè sa yo ta ka kouri sou yon machin vityèl Cloud Shell oswa sou yon òdinatè ak lòd la Dokè kouri. Men, nan yon anviwònman pwodiksyon, ou bezwen yon fason santralman òkestre kontenè. Pa egzanp, ou bezwen yon sistèm ki asire ke kontenè yo toujou ap fonksyone, epi ou bezwen yon fason pou monte ak vire plis ka veso si trafik ogmante.

Pou kouri aplikasyon conteneur ou ka itilize G.K.E.. GKE se yon platfòm orchestration veso ki rasanble machin vityèl nan yon gwoup. Chak machin vityèl yo rele yon ne. Gwoup GKE yo baze sou sistèm jesyon gwoup sous louvri Kubernetes. Kubernetes bay mekanis pou kominike avèk gwoup la.

Kreye yon gwoup GKE:

1) Kreye yon gwoup:

gcloud container clusters create istioready 
  --cluster-version latest 
  --machine-type=n1-standard-2 
  --num-nodes 4

Ekip gcloud kreye yon gwoup ki pare nan pwojè GCP ak zòn default ou espesifye. Pou kouri Istio, nou rekòmande pou gen omwen 4 nœuds ak yon machin vityèl n1-estanda-2.

Ekip la kreye gwoup la nan kèk minit. Lè gwoup la pare, kòmandman an pwodui yon bagay tankou sa a сообщение.

2) Bay kalifikasyon yo nan zouti liy lòd la kubectlpou itilize li pou jere gwoup la:

gcloud container clusters get-credentials istioready

3) Koulye a, ou ka kominike ak Kubernetes atravè kubectl. Pou egzanp, lòd sa a ka jwenn estati a nan nœuds:

kubectl get nodes

Kòmandman an pwodui yon lis nœuds:

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

Konsèp kle Kubernetes

Dyagram nan montre yon aplikasyon sou GKE:

Prepare yon aplikasyon pou Istio

Anvan ou deplwaye resipyan nan GKE, aprann konsèp kle Kubernetes yo. Gen lyen nan fen a si ou vle aprann plis.

  • Nœuds ak grap. Nan GKE, yon ne se yon machin vityèl. Sou lòt platfòm Kubernetes, yon ne kapab yon òdinatè oswa yon machin vityèl. Yon gwoup se yon koleksyon nœuds ki ka konsidere kòm yon sèl inite kote ou deplwaye yon aplikasyon nan kontenè.
  • Gous. Nan Kubernetes, resipyan yo kouri nan gous. Yon Pod nan Kubernetes se yon inite endivizib. Yon Pod kenbe youn oswa plizyè resipyan. Ou deplwaye kontenè sèvè ak loadgen nan gous separe. Lè gen plizyè resipyan nan yon gous (pa egzanp, yon sèvè aplikasyon ak sèvè prokurasyon), resipyan yo jere kòm yon sèl antite ak pataje resous gous.
  • Deplwaman. Nan Kubernetes, yon deplwaman se yon objè ki se yon koleksyon gous ki idantik. Deplwaman lanse plizyè kopi gous distribye atravè nœuds gwoup yo. Deplwaman otomatikman ranplase gous ki echwe oswa ki pa reponn.
  • Sèvis Kubernetes. Lè w ap kouri kòd aplikasyon nan GKE, koneksyon ki genyen ant loadgen и sèvè. Lè ou te kòmanse sèvis sou yon machin vityèl Cloud Shell oswa Desktop, ou te voye demann bay sèvè nan localhost: 8080. Yon fwa yo deplwaye nan GKE, gous yo egzekite sou nœuds ki disponib. Pa default, ou pa gen okenn kontwòl sou ki ne gous la ap kouri, kidonk ou menm gous pa gen adrès IP pèmanan.
    Pou jwenn yon adrès IP pou sèvè, ou bezwen defini yon abstraksyon rezo sou tèt gous yo. Se sa li ye Sèvis Kubernetes. Sèvis Kubernetes la bay yon pwen final ki pèsistan pou yon seri gous. Gen kèk kalite sèvis yo. sèvè itilizasyon LoadBalancer, ki bay yon adrès IP ekstèn pou kontakte sèvè soti deyò grap la.
    Kubernetes tou gen yon sistèm dns entegre ki bay non dns (pa egzanp, helloserver.default.cluster.local) sèvis yo. Mèsi a sa a, gous nan gwoup la kominike ak lòt gous nan gwoup la nan yon adrès pèmanan. Non DNS pa ka itilize deyò gwoup la, tankou nan Cloud Shell oswa sou yon òdinatè.

Kubernetes manifeste

Lè ou kouri aplikasyon an soti nan sous, ou te itilize kòmandman an enperatif python3

server.py

Enperatif implique yon vèb: "fè sa."

Kubernetes itilize modèl deklarasyon. Sa vle di ke nou pa di Kubernetes egzakteman sa pou yo fè, men pito dekri eta a vle. Pou egzanp, Kubernetes kòmanse ak sispann gous jan sa nesesè pou kenbe eta aktyèl la nan sistèm nan ki konsistan avèk eta a vle.

Ou endike eta vle a nan manifest oswa dosye YAML. Yon dosye YAML gen espesifikasyon pou youn oswa plis objè Kubernetes.

Egzanp la gen yon dosye YAML pou sèvè и loadgen. Chak dosye YAML espesifye eta a vle nan objè a deplwaman ak sèvis 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

  • kalite endike kalite objè a.
  • metadata.name espesifye non deplwaman an.
  • Premye jaden espèk gen yon deskripsyon eta vle a.
  • spec.replicas endike kantite gous yo vle.
  • Seksyon spec.modèl defini yon modèl gous. Gen yon jaden nan spesifikasyon gous la imaj, ki espesifye non an nan imaj la yo dwe ekstrè nan Rejis la Container.

Sèvis la defini jan sa a:

apiVersion: v1
kind: Service
metadata:
  name: hellosvc
spec:
  type: LoadBalancer
  selector:
    app: helloserver
  ports:
  - name: http
    port: 80
    targetPort: 8080

  • LoadBalancer: Kliyan yo voye demann nan adrès IP balans chaj la, ki gen yon adrès IP ki pèsistan epi ki aksesib soti deyò gwoup la.
  • targetPort: jan ou sonje, ekip la Ekspoze 8080 в dockerfile pa t bay pò. Ou bay pò a 8080pou ou ka kontakte veso a sèvè andeyò gwoup la. Nan ka nou an hellosvc.default.cluster.local:80 (non kout: hellosvc) koresponn ak pò a 8080 Pod adrès IP bonjou sèvè.
  • : Sa a se nimewo pò kote lòt sèvis nan gwoup la pral voye demann.

loadgen.yaml

Deplwaman objè a loadgen.yaml sanble server.yaml. Diferans lan se ke objè a deplwaman gen yon seksyon apeprè. Li defini varyab anviwònman ki nesesè yo loadgen epi ki ou enstale lè w ap kouri aplikasyon an soti nan sous.

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: 512Mi

Times loadgen pa aksepte demann fèk ap rantre, pou jaden an kalite endike ClusterIP. Kalite sa a bay yon adrès IP ki pèsistan ke sèvis nan gwoup la ka itilize, men adrès IP sa a pa ekspoze a kliyan ekstèn.

apiVersion: v1
kind: Service
metadata:
  name: loadgensvc
spec:
  type: ClusterIP
  selector:
    app: loadgenerator
  ports:
  - name: http
    port: 80
    targetPort: 8080

Deplwaye Containers nan GKE

1) Ale nan anyè kote egzanp lan ye sèvè:

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

2) Louvri server.yaml nan yon editè tèks.
3) Ranplase non an nan jaden an imaj nan non imaj Docker ou a.

image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1

Ranplase PROJECT_ID nan ID pwojè GCP ou a.
4) Sove epi fèmen server.yaml.
5) Deplwaye dosye YAML nan Kubernetes:

kubectl apply -f server.yaml

Lè yo fini avèk siksè, lòd la pwodui kòd sa a:

deployment.apps/helloserver created
service/hellosvc created

6) Ale nan anyè a kote loadgen:

cd ../loadgen

7) Louvri loadgen.yaml nan yon editè tèks.
8) Ranplase non an nan jaden an imaj nan non imaj Docker ou a.

image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1

Ranplase PROJECT_ID nan ID pwojè GCP ou a.
9) Sove epi fèmen loadgen.yaml, fèmen editè tèks la.
10) Deplwaye dosye YAML nan Kubernetes:

kubectl apply -f loadgen.yaml

Lè yo fini avèk siksè, lòd la pwodui kòd sa a:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Tcheke estati gous yo:

kubectl get pods

Kòmandman an montre estati a:

NAME                             READY   STATUS    RESTARTS   AGE
helloserver-69b9576d96-mwtcj     1/1     Running   0          58s
loadgenerator-774dbc46fb-gpbrz   1/1     Running   0          57s

12) Ekstrè mòso bwa aplikasyon nan gous la loadgen. Ranplase POD_ID nan idantifyan ki soti nan repons anvan an.

kubectl logs loadgenerator-POD_ID

13) Jwenn adrès IP ekstèn hellosvc:

kubectl get service

Repons lòd la sanble yon bagay tankou sa a:

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) Voye yon demann bay hellosvc: ranplase EXTERNAL_IP nan adrès IP ekstèn hellosvc.

curl http://EXTERNAL_IP

Ann pran sou Istio

Ou deja gen yon aplikasyon deplwaye nan GKE. loadgen ka itilize Kubernetes DNS (hellosvc:80) pou voye demann bay sèvèepi ou ka voye demann bay sèvè pa adrès IP ekstèn. Malgre ke Kubernetes gen anpil karakteristik, gen kèk enfòmasyon ki manke sou sèvis yo:

  • Ki jan sèvis yo kominike? Ki relasyon ki genyen ant sèvis yo? Ki jan trafik koule ant sèvis yo? Èske w konnen sa loadgen voye demann bay sèvè, men imajine ke ou pa konnen anyen sou aplikasyon an. Pou reponn kesyon sa yo, ann gade lis gous k ap kouri nan GKE.
  • Metrik. Konbyen tan sèvè reponn a yon demann kap vini? Konbyen demann pou chak segonn yo resevwa pa sèvè a? Èske li bay mesaj erè?
  • Enfòmasyon sou sekirite. Trafik ant loadgen и sèvè jis pase nan HTTP oswa pa mTLS?

Istio reponn tout kesyon sa yo. Pou fè sa, Istio mete yon proxy sidecar anvwaye nan chak gous. Prokurasyon Envoy la entèsepte tout trafik k ap rantre ak sòtan nan resipyan aplikasyon yo. Sa vle di sa sèvè и loadgen resevwa atravè sidecar proxy Envoy, ak tout trafik soti nan loadgen к sèvè ale nan prokurasyon Envoy la.

Koneksyon ant proxy Envoy fòme yon may sèvis. Achitekti may sèvis la bay yon kouch kontwòl sou tèt Kubernetes.

Prepare yon aplikasyon pou Istio

Depi proxy Envoy yo kouri nan kontenè pwòp yo, Istio ka enstale sou tèt yon gwoup GKE ak prèske pa gen okenn chanjman nan kòd aplikasyon an. Men, ou te fè kèk travay pou prepare aplikasyon w lan pou Istio jere:

  • Sèvis pou tout kontenè. Pou deplwaman sèvè и loadgen mare ak sèvis Kubernetes la. Menm loadgen, ki pa resevwa demann fèk ap rantre, gen yon sèvis.
  • Pò nan sèvis yo dwe gen non. Malgre ke pò sèvis yo ka rete san non nan GKE, Istio mande pou ou presize non pò an akò ak pwotokòl li a. Nan dosye YAML pò a pou sèvè yo rele httppaske sèvè sèvi ak pwotokòl la HTTP... Si sèvis itilize gRPC, ou ta non pò a grpc.
  • Deplwaman yo make. Se poutèt sa, ou ka itilize karakteristik jesyon trafik Istio a, tankou divize trafik ant vèsyon nan menm sèvis la.

Enstalasyon

Gen de fason pou enstale Istio. Kapab pèmèt Istio sou ekstansyon GKE oswa enstale vèsyon an sous louvri nan Istio sou grap la. Avèk Istio sou GKE, ou ka fasilman jere enstalasyon Istio ak amelyorasyon nan tout sik lavi gwoup GKE. Si ou vle dènye vèsyon Istio a oswa plis kontwòl sou konfigirasyon panèl kontwòl Istio ou a, enstale vèsyon sous louvri olye pou yo Istio sou ekstansyon GKE. Pou deside sou apwòch la, li atik la Èske mwen bezwen Istio sou GKE?.

Chwazi yon opsyon, revize gid apwopriye a, epi swiv enstriksyon yo pou enstale Istio sou gwoup ou a. Si ou vle sèvi ak Istio ak aplikasyon ou fèk deplwaye, pèmèt aplikasyon sidecar pou espas non default.

Netwayaj

Pou evite ke yo te chaje nan kont Google Cloud Platform ou pou resous ou te itilize nan leson patikilye sa a, efase gwoup veso a yon fwa ou te enstale Istio epi jwe ak aplikasyon echantiyon an. Sa a pral retire tout resous gwoup, tankou enstans kalkile, disk, ak resous rezo.

Ki sa ki nan pwochen?

Sous: www.habr.com

Add nouvo kòmantè