Ag ullachadh iarrtas airson Istio

Ag ullachadh iarrtas airson Istio

Tha Istio na inneal goireasach airson a bhith a’ ceangal, a’ daingneachadh agus a’ cumail sùil air tagraidhean sgaoilte. Bidh Istio a’ cleachdadh grunn theicneòlasan gus bathar-bog a ruith agus a riaghladh aig sgèile, a’ toirt a-steach soithichean gus còd tagraidh a phacadh agus eisimeileachd airson an cleachdadh, agus Kubernetes gus na soithichean sin a riaghladh. Mar sin, airson a bhith ag obair le Istio feumaidh fios a bhith agad mar a tha tagradh le grunn sheirbheisean stèidhichte air na teicneòlasan sin ag obair gun Istio. Ma tha na h-innealan agus na bun-bheachdan sin eòlach ort mu thràth, na bi leisg an oideachadh seo a sheachnadh agus a dhol dìreach chun roinn A’ stàladh Istio air Google Kubernetes Engine (GKE) no leudachadh a stàladh Istio air GKE.

Is e stiùireadh ceum air cheum a tha seo far an coisich sinn tron ​​​​phròiseas gu lèir bho chòd stòr gu soitheach GKE gus tuigse bhunaiteach a thoirt dhut air na teicneòlasan sin tro eisimpleir. Chì thu cuideachd mar a tha Istio a’ cleachdadh cumhachd nan teicneòlasan sin. Tha seo a’ gabhail ris nach eil fios agad càil mu shoithichean, Kubernetes, meshes seirbheis, no Istio.

gnìomhan

San oideachadh seo, nì thu na gnìomhan a leanas:

  1. Ag ionnsachadh tagradh cruinne Hello sìmplidh le grunn sheirbheisean.
  2. Ruith an aplacaid bhon chòd stòr.
  3. A 'pacadh an tagraidh ann an soithichean.
  4. A 'cruthachadh buidheann de Kubernetes.
  5. A 'cur soithichean a-steach gu buidheann.

Mus tòisich thu

Lean an stiùireadh gus an Kubernetes Engine API a chomasachadh:

  1. Rach gu Duilleag einnsean Kubernetes ann an consol Google Cloud Platform.
  2. Cruthaich no tagh pròiseact.
  3. Fuirich gus an tèid an API agus na seirbheisean co-cheangailte ris a chomasachadh. Is dòcha gun toir seo beagan mhionaidean.
  4. Dèan cinnteach gu bheil cunntas air a chuir air dòigh airson do phròiseact Google Cloud Platform. Ionnsaich mar a chuireas tu comas air cunntas.

San oideachadh seo, faodaidh tu Cloud Shell a chleachdadh, a bhios ag ullachadh an inneal brìgheil g1-beag ann an Google Compute Engine le Linux stèidhichte air Debian, no coimpiutair Linux no macOS.

Roghainn A: A’ cleachdadh Cloud Shell

Buannachdan bho bhith a’ cleachdadh Cloud Shell:

  • Àrainneachdan leasachaidh Python 2 agus Python 3 (a’ gabhail a-steach virtualenv) air an làn rèiteachadh.
  • Innealan loidhne-àithne clod, docker, git и cubectl, a chleachdas sinn air an stàladh mu thràth.
  • Tha grunnan agad airson taghadh luchd-deasachaidh teacsa:
    1. Deasaiche còd a, a tha a’ fosgladh leis an ìomhaigh deasachaidh aig mullach uinneag Cloud Shell.
    2. Emacs, Vim no Nano, a tha a’ fosgladh bhon loidhne-àithne ann an Cloud Shell.

Airson a chleachdadh Slige Cloud:

  1. Rach gu consol GCP.
  2. Cliog air a ’phutan Cuir an gnìomh Cloud Shell (Cuir an gnìomh Cloud Shell) aig mullach uinneag tòcan GCP.

Ag ullachadh iarrtas airson Istio

Anns a 'phàirt ìosal Console GCP Fosglaidh seisean Cloud Shell le loidhne-àithne ann an uinneag ùr.

Ag ullachadh iarrtas airson Istio

