Ke hoʻomākaukau nei i kahi noi no Istio

Ke hoʻomākaukau nei i kahi noi no Istio

He mea hana maʻalahi ʻo Istio no ka hoʻopili ʻana, hoʻopaʻa ʻana a me ka nānā ʻana i nā noi i hāʻawi ʻia. Hoʻohana ʻo Istio i nā ʻenehana like ʻole e holo a hoʻokele i nā polokalamu ma ke ʻano nui, me nā ipu e hoʻopili ai i nā code noi a me nā hilinaʻi no ka hoʻolaha ʻana, a me nā Kubernetes e hoʻokele i kēlā mau ipu. No laila, e hana pū me Istio pono ʻoe e ʻike pehea e hana ai kahi noi me nā lawelawe lehulehu e pili ana i kēia mau ʻenehana me kaʻole Istio. Inā ʻike mua ʻoe i kēia mau mea hana a me nā manaʻo, e ʻoluʻolu e lele i kēia kumu aʻo a hele pololei i ka ʻāpana Ke hoʻokomo ʻana iā Istio ma Google Kubernetes Engine (GKE) a i ʻole ke kau ʻana i kahi hoʻonui Istio ma GKE.

He alakaʻi kēia i kēlā me kēia ʻanuʻu kahi e hele ai mākou i ke kaʻina holoʻokoʻa mai ka code kumu a i ka pahu GKE i loaʻa iā ʻoe ka ʻike kumu o kēia mau ʻenehana me kahi laʻana. E ʻike ʻoe pehea e hoʻohana ai ʻo Istio i ka mana o kēia mau ʻenehana. Manaʻo kēia ʻaʻole ʻoe ʻike i kekahi mea e pili ana i nā ipu, nā Kubernetes, nā meshes lawelawe, a i ʻole Istio.

hana

Ma kēia kumu aʻo, e hoʻopau ʻoe i kēia mau hana:

  1. Ke aʻo nei i kahi noi honua hello maʻalahi me nā lawelawe he nui.
  2. Holo i ka palapala noi mai ka code kumu.
  3. Hoʻopili i ka noi i loko o nā pahu.
  4. Ke hana ʻana i kahi pūʻulu Kubernetes.
  5. Ka hoʻolele ʻana i nā ipu i loko o kahi hui.

Ma mua o kou hoʻomaka

E hahai i nā kuhikuhi e hiki ai ke Kubernetes Engine API:

  1. E hele ana ʻAoʻao Kubernetes Engine i loko o ka console Google Cloud Platform.
  2. Hana a koho paha i kahi papahana.
  3. E kali a hiki i ka hoʻohana ʻana i ka API a me nā lawelawe pili. He mau minuke paha kēia.
  4. E hōʻoia i ka hoʻonohonoho ʻia ʻana o ka bila no kāu papahana Google Cloud Platform. E aʻo pehea e hiki ai i ka hoʻolilo kālā.

Ma kēia kumu aʻo, hiki iā ʻoe ke hoʻohana iā Cloud Shell, nāna e hoʻomākaukau i ka mīkini virtual g1-liʻiliʻi ma Google Compute Engine me Linux e pili ana iā Debian, a i ʻole he kamepiula Linux a macOS paha.

Koho A: Ke hoʻohana nei i Cloud Shell

Nā pōmaikaʻi o ka hoʻohana ʻana i Cloud Shell:

  • ʻO Python 2 a me Python 3 nā kaiapuni hoʻomohala (me virtualenv) ua hoʻonohonoho piha ʻia.
  • Mea Hana Laina Kauoha gcloud, ka loea, hele и kubectl, a mākou e hoʻohana ai ua hoʻokomo ʻia.
  • He nui kāu e koho ai nā mea hoʻoponopono kikokikona:
    1. Hoʻoponopono code, e wehe ana me ka ikona hoʻoponopono ma ka piko o ka pukaaniani Cloud Shell.
    2. Emacs, Vim a i ʻole Nano, e wehe ana mai ka laina kauoha ma Cloud Shell.

Hoʻohana ʻO Cloud Shell:

  1. E hele i ka console GCP.
  2. Kaomi i ka pihi E ho'ā i ka Cloud Shell (E ho'ā i ka Cloud Shell) ma ka piko o ka pukaaniani console GCP.

