Manomana fangatahana ho an'ny Istio

Manomana fangatahana ho an'ny Istio

Istio dia fitaovana mety amin'ny fampifandraisana, fiarovana ary fanaraha-maso ireo rindranasa zaraina. Istio dia mampiasa teknolojia isan-karazany hampandehanana sy hitantanana rindrambaiko amin'ny ambaratonga, ao anatin'izany ny kaontenera mba hametahana ny kaody fampiharana sy ny fiankinan-doha amin'ny fametrahana, ary ny Kubernetes hitantana ireo fitoeran-javatra ireo. Noho izany, raha hiara-hiasa amin'i Istio ianao dia tsy maintsy mahafantatra ny fomba fiasan'ny fampiharana misy serivisy marobe mifototra amin'ireo teknolojia ireo tsy misy Istio. Raha efa mahazatra anao ireo fitaovana sy hevitra ireo dia aza misalasala mandingana ity fampianarana ity ary mandehana mivantana any amin'ny fizarana Fametrahana Istio amin'ny Google Kubernetes Engine (GKE) na fametrahana fanitarana Istio amin'ny GKE.

Ity dia torolalana tsikelikely izay handehanantsika amin'ny dingana manontolo manomboka amin'ny kaody loharano mankany amin'ny fitoeran'ny GKE mba hanomezana anao fahatakarana fototra momba ireo teknolojia ireo amin'ny alalan'ny ohatra. Ho hitanao ihany koa ny fomba fampiasan'i Istio ny herin'ireo teknolojia ireo. Izany dia mihevitra fa tsy mahafantatra na inona na inona momba ny kaontenera, Kubernetes, serivisy serivisy, na Istio ianao.

asa

Amin'ity lesona ity dia hamita ireto asa manaraka ireto ianao:

  1. Mianara fampiharana tsotra izao tontolo izao miaraka amin'ny serivisy marobe.
  2. Alefaso ny fampiharana avy amin'ny kaody loharano.
  3. Fonosana ny fampiharana ao anaty container.
  4. Mamorona cluster Kubernetes.
  5. Mametraka kaontenera ao anaty cluster.

Alohan'ny hanombohanao

Araho ny toromarika mba ahafahan'ny Kubernetes Engine API:

  1. Mandehana any Pejy Kubernetes Engine ao amin'ny console Google Cloud Platform.
  2. Mamorona na mifidiana tetikasa.
  3. Andraso mandra-pahatonga ny API sy ny serivisy mifandraika amin'izany. Mety haharitra minitra vitsivitsy izany.
  4. Ataovy azo antoka fa voapetraka ny faktiora ho an'ny tetikasanao Google Cloud Platform. Ianaro ny fomba ahafahan'ny faktiora.

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.
  • Manana safidy maromaro ianao mpamoaka lahatsoratra:
    1. Editor code, izay misokatra miaraka amin'ny kisary fanitsiana eo an-tampon'ny varavarankely Cloud Shell.
    2. Emacs, Vim na Nano, izay misokatra amin'ny baiko baiko ao amin'ny Cloud Shell.

Mampiasa Cloud Shell:

  1. Mandehana any amin'ny console GCP.
  2. mpanao gazety Ampidiro ny Cloud Shell (Ampidiro ny Cloud Shell) eo an-tampon'ny fikandrana console GCP.

Manomana fangatahana ho an'ny Istio

Amin'ny tapany ambany GCP console Hisy fivoriana Cloud Shell misy andalana baiko hisokatra amin'ny varavarankely vaovao.

Manomana fangatahana ho an'ny Istio

Safidy B: Fampiasana Fitaovana Command Line eo an-toerana

Raha hiasa amin'ny solosaina mampiasa Linux na macOS ianao dia mila manamboatra sy mametraka ireto singa manaraka ireto:

  1. Ataovy miavaka Python 3 sy Python 2 tontolo fampandrosoana.

  2. Mametraka Cloud SDK miaraka amin'ny fitaovana andalana baiko gcloud.

  3. hametraka kubectl - fitaovana andalana ho an'ny asa Kubernetes.

    gcloud components install kubectl

  4. hametraka Docker Community Edition (CE). Hampiasa ny fitaovana andalana baiko ianao dockermba hamoronana sary fitoeran-javatra ho an'ny santionany fampiharana.

  5. Apetraho ny fitaovana Git version controlmba hahazoana ny santionany fampiharana avy amin'ny GitHub.

Misintona kaody santionany

  1. Ampidino ny kaody loharano helloserver:

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

  2. Mandehana any amin'ny lahatahiry code code:

    cd istio-samples/sample-apps/helloserver