Roghainn B: A’ cleachdadh Innealan Loidhne-àithne gu h-ionadail

Ma bhios tu ag obair air coimpiutair a’ ruith Linux no macOS, feumaidh tu na co-phàirtean a leanas a rèiteachadh is a stàladh:

  1. Gnàthaich Àrainneachd leasachaidh Python 3 agus Python 2.

  2. Stàlaich Cloud SDK le inneal loidhne-àithne clod.

  3. Stàlaich cubectl - inneal loidhne-àithne airson obrachadh leis Kubernetes.

    gcloud components install kubectl

  4. Stàlaich Deasachadh Coimhearsnachd Docker (CE). Cleachdaidh tu an inneal loidhne-àithne dockergus ìomhaighean container a chruthachadh airson an tagradh sampall.

  5. Stàlaich an t-inneal Git smachd tionndadhgus an tagradh sampall fhaighinn bho GitHub.

Luchdaich a-nuas an còd airson samp

  1. Luchdaich a-nuas source code frithealaidh:

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

  2. Rach don eòlaire còd eisimpleir:

    cd istio-samples/sample-apps/helloserver

A’ sgrùdadh aplacaid le iomadh seirbheis

Tha an tagradh sampall air a sgrìobhadh ann am Python agus tha dà phàirt ann a bhios ag eadar-obrachadh le bhith a’ cleachdadh CÒRR:

  • frithealaiche: frithealaiche sìmplidh le aon phuing crìochnachaidh FAIGH, /, a tha a 'clò-bhualadh "hello world" chun a' chonsail.
  • luchdaichgen: sgriobt a chuireas trafaig gu frithealaiche, le àireamh rèiteachaidh de dh'iarrtasan gach diog.

Ag ullachadh iarrtas airson Istio

A’ ruith aplacaid bhon chòd thùsail

Gus sgrùdadh a dhèanamh air an tagradh sampall, ruith e ann an Cloud Shell no air do choimpiutair.
1) Anns a 'chatalog istio-samples/sample-apps/helloserver ruith frithealaiche:

python3 server/server.py

Aig toiseach tòiseachaidh frithealaiche tha na leanas air a thaisbeanadh:

INFO:root:Starting server...

2) Fosgail uinneag crìochnachaidh eile gus iarrtasan a chuir thuige frithealaiche. Ma tha thu a’ cleachdadh Cloud Shell, cliog air an ìomhaigh cuir ris gus seisean eile fhosgladh.
3) Cuir iarrtas gu frithealaiche:

curl http://localhost:8080

freagairtean an fhrithealaiche:

Hello World!

4) Bhon eòlaire far an do luchdaich thu sìos an còd sampall, rachaibh chun eòlaire anns a bheil luchdaichgen:

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

5) Cruthaich na caochladairean àrainneachd a leanas:

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

6) Ruith virtualenv:

virtualenv --python python3 env

7) Cuir an àrainneachd bhrìgheil an gnìomh:

source env/bin/activate

8) Suidhich riatanasan airson luchdaichgen:

pip3 install -r requirements.txt

9) Ruith luchdaichgen:

python3 loadgen.py

Aig toiseach tòiseachaidh luchdaichgen a’ taisbeanadh rudeigin mar an teachdaireachd a leanas:

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

Ann an uinneag terminal eile frithealaiche cuir a-mach na teachdaireachdan a leanas chun consol:

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

Bho shealladh lìonraidh, bidh an tagradh gu lèir a ’ruith air aon aoigh (coimpiutar ionadail no inneal brìgheil Cloud Shell). Mar sin faodaidh tu a chleachdadh localhostiarrtasan a chur gu frithealaiche.
10) Gus stad luchdaichgen и frithealaiche, cuir a-steach Ctrl-c anns a h-uile uinneag terminal.
11) Anns an uinneag crìche luchdaichgen cuir dheth an àrainneachd bhrìgheil:

deactivate

Iarrtas pacaidh ann an containers

Gus an tagradh a ruith air GKE, feumaidh tu an tagradh eisimpleir a phacadh - frithealaiche и luchdaichgen - a-steach soithichean. Tha soitheach na dhòigh air tagradh a phacadh gus a sgaradh bhon àrainneachd aige.

Gus tagradh a phacadh a-steach do shoitheach, feumaidh tu Faidhle docker. Faidhle docker na fhaidhle teacsa a tha a’ mìneachadh òrdughan airson còd stòr an tagraidh agus na eisimeileachd a th’ ann Dealbh docker. Nuair a bhios tu air a thogail, bidh thu a’ luchdachadh suas an ìomhaigh gu clàr container leithid Docker Hub no Clàradh Container.

Tha an eisimpleir mu thràth Faidhle docker airson frithealaiche и luchdaichgen leis na h-òrdughan riatanach uile airson ìomhaighean a chruinneachadh. Gu h-ìosal - Faidhle docker airson frithealaiche:

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

  • sgioba BHO python: 3-slim mar bhunait ag iarraidh air Docker am fear as ùire a chleachdadh Python 3 dealbh a mar bhunait.
  • sgioba LAOIDH. . lethbhreac a dhèanamh de na faidhlichean tùsail chun eòlaire obrach gnàthach (anns a’ chùis againn a-mhàin frithealaiche.py) gu siostam faidhle an t-soithich.
  • EADAR-MHINEACHADH a’ mìneachadh an àithne a thathas a’ cleachdadh gus an soitheach a thòiseachadh. Anns a 'chùis againn, tha an àithne seo cha mhòr an aon rud ris an fhear a chleachd thu a bhith a' ruith frithealaiche.py bhon chòd stòr.
  • sgioba TORAIDHEAN a’ nochdadh sin frithealaiche feitheamh airson dàta tron ​​​​phort 8080. Chan eil an sgioba seo a’ toirt seachad puirt. Is e seo seòrsa de sgrìobhainnean a tha a dhìth gus am port fhosgladh 8080 nuair a thòisicheas an soitheach.

Ag ullachadh airson an tagradh agad a stòradh

1) Suidhich na caochladairean àrainneachd a leanas. Cuir na àite PROJECT_ID gu ID a’ phròiseict GCP agad.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

A 'cleachdadh luachan PROJECT_ID и GCR_REPO bidh thu a’ tagadh ìomhaigh an Docker nuair a thogas tu e agus ga phutadh gu Clàr-gleidhidh prìobhaideach.

2) Suidhich am pròiseact GCP bunaiteach airson an inneal loidhne-àithne clod.

gcloud config set project $PROJECT_ID

3) Suidhich an sòn bunaiteach airson an inneal loidhne-àithne clod.

gcloud config set compute/zone us-central1-b

4) Dèan cinnteach gu bheil an t-seirbheis Clàradh Container air a chomasachadh sa phròiseact GCP.

gcloud services enable containerregistry.googleapis.com

Frithealaiche gleidhidh

  1. Rach don eòlaire far a bheil an eisimpleir suidhichte frithealaiche:

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

  2. Cruinnich an dealbh a’ cleachdadh Faidhle docker agus na caochladairean àrainneachd a mhìnich thu na bu thràithe:

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

Parameter -t a’ riochdachadh an taga Docker. Seo ainm na h-ìomhaigh a chleachdas tu nuair a bhios tu a’ cleachdadh an t-soithich.

  1. Luchdaich suas an dealbh gu Clàr nan Container:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Containerization de loadgen

1) Rach don eòlaire far a bheil an eisimpleir suidhichte luchdaichgen:

cd ../loadgen

2) Cruinnich an dealbh:

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

3) Luchdaich suas an ìomhaigh gu Clàr nan Container:

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

Faic liosta de dhealbhan

Dèan lèirmheas air liosta nan ìomhaighean san stòr agus dearbhaich gun deach na h-ìomhaighean a luchdachadh suas:

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

Bidh an àithne a’ taisbeanadh ainmean nan dealbhan a chaidh a luchdachadh suas às ùr:

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

A’ cruthachadh buidheann GKE.

Dh’ fhaodadh na soithichean sin a bhith air an ruith air inneal brìgheil Cloud Shell no air coimpiutair leis an àithne docker run. Ach ann an àrainneachd cinneasachaidh, feumaidh tu dòigh air soithichean a chuir air dòigh sa mheadhan. Mar eisimpleir, feumaidh tu siostam a nì cinnteach gu bheil soithichean an-còmhnaidh a’ ruith, agus feumaidh tu dòigh air barrachd shoithichean a mheudachadh agus a shnìomh ma thèid trafaic àrdachadh.

Gus tagraidhean container a ruith as urrainn dhut a chleachdadh G.K.E.. Tha GKE na àrd-ùrlar orchestration container a bhios a’ cruinneachadh innealan brìgheil gu cruinneachadh. Canar nód ris gach inneal brìgheil. Tha cruinneachaidhean GKE stèidhichte air siostam riaghlaidh cnuasachadh stòr fosgailte Kubernetes. Tha Kubernetes a’ toirt seachad uidheamachdan airson eadar-obrachadh leis a’ bhuidheann.

A’ cruthachadh buidheann GKE:

1) Cruthaich cruinneachadh:

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

sgioba clod a’ cruthachadh cruinneachadh ùr anns a’ phròiseact GCP agus an sòn bunaiteach a shònraich thu. Gus Istio a ruith, tha sinn a’ moladh gum bi co-dhiù 4 nodan agus inneal brìgheil ann n1-inbhe-2.

Bidh an sgioba a’ cruthachadh a’ bhuidheann ann am beagan mhionaidean. Nuair a bhios an cruinneachadh deiseil, bidh an àithne a’ toirt a-mach rudeigin mar seo teachdaireachd.

2) Thoir seachad teisteanasan anns an inneal loidhne-àithne cubectla chleachdadh airson a’ bhuidheann a stiùireadh:

gcloud container clusters get-credentials istioready

3) A-nis faodaidh tu conaltradh le Kubernetes tro cubectl. Mar eisimpleir, faodaidh an àithne a leanas faighinn a-mach inbhe nodan:

kubectl get nodes

Bidh an àithne a’ toirt a-mach liosta de nodan:

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 prìomh bhun-bheachdan

Tha an diagram a’ sealltainn tagradh air GKE:

Ag ullachadh iarrtas airson Istio

Mus cuir thu soithichean ann an GKE, ionnsaich na prìomh bhun-bheachdan aig Kubernetes. Tha ceanglaichean aig an deireadh ma tha thu airson barrachd ionnsachadh.

  • Nòtaichean agus cruinneachaidhean. Ann an GKE, is e inneal brìgheil a th’ ann an nód. Air àrd-ùrlaran Kubernetes eile, faodaidh nód a bhith na choimpiutair no na inneal brìgheil. Is e cruinneachadh de nodan a th’ ann am brabhsair a dh’fhaodar a mheas mar aonad singilte far am bi thu a’ cleachdadh tagradh soithich.
  • Podan. Ann an Kubernetes, bidh soithichean a 'ruith ann am pods. Tha Pod ann an Kubernetes na aonad do-roinnte. Bidh Pod a’ cumail aon shoitheach no barrachd. Bidh thu a’ cleachdadh soithichean frithealaiche agus luchdaichgen ann am poitean fa leth. Nuair a tha grunn shoithichean ann am pod (mar eisimpleir, frithealaiche tagraidh agus frithealaiche progsaidh), tha soithichean air an riaghladh mar aon bhuidheann agus a’ roinn ghoireasan pod.
  • Cleachdaidhean. Ann an Kubernetes, tha cleachdadh na nì a tha na chruinneachadh de phodan co-ionann. Bidh cleachdadh a’ cur air bhog iomadh mac-samhail de pods air an sgaoileadh thairis air nodan brabhsair. Bidh cleachdadh gu fèin-ghluasadach a’ dol an àite pods a dh’ fhàilnich no nach eil a’ freagairt.
  • Seirbheis Kubernetes. Nuair a ruitheas tu còd tagraidh ann an GKE, bidh an ceangal eadar luchdaichgen и frithealaiche. Nuair a thòisich thu air seirbheisean air inneal brìgheil no deasg Cloud Shell, chuir thu iarrtasan gu frithealaiche aig localhost: 8080. Nuair a thèid an cur gu GKE, thèid pods a chuir gu bàs air na nodan a tha rim faighinn. Gu gnàthach, chan eil smachd agad air dè an nód a tha am pod a’ ruith air, mar sin thusa pods chan eil seòlaidhean IP maireannach ann.
    Airson seòladh IP fhaighinn airson frithealaiche, feumaidh tu tarraing lìonra a mhìneachadh air mullach nan pods. Sin mar a tha e Seirbheis Kubernetes. Tha seirbheis Kubernetes a’ toirt seachad crìoch leantainneach airson seata de pods. Tha beagan ann sheòrsaichean de sheirbheisean. frithealaiche cleachdaidhean Loadbalancer, a bheir seachad seòladh IP taobh a-muigh airson fios a chuir thu frithealaiche bho thaobh a-muigh na buidhne.
    Tha siostam DNS togte aig Kubernetes cuideachd a bhios a’ sònrachadh ainmean DNS (mar eisimpleir, helloserver.default.cluster.local) seirbhisean. Taing dha seo, bidh pods taobh a-staigh a’ bhuidheann a’ conaltradh le pods eile sa bhuidheann aig seòladh maireannach. Chan urrainnear an t-ainm DNS a chleachdadh taobh a-muigh a’ bhraisle, leithid ann an Cloud Shell no air coimpiutair.

Kubernetes a 'nochdadh

Nuair a ruith thu an tagradh bhon stòr, chleachd thu an àithne riatanach python3

frithealaiche.py

Tha Imperative a’ ciallachadh gnìomhair: “dèan seo.”

Bidh Kubernetes a’ cleachdadh modail dearbhach. Tha seo a 'ciallachadh nach eil sinn ag innse do Kubernetes dè dìreach a nì sinn, ach a' toirt cunntas air an staid a tha sinn ag iarraidh. Mar eisimpleir, bidh Kubernetes a 'tòiseachadh agus a' stad pods mar a dh 'fheumar gus dèanamh cinnteach gu bheil fìor staid an t-siostaim a' freagairt ris an stàit a tha a dhìth.

Bidh thu a’ comharrachadh an staid a tha thu ag iarraidh ann am manifestos no faidhlichean YAML. Ann am faidhle YAML tha mion-chomharrachadh airson aon nì Kubernetes no barrachd.

Anns an eisimpleir tha faidhle YAML airson frithealaiche и luchdaichgen. Bidh gach faidhle YAML a’ sònrachadh staid miannaichte an nì cleachdadh agus seirbheis Kubernetes.

frithealaiche.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

  • caoimhneil a’ comharrachadh an seòrsa nì.
  • metadata.name a’ sònrachadh ainm an t-suidheachaidh.
  • A 'chiad raon sònrachadh tha tuairisgeul ann air an staid a tha thu ag iarraidh.
  • mac-samhail a’ comharrachadh an àireamh de phònaichean a tha thu ag iarraidh.
  • Earrann spec.template a’ mìneachadh teamplaid pod. Tha raon anns an t-sònrachadh pod dealbh, a tha a 'sònrachadh ainm an ìomhaigh a dh'fheumas a bhith air a thoirt a-mach às a' Chlàr Container.

Tha an t-seirbheis air a mhìneachadh mar a leanas:

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

  • Loadbalancer: Bidh teachdaichean a’ cur iarrtasan gu seòladh IP an neach-cothromachaidh luchdan, aig a bheil seòladh IP seasmhach agus a tha ruigsinneach bho thaobh a-muigh a’ bhuidheann.
  • targaid Port: mar a tha cuimhne agad, an sgioba Sealladh farsaing air 8080 в Faidhle docker cha tug e seachad puirt. Bheir thu seachad am port 8080gus an urrainn dhut fios a chuir chun bhogsa frithealaiche taobh a-muigh na buidhne. Anns a 'chùis againn hellosvc.default.cluster.local:80 (ainm goirid: halò) a’ freagairt ris a’ phort 8080 Seòlaidhean IP pod frithealaidh.
  • port: Seo an àireamh puirt far an cuir seirbheisean eile sa bhuidheann iarrtasan.

luchdaichgen.yaml

Cur an sàs an aghaidh luchdaichgen.yaml Coimhead coltach frithealaiche.yaml. Is e an t-eadar-dhealachadh gu bheil earrann anns an nì cleachdadh approx. Bidh e a’ mìneachadh nan caochladairean àrainneachd a tha a dhìth luchdaichgen agus a chuir thu a-steach nuair a ruith thu an aplacaid bhon stòr.

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

Ùine luchdaichgen chan eil e a’ gabhail ri iarrtasan a tha a’ tighinn a-steach, airson an raoin seòrsa air a chomharrachadh ClusterIP. Tha an seòrsa seo a’ toirt seachad seòladh IP seasmhach a dh’ fhaodas seirbheisean sa bhuidheann a chleachdadh, ach chan eil an seòladh IP seo fosgailte do luchd-dèiligidh bhon taobh a-muigh.

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

A’ cleachdadh shoithichean ann an GKE

1) Rach don eòlaire far a bheil an eisimpleir suidhichte frithealaiche:

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

2) Fosgailte frithealaiche.yaml ann an deasaiche teacsa.
3) Cuir an àite an t-ainm san raon dealbh ri ainm do dhealbh Docker.

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

Cuir na àite PROJECT_ID gu ID a’ phròiseict GCP agad.
4) Sàbhail agus dùin frithealaiche.yaml.
5) Cuir am faidhle YAML gu Kubernetes:

kubectl apply -f server.yaml

Nuair a bhios e deiseil gu soirbheachail, bheir an àithne a-mach an còd a leanas:

deployment.apps/helloserver created
service/hellosvc created

6) Rach don eòlaire far a bheil luchdaichgen:

cd ../loadgen

7) Fosgailte luchdaichgen.yaml ann an deasaiche teacsa.
8) Cuir an àite an t-ainm san raon dealbh ri ainm do dhealbh Docker.

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

Cuir na àite PROJECT_ID gu ID a’ phròiseict GCP agad.
9) Sàbhail agus dùin luchdaichgen.yaml, dùin an deasaiche teacsa.
10) Cuir am faidhle YAML gu Kubernetes:

kubectl apply -f loadgen.yaml

Nuair a bhios e deiseil gu soirbheachail, bheir an àithne a-mach an còd a leanas:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Thoir sùil air inbhe nan pods:

kubectl get pods

Tha an àithne a 'sealltainn an inbhe:

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

12) Thoir a-mach logaichean tagraidh bhon pod luchdaichgen. Cuir na àite POD_ID chun an aithnichear bhon fhreagairt roimhe.

kubectl logs loadgenerator-POD_ID

13) Faigh seòlaidhean IP taobh a-muigh halò:

kubectl get service

Tha am freagairt àithne a’ coimhead rudeigin mar seo:

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) Cuir iarrtas gu halò: cuir an àite EXTERNAL_IP gu seòladh IP taobh a-muigh halò.

curl http://EXTERNAL_IP

Gabhamaid air Istio

Tha tagradh agad mu thràth air a chuir gu GKE. luchdaichgen an urrainn dhut Kubernetes DNS a chleachdadh (hallovc:80) iarrtasan a chur gu frithealaicheagus faodaidh tu iarrtasan a chuir gu frithealaiche le seòladh IP taobh a-muigh. Ged a tha mòran fheartan aig Kubernetes, tha beagan fiosrachaidh a dhìth mu na seirbheisean:

  • Ciamar a bhios seirbheisean ag eadar-obrachadh? Dè na dàimhean a tha eadar seirbheisean? Ciamar a tha trafaic a’ sruthadh eadar seirbheisean? A bheil thu mothachail air sin luchdaichgen a’ cur iarrtasan gu frithealaiche, ach smaoinich nach eil fios agad càil mun tagradh. Gus na ceistean sin a fhreagairt, leig dhuinn sùil a thoirt air liosta nam pods ruith ann an GKE.
  • Meatrics. Cho fada frithealaiche freagairt ri iarrtas a thig a-steach? Cia mheud iarrtas gach diog a gheibh am frithealaiche? A bheil e a’ toirt seachad teachdaireachdan mearachd?
  • Fiosrachadh tèarainteachd. Trafaig eadar luchdaichgen и frithealaiche dìreach a 'dol seachad HTTP no le mTLS?