Ke hoʻomākaukau nei i kahi noi no Istio

Ma ka ʻaoʻao lalo console GCP E wehe ʻia kahi hālāwai Cloud Shell me kahi laina kauoha ma kahi pukaaniani hou.

Ke hoʻomākaukau nei i kahi noi no Istio

Koho B: Ke hoʻohana nei i nā mea hana laina kauoha ma ka ʻāina

Inā ʻoe e hana ana ma kahi kamepiula e holo ana i Linux a i ʻole macOS, pono ʻoe e hoʻonohonoho a hoʻokomo i kēia mau ʻāpana:

  1. Hoʻopilikino Kaiapuni hoʻomohala Python 3 a me Python 2.

  2. E hoʻouka i Cloud SDK me ka mea paahana laina kauoha gcloud.

  3. Kau kubectl - mea paahana laina kauoha no ka hana pū me Kubernetes.

    gcloud components install kubectl

  4. Kau Puka Kaiaulu Docker (CE). E hoʻohana ʻoe i ka mea hana laina kauoha ka loeae hana i nā kiʻi pahu no ka noi laʻana.

  5. E hoʻouka i ka mea hana Mana mana o Gite kiʻi i ka palapala noi mai GitHub.

Hoʻoiho i ka laʻana code

  1. Hoʻoiho i ke code kumu helloserver:

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

  2. E hele i ka papa kuhikuhi code code:

    cd istio-samples/sample-apps/helloserver

Ke ʻimi nei i kahi noi me nā lawelawe lehulehu

Ua kākau ʻia ka palapala noi ma Python a loaʻa i ʻelua mau ʻāpana e launa pū me ka hoʻohana ʻana koena:

  • kikowaena: kikowaena maʻalahi me hoʻokahi hopena LOA, /, e paʻi ana i ka "hello world" i ka console.
  • loadgen: palapala e hoʻouna i ke kaʻa i kikowaena, me ka helu o nā noi i kēlā me kēia kekona.

Ke hoʻomākaukau nei i kahi noi no Istio

Ke holo nei i kahi noi mai ke code kumu

No ka ʻimi ʻana i ka laʻana palapala noi, holo ia ma Cloud Shell a i ʻole ma kāu kamepiula.
1) Ma ka papa helu istio-samples/sample-apps/helloserver holo kikowaena:

python3 server/server.py

Hoʻomaka kikowaena ua hōʻike ʻia kēia mau mea:

INFO:root:Starting server...

2) E wehe i kekahi puka aniani hope e hoʻouna i nā noi kikowaena. Inā ʻoe e hoʻohana ana iā Cloud Shell, kaomi i ka ikona hoʻohui e wehe i kahi kau hou.
3) E hoʻouna i kahi noi iā kikowaena:

curl http://localhost:8080

pane ke kikowaena:

Hello World!

4) Mai ka papa kuhikuhi kahi āu i hoʻoiho ai i ka code sample, e hele i ka papa kuhikuhi i loaʻa loadgen:

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

5) E hana i kēia mau ʻano hoʻololi kaiapuni:

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

6) Hoʻomaka virtualenv:

virtualenv --python python3 env

7) Ho'ā i ke kaiapuni virtual:

source env/bin/activate

8) E hoʻonoho i nā koi no loadgen:

pip3 install -r requirements.txt

9) Hoʻomaka loadgen:

python3 loadgen.py

Hoʻomaka loadgen hōʻike i kekahi mea e like me kēia memo:

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