Mikaroka fampiharana miaraka amin'ny serivisy maro

Ny fampiharana santionany dia nosoratana tamin'ny Python ary misy singa roa mifandray amin'ny fampiasana HAFA:

  • mpizara: mpizara tsotra misy teboka iray GET, /, izay manonta "hello world" amin'ny console.
  • loadgen: script izay mandefa fifamoivoizana mankany mpizara, miaraka amin'ny isan'ny fangatahana isan-tsegondra.

Manomana fangatahana ho an'ny Istio

Fampandehanana fampiharana avy amin'ny kaody loharano

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

5) Mamorona ireto fari-piainana manaraka ireto:

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

6) mihazakazaka virtualenv:

virtualenv --python python3 env

7) Ampidiro ny tontolo virtoaly:

source env/bin/activate

8) Mametraha fepetra momba ny loadgen:

pip3 install -r requirements.txt

9) mihazakazaka loadgen:

python3 loadgen.py

Amin'ny fanombohana loadgen mampiseho zavatra toy izao manaraka izao:

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

Ao amin'ny varavarankely terminal hafa mpizara mamoaka ireto hafatra manaraka ireto amin'ny console:

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

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.

Miomana amin'ny fametrahana ny fampiharanao

1) Mametraha ireto fari-piainana manaraka ireto. Soloy PROJECT_ID mankany amin'ny ID tetikasa GCP-nao.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Mampiasa soatoavina PROJECT_ID ΠΈ GCR_REPO marihinao ny sary Docker rehefa manamboatra azy ianao ary manosika azy any amin'ny rejisitra Container manokana.

2) Apetraho ny tetikasa GCP default ho an'ny fitaovana andalana baiko gcloud.

gcloud config set project $PROJECT_ID

3) Apetraho ny faritra default ho an'ny fitaovana andalana baiko gcloud.

gcloud config set compute/zone us-central1-b

4) Ataovy azo antoka fa alefa ao amin'ny tetikasa GCP ny serivisy Registry Container.

gcloud services enable containerregistry.googleapis.com

Mpizara container

  1. Mandehana any amin'ny lahatahiry misy ny ohatra mpizara:

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

  2. Angony ny sary mampiasa dockerfile ary ny fari-piainan'ny tontolo iainana nofaritanao teo aloha:

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

fikirana -t maneho ny tag Docker. Ity no anaran'ny sary ampiasainao rehefa manaparitaka ny kaontenera.

  1. Alefaso any amin'ny Rejistra Container ny sary:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Containerization ny loadgen

1) Mandehana any amin'ny lahatahiry misy ny ohatra loadgen:

cd ../loadgen

2) Angony ny sary:

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

3) Ampidiro ao amin'ny Rejistra Container ny sary:

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

Jereo ny lisitry ny sary

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.

Mamorona cluster GKE:

1) Mamorona cluster:

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

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:

gcloud container clusters get-credentials istioready

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:

Manomana fangatahana ho an'ny Istio

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.

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

  • tsara fanahy manondro ny karazana zavatra.
  • metadata.name mamaritra ny anaran'ny fametrahana.
  • 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.

Ny serivisy dia voafaritra toy izao:

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

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

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

fotoana loadgen tsy manaiky fangatahana miditra, ho an'ny saha karazana Unknown ClusterIP. Ity karazana ity dia manome adiresy IP maharitra izay azon'ny serivisy ampiasaina ao amin'ny cluster, saingy ity adiresy IP ity dia tsy miseho amin'ny mpanjifa ivelany.

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

Mametraka kaontenera ao amin'ny GKE

1) Mandehana any amin'ny lahatahiry misy ny ohatra mpizara:

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

2) Misokatra server.yaml amin'ny tonian-dahatsoratra.
3) Soloy ny anarana eo amin'ny saha sary amin'ny anaran'ny sarinao Docker.

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

Soloy PROJECT_ID mankany amin'ny ID tetikasa GCP-nao.
4) Tehirizo ary akatona server.yaml.
5) Apetraho amin'ny Kubernetes ny rakitra YAML:

kubectl apply -f server.yaml

Rehefa vita soa aman-tsara dia mamoaka izao code manaraka izao ny baiko:

deployment.apps/helloserver created
service/hellosvc created

6) Mandehana any amin'ny lahatahiry izay loadgen:

cd ../loadgen

7) Misokatra loadgen.yaml amin'ny tonian-dahatsoratra.
8) Soloy ny anarana eo amin'ny saha sary amin'ny anaran'ny sarinao Docker.

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

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.

Manomana fangatahana ho an'ny Istio

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.

Inona ny manaraka?

Source: www.habr.com

Add a comment