Tha Istio a’ freagairt nan ceistean sin uile. Gus seo a dhèanamh, bidh Istio a’ cur neach-ionaid sidecar Teachdaire anns gach cuach. Bidh an neach-ionaid Tosgaire a’ toirt a-steach a h-uile trafaic a-steach is a-mach gu soithichean tagraidh. Tha e a’ ciallachadh sin frithealaiche и luchdaichgen faighinn tro neach-ionaid taobh càr, agus an trafaic gu lèir bho luchdaichgen к frithealaiche a’ dol tron ​​neach-ionaid Envoy.

Bidh ceanglaichean eadar luchd-ionaid Envoy a’ cruthachadh mogal seirbheis. Tha ailtireachd mogal na seirbheis a’ toirt seachad ìre de smachd air mullach Kubernetes.

Ag ullachadh iarrtas airson Istio

Leis gu bheil luchd-ionaid Envoy a’ ruith anns na soithichean aca fhèin, faodar Istio a chuir a-steach air mullach cruinneachadh GKE gun cha mhòr atharrachadh sam bith air còd an tagraidh. Ach tha thu air beagan obrach a dhèanamh gus an tagradh agad ullachadh airson a bhith air a riaghladh le Istio:

  • Seirbheisean airson a h-uile container. Gu cleachdaidhean frithealaiche и luchdaichgen ceangailte ri seirbheis Kubernetes. eadhon luchdaichgen, nach eil a 'faighinn iarrtasan a' tighinn a-steach, tha seirbheis ann.
  • Feumaidh ainmean a bhith aig puirt ann an seirbheisean. Ged a dh’ fhaodar puirt seirbheis fhàgail gun ainm ann an GKE, tha Istio ag iarraidh ort sònrachadh ainm port a rèir a phròtacal. Anns an fhaidhle YAML tha am port airson frithealaiche air a ghairm httpoir tha am frithealaiche a' cleachdadh a' phròtacail HTTP... Ma tha seirbheis cleachdadh gRPC, dh'ainmicheadh ​​tu am port grpc.
  • Tha suaicheantais air an comharrachadh. Mar sin, faodaidh tu feartan stiùireadh trafaic Istio a chleachdadh, leithid a bhith a’ roinn trafaic eadar dreachan den aon sheirbheis.

Stàladh

Tha dà dhòigh air Istio a stàladh. Faodaidh comas a thoirt do Istio air leudachadh GKE no stàlaich an tionndadh stòr fosgailte de Istio air a' chnuasaich. Le Istio air GKE, is urrainn dhut gu furasta ionadan Istio a riaghladh agus ùrachadh tro chuairt-beatha brabhsair GKE. Ma tha thu ag iarraidh an dreach as ùire de Istio no barrachd smachd air an rèiteachadh pannal smachd Istio agad, stàlaich an tionndadh stòr fosgailte an àite an leudachadh Istio on GKE. Gus co-dhùnadh mun dòigh-obrach, leugh an artaigil A bheil feum agam air Istio air GKE?.

Tagh roghainn, thoir sùil air an stiùireadh iomchaidh, agus lean an stiùireadh gus Istio a chuir air do chlàr. Ma tha thu airson Istio a chleachdadh leis an tagradh ùr agad, cuir an gnìomh taobh-chàraichean comasach airson àrainn ainmean default.

Glanadh

Gus nach tèid do ghearradh chun chunntas Google Cloud Platform agad airson na goireasan a chleachd thu san oideachadh seo, cuir às don chruinneachadh de shoithichean aon uair ‘s gu bheil thu air Istio a chuir a-steach agus air cluich leis an tagradh sampall. Bheir seo air falbh a h-uile goireas brabhsair, leithid eisimpleirean coimpiutaireachd, diosgan, agus goireasan lìonra.

Dè a-nis?

Source: www.habr.com

Cuir beachd ann