Ma kekahi pukaaniani hope kikowaena hoʻopuka i kēia mau memo i ka 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: */*

Mai kahi hiʻohiʻona pūnaewele, holo ka noi holoʻokoʻa ma kahi hoʻokipa hoʻokahi (kamepiula kūloko a i ʻole Cloud Shell virtual machine). No laila hiki iā ʻoe ke hoʻohana localhoste hoʻouna i nā noi i kikowaena.
10) E hooki loadgen и kikowaena, komo Ctrl-c i kēlā me kēia puka makani hoʻopau.
11) Ma ka puka aniani loadgen hoʻopau i ke kaiapuni virtual:

deactivate

Hoʻopili i kahi noi i loko o nā pahu

No ka holo ʻana i ka palapala noi ma GKE, pono ʻoe e hoʻopili i ka palapala hoʻohālike − kikowaena и loadgen - ma mau pahu hopu. ʻO kahi pahu kahi ala e hoʻopili ai i kahi noi e hoʻokaʻawale iā ia mai kona kaiapuni.

No ka hoʻopili ʻana i kahi noi i loko o kahi pahu, pono ʻoe dockerfile. dockerfile he waihona kikokikona e wehewehe ana i nā kauoha no ke kūkulu ʻana i ka code kumu o ka noi a me kona mau hilinaʻi i loko Kiʻi Docker. Ke kūkulu ʻia, hoʻouka ʻoe i ke kiʻi i kahi waihona waihona e like me Docker Hub a i ʻole Kakau Kopa.

Ua loaʻa i ka laʻana dockerfile no ka mea, kikowaena и loadgen me nā kauoha pono a pau e hōʻiliʻili i nā kiʻi. Ma lalo - dockerfile no ka mea, kikowaena:

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

  • hui MAI python:3-slim ma ke kumu haʻi iā Docker e hoʻohana i ka mea hou loa Kiʻi Python 3 ma ke ano he kumu.
  • hui KOPE. . kope i nā faila kumu i ka papa kuhikuhi hana o kēia manawa (i kā mākou hihia wale nō server.py) i ka waihona waihona o ka ipu.
  • KUMU KOMO wehewehe i ke kauoha i hoʻohana ʻia e hoʻomaka i ka ipu. I kā mākou hihia, ʻaneʻane like kēia kauoha me ka mea āu i holo ai server.py mai ke code kumu.
  • hui OLELO HOAKAKA hōʻike i kēlā kikowaena kali no ka ʻikepili ma o ke awa 8080. ʻAʻole kēia hui hāʻawi i nā awa. ʻO kēia kekahi ʻano palapala e pono ai e wehe i ke awa 8080 ke hoʻomaka i ka ipu.

Ke hoʻomākaukau nei e hoʻopaʻa i kāu noi

1) E hoʻonoho i nā mea hoʻololi kaiapuni. Hoʻololi PROJECT_ID i kāu ID pāhana GCP.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Ke hoʻohana nei i nā waiwai PROJECT_ID и GCR_REPO kau ʻoe i ke kiʻi Docker i ka wā e kūkulu ai ʻoe a hoʻolei iā ia i kahi Registry Container.

2) E hoʻonoho i ka papahana GCP paʻamau no ka mea hana laina kauoha gcloud.

gcloud config set project $PROJECT_ID

3) E hoʻonoho i ka ʻāpana paʻamau no ka mea hana laina kauoha gcloud.

gcloud config set compute/zone us-central1-b

4) E hōʻoia i ka hiki ʻana o ka lawelawe Container Registry ma ka papahana GCP.

gcloud services enable containerregistry.googleapis.com

Ke kikowaena waihona

  1. E hele i ka papa kuhikuhi kahi i loaʻa ai ka laʻana kikowaena:

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

  2. E hōʻuluʻulu i ke kiʻi me ka hoʻohana ʻana dockerfile a me nā hoʻololi kaiapuni āu i wehewehe mua ai:

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

ʻO ka pākuhi -t e hōʻike ana i ka inoa Docker. ʻO kēia ka inoa o ke kiʻi āu e hoʻohana ai i ka wā e kau ana i ka ipu.

  1. Hoʻouka i ke kiʻi i ka Container Registry:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

ʻO ka waihona o ka loadgen

1) E hele i ka papa kuhikuhi kahi i loaʻa ai ka laʻana loadgen:

cd ../loadgen

2) E hōʻiliʻili i ke kiʻi:

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

3) Hoʻouka i ke kiʻi i ka Container Registry:

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

Nānā i ka papa inoa o nā kiʻi

E nānā i ka papa inoa o nā kiʻi i loko o ka waihona a hōʻoia ua hoʻouka ʻia nā kiʻi:

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

Hōʻike ke kauoha i nā inoa o nā kiʻi i hoʻouka hou ʻia:

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

Ke hana ʻana i kahi pūʻulu GKE.

Hiki ke holo ʻia kēia mau pahu ma kahi mīkini virtual Cloud Shell a i ʻole ma ke kamepiula me ke kauoha holo ka hana. Akā i loko o kahi ʻenehana hana, pono ʻoe i kahi ala e hoʻokaʻawale i nā ipu. No ka laʻana, pono ʻoe i kahi ʻōnaehana e hōʻoia i ka holo mau ʻana o nā ipu, a pono ʻoe i kahi ala e hoʻonui ai a wili i nā manawa pahu hou inā piʻi ke kaʻa.

No ka holo ʻana i nā noi containerized hiki iā ʻoe ke hoʻohana ʻO G.K.E.. ʻO GKE kahi paepae hoʻoheheʻe ipu e hōʻuluʻulu i nā mīkini virtual i loko o kahi pūʻulu. Kapa ʻia kēlā me kēia mīkini virtual he node. Hoʻokumu ʻia nā pūʻulu GKE ma ka ʻōnaehana hoʻokele kumu ʻo Kubernetes cluster. Hāʻawi ʻo Kubernetes i nā mīkini no ka launa pū ʻana me ka pūʻulu.

Ke hana ʻana i kahi pūʻulu GKE:

1) E hana i kahi hui:

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

hui gcloud hana i kahi pūʻulu istioready ma ka papahana GCP a me ka ʻāpana paʻamau āu i kuhikuhi ai. No ka holo ʻana iā Istio, paipai mākou i ka loaʻa ʻana o 4 nodes a me kahi mīkini virtual n1-maʻamau-2.

Hoʻokumu ka hui i ka hui i loko o kekahi mau minuke. Ke mākaukau ka pūʻulu, hoʻopuka ke kauoha i kekahi mea e like me kēia ka leka.

2) Hāʻawi i nā hōʻoia i ka mea hana laina kauoha kubectle hoʻohana iā ia e mālama i ka pūʻulu:

gcloud container clusters get-credentials istioready

3) I kēia manawa hiki iā ʻoe ke kamaʻilio me Kubernetes ma o kubectl. No ka laʻana, hiki i kēia kauoha ke ʻike i ke kūlana o nā nodes:

kubectl get nodes

Hoʻopuka ke kauoha i kahi papa inoa o nā 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

Nā Manaʻo Koʻikoʻi Kubernetes

Hōʻike ke kiʻikuhi i kahi noi ma GKE:

Ke hoʻomākaukau nei i kahi noi no Istio

Ma mua o kou kau ʻana i nā ipu ma GKE, e aʻo i nā manaʻo nui o Kubernetes. Aia nā loulou ma ka hope loa inā makemake ʻoe e aʻo hou aku.

  • Nodes a me nā pūʻulu. I loko o GKE, ʻo kahi node he mīkini makamae. Ma nā kahua ʻē aʻe o Kubernetes, hiki i kahi node ke lilo i kamepiula a i ʻole mīkini uila. ʻO ka puʻupuʻu he hōʻiliʻili o nā nodes i hiki ke noʻonoʻo ʻia he ʻāpana hoʻokahi kahi āu e kau ai i kahi noi pahu.
  • Pods. Ma Kubernetes, holo nā ipu i loko o nā pahu. ʻO kahi Pod ma Kubernetes kahi ʻāpana ʻokoʻa. Paʻa ka Pod i hoʻokahi pahu a ʻoi aku paha. Hoʻolaha ʻoe i nā ipu kikowaena a loadgen ma nā ʻāpana ʻokoʻa. Ke nui nā pahu i loko o kahi pod (no ka laʻana, kahi kikowaena noi a kikowaena kikowaena), mālama ʻia nā ipu ma ke ʻano he hui hoʻokahi a kaʻana like i nā kumuwaiwai pod.
  • Nā hoʻolālā. Ma Kubernetes, ʻo kahi hoʻolaha kahi mea i hōʻiliʻili i nā pods like. Hoʻopuka ʻo Deployment i nā kope he nui o nā pods i puʻunaue ʻia ma nā node cluster. Hoʻololi ʻo Deployment i nā pods i hāʻule a pane ʻole paha.
  • lawelawe Kubernetes. Ke holo nei ka palapala noi ma GKE, ka pilina ma waena loadgen и kikowaena. I kou hoʻomaka ʻana i nā lawelawe ma kahi mīkini virtual Cloud Shell a i ʻole desktop, ua hoʻouna ʻoe i nā noi iā kikowaena ma localhost: 8080. Ke kau ʻia i GKE, hoʻokō ʻia nā pods ma nā nodes i loaʻa. Ma ka paʻamau, ʻaʻohe ou mana ma luna o ka node e holo ana ka pod, pēlā ʻoe nā ʻōpala ʻaʻohe helu IP mau.
    No ka loaʻa ʻana o kahi helu IP no kikowaena, pono ʻoe e wehewehe i kahi abstraction pūnaewele ma luna o nā pods. ʻO ia ka mea lawelawe Kubernetes. Hāʻawi ka lawelawe Kubernetes i kahi hopena hoʻomau no kahi hoʻonohonoho o nā pods. He kakaikahi ʻano lawelawe. kikowaena hoʻohana LoadBalancer, ka mea e hāʻawi i kahi leka uila IP waho e hoʻopili ai kikowaena mai waho o ka pūpū.
    Loaʻa iā Kubernetes kahi ʻōnaehana DNS i kūkulu ʻia e hāʻawi i nā inoa DNS (no ka laʻana, helloserver.default.cluster.local) lawelawe. Mahalo i kēia, kamaʻilio nā pods i loko o ka pūʻulu me nā pods ʻē aʻe i loko o ka pūʻulu ma kahi helu mau. ʻAʻole hiki ke hoʻohana ʻia ka inoa DNS ma waho o ka pūʻulu, e like me Cloud Shell a i ʻole ma ke kamepiula.

Hōʻike ʻo Kubernetes

Ke holo ʻoe i ka noi mai ke kumu, ua hoʻohana ʻoe i ke kauoha imperative python3

server.py

ʻO Imperative ka manaʻo i kahi huaʻōlelo: "hana i kēia."

Hoʻohana ʻo Kubernetes hoʻohālike hoʻolaha. ʻO ke ʻano kēia ʻaʻole mākou e haʻi pololei iā Kubernetes i ka mea e hana ai, akā e wehewehe ana i ke kūlana i makemake ʻia. No ka laʻana, hoʻomaka a hoʻopau ʻo Kubernetes i nā pods e like me ka mea e pono ai e hōʻoia i ke kūlana maoli o ka ʻōnaehana e like me ke kūlana i makemake ʻia.

Hōʻike ʻoe i ke kūlana i makemake ʻia ma nā hōʻike a i ʻole nā ​​faila YAML. Aia ka waihona YAML i nā kikoʻī no hoʻokahi a ʻoi aku paha nā mea Kubernetes.

Aia ka laʻana i kahi faila YAML no kikowaena и loadgen. Hōʻike kēlā me kēia faila YAML i ke kūlana makemake o ka mea hoʻolālā a me ka lawelawe 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

  • Maikaʻi hōʻike i ke ʻano o ka mea.
  • metadata.name hōʻike i ka inoa hoʻolaha.
  • Kahua mua ʻike aia ka wehewehe ʻana i ke kūlana i makemake ʻia.
  • spec.replicas hōʻike i ka helu o nā pods i makemake ʻia.
  • Paukū spec.template wehewehe i kahi template pod. Aia kahi kahua ma ka kikoʻī pod kiʻi, e kuhikuhi ana i ka inoa o ke kiʻi e unuhi ʻia mai ka Container Registry.

Ua wehewehe ʻia ka lawelawe penei:

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

  • LoadBalancer: Hoʻouna nā mea kūʻai aku i nā noi i ka IP address o ka load balancer, nona ka IP address mau loa a hiki ke loaʻa mai waho o ka hui.
  • targetPort: e like me kou hoomanao ana, ka hui HOIKE 8080 в dockerfile ʻaʻole i hāʻawi i nā awa. Hāʻawi ʻoe i ke awa 8080i hiki iā ʻoe ke hoʻopili i ka ipu kikowaena ma waho o ka pūpū. I ko mākou hihia hellosvc.default.cluster.local:80 (inoa pōkole: hellosvc) pili i ke awa 8080 Pod IP address helloserver.
  • ke awa: ʻO kēia ka helu awa kahi e hoʻouna ai nā lawelawe ʻē aʻe o ka hui i nā noi.

loadgen.yaml

Hoʻolaha mea i loadgen.yaml kohu like server.yaml. ʻO ka ʻokoʻa ʻo ia ka mea i hoʻolaha ʻia he ʻāpana ʻelele. Ho'ākāka ia i nā ʻano hoʻololi kaiapuni e pono ai loadgen a āu i hoʻokomo ai i ka wā e holo ai ka noi mai ke kumu.

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

loadgen ʻaʻole ʻae i nā noi e komo mai ana, no ke kahua ʻAno kuhikuhi ClusterIP. Hāʻawi kēia ʻano i kahi leka uila IP mau e hiki ai i nā lawelawe i ka hui ke hoʻohana, akā ʻaʻole ʻike ʻia kēia IP IP i nā mea kūʻai aku o waho.

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

Ke hoʻolālā nei i nā pahu ma GKE

1) E hele i ka papa kuhikuhi kahi i loaʻa ai ka laʻana kikowaena:

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

2) Wehe server.yaml ma kahi hoʻoponopono kikokikona.
3) E hoʻololi i ka inoa ma ke kahua kiʻi i ka inoa o kāu kiʻi Docker.

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

Hoʻololi PROJECT_ID i kāu ID pāhana GCP.
4) Mālama a pani server.yaml.
5) E hoʻolālā i ka faila YAML iā Kubernetes:

kubectl apply -f server.yaml

Ma hope o ka hoʻokō ʻana, hoʻopuka ke kauoha i kēia code:

deployment.apps/helloserver created
service/hellosvc created

6) E hele i ka papa kuhikuhi kahi loadgen:

cd ../loadgen

7) Wehe loadgen.yaml ma kahi hoʻoponopono kikokikona.
8) E hoʻololi i ka inoa ma ke kahua kiʻi i ka inoa o kāu kiʻi Docker.

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

Hoʻololi PROJECT_ID i kāu ID pāhana GCP.
9) Mālama a pani loadgen.yaml, pani i ka mea hoʻoponopono kikokikona.
10) E hoʻolālā i ka faila YAML iā Kubernetes:

kubectl apply -f loadgen.yaml

Ma hope o ka hoʻokō ʻana, hoʻopuka ke kauoha i kēia code:

deployment.apps/loadgenerator created
service/loadgensvc created

11) E nānā i ke kūlana o nā pods:

kubectl get pods

Hōʻike ke kauoha i ke kūlana:

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

12) Wehe i nā palapala noi mai ka pod loadgen. Hoʻololi POD_ID i ka mea hōʻike mai ka pane mua.

kubectl logs loadgenerator-POD_ID

13) E kiʻi i nā helu IP waho hellosvc:

kubectl get service

ʻO ka pane kauoha e like me kēia:

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) E hoʻouna i kahi noi iā hellosvc: pani EXTERNAL_IP i ka helu IP waho hellosvc.

curl http://EXTERNAL_IP

E lawe kāua iā Istio

Loaʻa iā ʻoe kahi noi i kau ʻia iā GKE. loadgen hiki ke hoʻohana i ka Kubernetes DNS (alohavc:80) e hoʻouna i nā noi i kikowaenaa hiki iā ʻoe ke hoʻouna i nā noi i kikowaena e ka helu IP waho. ʻOiai he nui nā hiʻohiʻona o Kubernetes, aia kekahi mau ʻike i nalowale e pili ana i nā lawelawe:

  • Pehea e launa pū ai nā lawelawe? He aha nā pilina ma waena o nā lawelawe? Pehea ka holo ʻana o nā kaʻa ma waena o nā lawelawe? Maopopo anei iā ʻoe kēlā loadgen hoʻouna i nā noi i kikowaena, akā e noʻonoʻo ʻoe ʻaʻole ʻoe i ʻike i kekahi mea e pili ana i ka noi. No ka pane ʻana i kēia mau nīnau, e nānā kākou i ka papa inoa o nā pods holo ma GKE.
  • Nā ana. Pehea ka lōʻihi kikowaena pane i kahi noi e komo mai ana? ʻEhia mau noi i kekona i loaʻa i ke kikowaena? Hāʻawi ia i nā memo hewa?
  • ʻIke palekana. Kaʻahele ma waena loadgen и kikowaena maalo wale HTTP aiʻole e mTLS?

Pane ʻo Istio i kēia mau nīnau a pau. No ka hana ʻana i kēia, kau ʻo Istio i kahi mea koho sidecar ʻelele i loko o kēlā me kēia pahu. Hoʻopili ka Envoy proxy i nā kaʻa komo a i waho i nā pahu noi. ʻO ia hoʻi kikowaena и loadgen loaʻa ma o sidecar proxy Envoy, a me nā kaʻa a pau mai loadgen к kikowaena e hele ana ma o ka Envoy proxy.

Hoʻohui ʻia nā pilina ma waena o nā proxies Envoy i kahi mesh lawelawe. Hāʻawi ka ʻenehana mesh lawelawe i kahi papa o ka mana ma luna o nā Kubernetes.

Ke hoʻomākaukau nei i kahi noi no Istio

Ma muli o ka holo ʻana o nā proxies Envoy i kā lākou mau pahu ponoʻī, hiki ke hoʻokomo ʻia ʻo Istio ma luna o kahi pūʻulu GKE me ka ʻaneʻane ʻaʻohe hoʻololi i ke code noi. Akā ua hana ʻoe i kahi hana e hoʻomākaukau ai i kāu noi e mālama ʻia e Istio:

  • Nā lawelawe no nā ipu a pau. I nā hoʻolaha kikowaena и loadgen pili i ka lawelawe Kubernetes. ʻOiai loadgen, ka mea i loaʻa ʻole i nā noi komo, aia kahi lawelawe.
  • Pono nā awa ma nā lawelawe e loaʻa nā inoa. ʻOiai hiki ke waiho inoa ʻole ʻia nā awa lawelawe ma GKE, koi ʻo Istio iā ʻoe e kuhikuhi inoa awa e like me kāna protocol. Ma ka waihona YAML ke awa no kikowaena kāheaʻia httpno ka mea, hoʻohana ke kikowaena i ka protocol HTTP. Ina hana hoʻohana ʻia gRPC, inoa ʻoe i ke awa grpc.
  • Hoʻopili ʻia nā hoʻolaha. No laila, hiki iā ʻoe ke hoʻohana i nā hiʻohiʻona hoʻokele kaʻa a Istio, e like me ka hoʻokaʻawale ʻana i ke kaʻa ma waena o nā mana o ka lawelawe like.

Hoʻokomo

ʻElua ala e hoʻokomo iā Istio. Hiki hiki iā Istio ma GKE hoʻonui ai ole ia, e hoʻokomo i ka mana open source o Istio ma ka pūʻulu. Me Istio ma GKE, hiki iā ʻoe ke hoʻokele maʻalahi i nā hoʻonohonoho ʻana a me nā hoʻomaikaʻi ʻana iā Istio i loko o ke ola holoʻokoʻa o ka pūʻulu GKE. Inā makemake ʻoe i ka mana hou loa o Istio a i ʻole ka mana ʻoi aku ma luna o kāu hoʻonohonoho hoʻonohonoho hoʻokele Istio, e hoʻokomo i ka mana open source ma kahi o ka Istio ma GKE hoʻonui. No ka hoʻoholo ʻana i ke ala, e heluhelu i ka ʻatikala Pono au iā Istio ma GKE?.

E koho i kahi koho, e nānā i ke alakaʻi kūpono, a e hahai i nā kuhikuhi e hoʻokomo iā Istio ma kāu hui. Inā makemake ʻoe e hoʻohana iā Istio me kāu noi hou i kau ʻia, hiki ke hoʻokō sidecar no ka papa inoa ka paʻamau.

Очистка

I mea e pale ʻole ʻia ai i kāu moʻokāki Google Cloud Platform no nā kumuwaiwai āu i hoʻohana ai i kēia kumu aʻoaʻo, e holoi i ka pūʻulu pahu i ka manawa āu i hoʻokomo ai iā Istio a pāʻani me ka noi laʻana. Hoʻopau kēia i nā kumuwaiwai cluster āpau, e like me nā helu helu, nā disks, a me nā kumuwaiwai pūnaewele.

He aha ka mea e hiki mai ana?

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka