Ngbaradi ohun elo fun Istio

Ngbaradi ohun elo fun Istio

Istio jẹ ohun elo irọrun fun sisopọ, aabo ati abojuto awọn ohun elo pinpin. Istio nlo ọpọlọpọ awọn imọ-ẹrọ lati ṣiṣẹ ati ṣakoso sọfitiwia ni iwọn, pẹlu awọn apoti si koodu ohun elo package ati awọn igbẹkẹle fun imuṣiṣẹ, ati Kubernetes lati ṣakoso awọn apoti yẹn. Nitorinaa, lati ṣiṣẹ pẹlu Istio o gbọdọ mọ bii ohun elo pẹlu awọn iṣẹ lọpọlọpọ ti o da lori awọn imọ-ẹrọ wọnyi ṣiṣẹ laisi Istio. Ti awọn irinṣẹ ati awọn imọran wọnyi ba ti mọ ọ tẹlẹ, lero ọfẹ lati foju ikẹkọ yii ki o lọ taara si apakan naa Fifi Istio sori ẹrọ Google Kubernetes (GKE) tabi fifi ohun itẹsiwaju Istio lori GKE.

Eyi jẹ itọsọna igbese-nipasẹ-igbesẹ nibiti a yoo rin nipasẹ gbogbo ilana lati koodu orisun si apoti GKE ki o le ni oye ipilẹ ti awọn imọ-ẹrọ wọnyi pẹlu apẹẹrẹ. Iwọ yoo tun rii bii Istio ṣe n lo agbara awọn imọ-ẹrọ wọnyi. Eyi dawọle pe o ko mọ ohunkohun nipa awọn apoti, Kubernetes, meshes iṣẹ, tabi Istio.

Awọn iṣẹ-ṣiṣe

Ninu ikẹkọ yii, iwọ yoo pari awọn iṣẹ ṣiṣe wọnyi:

  1. Kọ ẹkọ ohun elo agbaye hello ti o rọrun pẹlu awọn iṣẹ lọpọlọpọ.
  2. Ṣiṣe awọn ohun elo lati orisun koodu.
  3. Iṣakojọpọ ohun elo ninu awọn apoti.
  4. Ṣiṣẹda iṣupọ Kubernetes.
  5. Gbigbe awọn apoti sinu iṣupọ kan.

Ṣaaju ki o to bẹrẹ

Tẹle awọn ilana lati mu Kubernetes Engine API ṣiṣẹ:

  1. Lọ si Kubernetes Engine iwe ni Google Cloud Platform console.
  2. Ṣẹda tabi yan ise agbese kan.
  3. Duro titi API ati awọn iṣẹ ti o jọmọ yoo mu ṣiṣẹ. Eyi le gba to iṣẹju diẹ.
  4. Rii daju pe a ṣeto ìdíyelé fun iṣẹ akanṣe Google Cloud Platform rẹ. Kọ ẹkọ bi o ṣe le mu ìdíyelé ṣiṣẹ.

Ninu ikẹkọ yii, o le lo Cloud Shell, eyiti o mura ẹrọ foju g1-kekere ni Google oniṣiro Engine pẹlu Lainos ti o da lori Debian, tabi Linux tabi kọnputa macOS.

Aṣayan A: Lilo Ikarahun Awọsanma

Awọn anfani ti lilo Cloud Shell:

  • Python 2 ati Python 3 awọn agbegbe idagbasoke (pẹlu virtualenv) ti wa ni tunto ni kikun.
  • Òfin Line Tools gcloud, docker, Git и kubectl, eyi ti a yoo lo ti wa ni fifi sori ẹrọ tẹlẹ.
  • O ni orisirisi lati yan lati ọrọ olootu:
    1. Olootu koodu, eyiti o ṣii pẹlu aami satunkọ ni oke ti window Cloud Shell.
    2. Emacs, Vim tabi Nano, eyiti o ṣii lati laini aṣẹ ni Cloud Shell.

Lati lo Awọsanma ikarahun:

  1. Lọ si GCP console.
  2. Tẹ bọtini naa Mu ikarahun awọsanma ṣiṣẹ (Mu Ikarahun Awọsanma ṣiṣẹ) ni oke ti window console GCP.

Ngbaradi ohun elo fun Istio

Ni apa isalẹ GCP console Igba Ikarahun Awọsanma pẹlu laini aṣẹ yoo ṣii ni window tuntun kan.

Ngbaradi ohun elo fun Istio

Aṣayan B: Lilo Awọn irinṣẹ Laini Aṣẹ Ni agbegbe

Ti o ba n ṣiṣẹ lori kọnputa ti n ṣiṣẹ Linux tabi macOS, iwọ yoo nilo lati tunto ati fi awọn paati wọnyi sori ẹrọ:

  1. Ṣe akanṣe Python 3 ati Python 2 ayika idagbasoke.

  2. Fi Cloud SDK sori ẹrọ pẹlu pipaṣẹ ila ọpa gcloud.

  3. Fi sori ẹrọ kubectl - ọpa laini aṣẹ fun ṣiṣẹ pẹlu Kubernetes.

    gcloud components install kubectl

  4. Fi sori ẹrọ Ẹda Agbegbe Docker (CE). Iwọ yoo lo ọpa laini aṣẹ dockerlati ṣẹda awọn aworan apoti fun ohun elo apẹẹrẹ.

  5. Fi sori ẹrọ ni ọpa Iṣakoso ẹya Gitlati gba ohun elo apẹẹrẹ lati GitHub.

Ṣe igbasilẹ koodu apẹẹrẹ

  1. Ṣe igbasilẹ koodu orisun helloserver:

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

  2. Lọ si itọsọna koodu apẹẹrẹ:

    cd istio-samples/sample-apps/helloserver

Ṣiṣayẹwo ohun elo pẹlu awọn iṣẹ lọpọlọpọ

Ohun elo apẹẹrẹ ni kikọ ni Python ati pe o ni awọn paati meji ti o nlo pẹlu lilo REST:

  • server: o rọrun olupin pẹlu ọkan endpoint GBA, /, eyi ti o tẹ "hello aye" si console.
  • fifuye: akosile ti o rán ijabọ si server, pẹlu nọmba atunto ti awọn ibeere fun iṣẹju kan.

Ngbaradi ohun elo fun Istio

Nṣiṣẹ ohun elo lati koodu orisun

Lati ṣawari ohun elo apẹẹrẹ, ṣiṣẹ ni Cloud Shell tabi lori kọnputa rẹ.
1) Ni awọn katalogi istio-samples/ayẹwo-apps/helloserver sure server:

python3 server/server.py

Ni ibẹrẹ server awọn atẹle ti han:

INFO:root:Starting server...

2) Ṣii window ebute miiran lati firanṣẹ awọn ibeere si server. Ti o ba nlo ikarahun awọsanma, tẹ aami fikun lati ṣii igba miiran.
3) Fi ibeere ranṣẹ si server:

curl http://localhost:8080

idahun olupin:

Hello World!

4) Lati inu itọsọna nibiti o ti ṣe igbasilẹ koodu apẹẹrẹ, lọ si itọsọna ti o ni fifuye:

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

5) Ṣẹda awọn oniyipada ayika wọnyi:

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

6) Ṣiṣe virtualenv:

virtualenv --python python3 env

7) Mu agbegbe foju ṣiṣẹ:

source env/bin/activate

8) Ṣeto awọn ibeere fun fifuye:

pip3 install -r requirements.txt

9) Ṣiṣe fifuye:

python3 loadgen.py

Ni ibẹrẹ fifuye ṣe afihan nkan bi ifiranṣẹ atẹle:

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

Ni miiran ebute window server ṣejade awọn ifiranṣẹ wọnyi si 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: */*

Lati irisi Nẹtiwọọki, gbogbo ohun elo nṣiṣẹ lori ogun kan (kọmputa agbegbe tabi Cloud Shell foju ẹrọ). Nitorina o le lo localhostlati firanṣẹ awọn ibeere si server.
10) Lati duro fifuye и server, wọle Konturolu-c ni gbogbo ebute window.
11) Ni awọn ebute window fifuye ma mu agbegbe foju ṣiṣẹ:

deactivate

Iṣakojọpọ ohun elo ninu awọn apoti

Lati ṣiṣẹ ohun elo lori GKE, o nilo lati ṣajọ ohun elo apẹẹrẹ - server и fifuye - ninu awọn apoti. Apoti jẹ ọna lati ṣajọ ohun elo kan lati ya sọtọ si agbegbe rẹ.

Lati ṣajọ ohun elo kan sinu apoti kan, o nilo dockerfile. dockerfile jẹ faili ọrọ ti o ṣalaye awọn aṣẹ fun kikọ koodu orisun ohun elo ati awọn igbẹkẹle rẹ sinu Docker aworan. Ni kete ti a kọ, o gbe aworan naa si iforukọsilẹ eiyan gẹgẹbi Docker Hub tabi Apoti iforukọsilẹ.

Apẹẹrẹ ti wa tẹlẹ dockerfile fun server и fifuye pẹlu gbogbo awọn ofin pataki lati gba awọn aworan. Ni isalẹ - dockerfile fun server:

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

  • Egbe LATI Python: 3-slim bi ipilẹ sọ fun Docker lati lo tuntun Python 3 aworan bi ipilẹ.
  • Egbe DAADA. . daakọ awọn faili orisun si itọsọna iṣẹ lọwọlọwọ (ninu ọran wa nikan olupin.py) si eto faili eiyan naa.
  • OPO iwọle asọye aṣẹ ti o ti lo lati bẹrẹ awọn eiyan. Ninu ọran wa, aṣẹ yii fẹrẹ jẹ kanna bii eyiti o lo lati ṣiṣẹ olupin.py lati orisun koodu.
  • Egbe ṢEYA tọkasi wipe server nduro fun data nipasẹ ibudo 8080. Ẹgbẹ yii kii ṣe pese awọn ibudo. Eyi jẹ iru iwe kan ti o nilo lati ṣii ibudo naa 8080 nigbati o bere eiyan.

Ngbaradi lati gba ohun elo rẹ sinu apoti

1) Ṣeto awọn oniyipada ayika wọnyi. Rọpo PROJECT_ID si ID iṣẹ akanṣe GCP rẹ.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Lilo awọn iye PROJECT_ID и GCR_REPO o fi aami si aworan Docker nigbati o kọ ọ ki o si Titari si Iforukọsilẹ Apoti ikọkọ.

2) Ṣeto iṣẹ akanṣe GCP aiyipada fun ọpa laini aṣẹ gcloud.

gcloud config set project $PROJECT_ID

3) Ṣeto agbegbe aifọwọyi fun ọpa laini aṣẹ gcloud.

gcloud config set compute/zone us-central1-b

4) Rii daju pe iṣẹ Iforukọsilẹ Apoti ti ṣiṣẹ ni iṣẹ akanṣe GCP.

gcloud services enable containerregistry.googleapis.com

Olupin ifipamọ

  1. Lọ si liana nibiti apẹẹrẹ wa server:

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

  2. Ṣe akojọpọ aworan ni lilo dockerfile ati awọn oniyipada ayika ti o ṣalaye tẹlẹ:

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

Apaadi -t duro Docker tag. Eyi ni orukọ aworan ti o lo nigbati o ba n gbe apoti naa lọ.

  1. Po si aworan si Iforukọsilẹ Apoti:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Containerization ti loadgen

1) Lọ si liana nibiti apẹẹrẹ wa fifuye:

cd ../loadgen

2) Gba aworan naa:

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

3) Ṣe agbejade aworan naa si Iforukọsilẹ Apoti:

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

Wo atokọ ti awọn aworan

Ṣe atunyẹwo atokọ ti awọn aworan inu ibi ipamọ ki o rii daju pe a ti gbe awọn aworan naa silẹ:

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

Aṣẹ naa ṣafihan awọn orukọ ti awọn aworan ti a gbejade tuntun:

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

Ṣiṣẹda iṣupọ GKE.

Awọn apoti wọnyi le ṣee ṣiṣẹ lori ẹrọ foju Cloud Shell tabi lori kọnputa pẹlu aṣẹ naa ṣiṣe docker. Ṣugbọn ni agbegbe iṣelọpọ, o nilo ọna kan lati ṣe agbejade awọn apoti aarin. Fun apẹẹrẹ, o nilo eto kan ti o rii daju pe awọn apoti n ṣiṣẹ nigbagbogbo, ati pe o nilo ọna lati ṣe iwọn si oke ati yiyi awọn apẹẹrẹ apoti afikun ti ijabọ ba pọ si.

Lati ṣiṣe awọn ohun elo ti a fi sinu apoti o le lo G.K.E.. GKE jẹ pẹpẹ orchestration ti eiyan ti o ṣajọpọ awọn ẹrọ foju sinu iṣupọ kan. Kọọkan foju ẹrọ ni a npe ni a ipade. Awọn iṣupọ GKE da lori orisun ṣiṣi Kubernetes eto iṣakoso iṣupọ. Kubernetes n pese awọn ọna ṣiṣe fun ibaraenisepo pẹlu iṣupọ.

Ṣiṣẹda iṣupọ GKE kan:

1) Ṣẹda iṣupọ kan:

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

Egbe gcloud ṣẹda iṣupọ istioready ninu iṣẹ akanṣe GCP ati agbegbe aifọwọyi ti o pato. Lati ṣiṣẹ Istio, a ṣeduro nini o kere ju awọn apa 4 ati ẹrọ foju kan n1-boṣewa-2.

Ẹgbẹ naa ṣẹda iṣupọ ni iṣẹju diẹ. Nigbati iṣupọ naa ba ti ṣetan, aṣẹ naa ṣejade nkan bii eyi ifiranṣẹ.

2) Pese awọn iwe-ẹri ninu ọpa laini aṣẹ kubectllati lo lati ṣakoso iṣupọ:

gcloud container clusters get-credentials istioready

3) Bayi o le ṣe ibasọrọ pẹlu Kubernetes nipasẹ kubectl. Fun apẹẹrẹ, aṣẹ atẹle le wa ipo ti awọn apa:

kubectl get nodes

Aṣẹ naa ṣe agbejade atokọ ti awọn apa:

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 Key agbekale

Aworan naa fihan ohun elo kan lori GKE:

Ngbaradi ohun elo fun Istio

Ṣaaju ki o to ran awọn apoti ni GKE, kọ ẹkọ awọn imọran bọtini ti Kubernetes. Awọn ọna asopọ wa ni ipari pupọ ti o ba fẹ kọ ẹkọ diẹ sii.

  • Awọn apa ati awọn iṣupọ. Ni GKE, ipade kan jẹ ẹrọ foju. Lori awọn iru ẹrọ Kubernetes miiran, ipade le jẹ kọnputa tabi ẹrọ foju kan. Iṣupọ kan jẹ akojọpọ awọn apa ti o le gbero ẹyọkan kan nibiti o ti gbe ohun elo ti a fi sinu apo silẹ.
  • Podu. Ni Kubernetes, awọn apoti nṣiṣẹ ni awọn podu. Pod kan ni Kubernetes jẹ ẹyọ ti a ko le pin. Pod kan mu ọkan tabi diẹ sii awọn apoti. O ran awọn apoti olupin ati fifuye ni lọtọ pods. Nigbati ọpọlọpọ awọn apoti ba wa ninu podu (fun apẹẹrẹ, olupin ohun elo ati aṣoju olupin), awọn apoti ti wa ni iṣakoso bi ẹyọkan ati pin awọn orisun podu.
  • Awọn imuṣiṣẹ. Ni Kubernetes, imuṣiṣẹ jẹ nkan ti o jẹ akojọpọ awọn adarọ-ese kanna. Imuṣiṣẹ ṣe ifilọlẹ awọn ẹda pupọ ti awọn adarọ-ese ti a pin kaakiri awọn apa iṣupọ. Ifilọlẹ laifọwọyi rọpo awọn adarọ-ese ti o kuna tabi ti ko dahun.
  • Kubernetes iṣẹ. Nigbati o ba nṣiṣẹ koodu ohun elo ni GKE, asopọ laarin fifuye и server. Nigbati o bẹrẹ awọn iṣẹ lori ẹrọ foju Cloud Shell tabi tabili tabili, o fi awọn ibeere ranṣẹ si server nipasẹ adirẹsi Agbegbe: 8080. Ni kete ti o ti gbe lọ si GKE, awọn adarọ-ese yoo ṣiṣẹ lori awọn apa ti o wa. Nipa aiyipada, o ko ni iṣakoso lori iru ipade ti podu naa nṣiṣẹ lori, nitorinaa iwọ awọn podu ko si yẹ IP adirẹsi.
    Lati gba adiresi IP kan fun server, o nilo lati setumo abstraction nẹtiwọki kan lori oke awọn adarọ-ese. Ohun ti o jẹ Kubernetes iṣẹ. Iṣẹ Kubernetes n pese aaye ipari itẹramọṣẹ fun ṣeto awọn adarọ-ese. Diẹ wa orisi ti awọn iṣẹ. server awọn lilo LoadBalancer, eyiti o pese adiresi IP ita lati kan si server lati ita iṣupọ.
    Kubernetes tun ni eto DNS ti a ṣe sinu ti o yan awọn orukọ DNS (fun apẹẹrẹ, helloserver.default.cluster.local) awọn iṣẹ. Ṣeun si eyi, awọn adarọ-ese laarin iṣupọ ṣe ibasọrọ pẹlu awọn adarọ-ese miiran ninu iṣupọ ni adirẹsi ayeraye. Orukọ DNS ko le ṣee lo ni ita iṣupọ, gẹgẹbi ninu Cloud Shell tabi lori kọnputa kan.

Kubernetes farahan

Nigbati o ba ṣiṣẹ ohun elo lati orisun, o lo aṣẹ pataki Python3

olupin.py

Imperative tumọ si ọrọ-ìse kan: “Ṣe eyi.”

Kubernetes nlo awoṣe declarative. Eyi tumọ si pe a ko sọ fun Kubernetes gangan kini lati ṣe, ṣugbọn kuku ṣe apejuwe ipo ti o fẹ. Fun apẹẹrẹ, Kubernetes bẹrẹ ati duro awọn adarọ-ese bi o ṣe nilo lati tọju ipo gangan ti eto naa ni ibamu pẹlu ipo ti o fẹ.

O tọkasi ipo ti o fẹ ninu awọn ifihan tabi awọn faili YAML. Faili YAML ni awọn pato ninu fun ọkan tabi diẹ ẹ sii awọn nkan Kubernetes.

Apẹẹrẹ ni faili YAML kan fun server и fifuye. Faili YAML kọọkan n ṣalaye ipo ti o fẹ ti ohun imuṣiṣẹ ati iṣẹ Kubernetes.

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

  • Iru tọkasi iru nkan naa.
  • metadata.orukọ pato orukọ imuṣiṣẹ.
  • Aaye akọkọ Ami ni apejuwe ti ipinle ti o fẹ.
  • spec.replicas tọkasi awọn ti o fẹ nọmba ti pods.
  • Abala spec.awoṣe asọye a podu awoṣe. Aaye kan wa ninu sipesifikesonu podu image, eyi ti o ṣe apejuwe orukọ aworan ti yoo fa jade lati Iforukọsilẹ Apoti.

Iṣẹ naa jẹ asọye bi atẹle:

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

  • LoadBalancer: Awọn onibara fi awọn ibeere ranṣẹ si adiresi IP ti olutọju fifuye, eyiti o ni adiresi IP ti o duro ati pe o wa lati ita iṣupọ.
  • afojusunPort: bi o ṣe ranti, ẹgbẹ naa EXPOSE 8080 в dockerfile ko pese awọn ibudo. O pese ibudo naa 8080ki o le kan si awọn eiyan server ita iṣupọ. Ninu ọran tiwa helosvc.default.cluster.agbegbe:80 (orukọ kukuru: helosvc) ni ibamu si ibudo 8080 Pod IP adirẹsi helloserver.
  • ibudo: Eyi ni nọmba ibudo nibiti awọn iṣẹ miiran ninu iṣupọ yoo fi awọn ibeere ranṣẹ.

fifuye.yaml

Ohun imuṣiṣẹ si fifuye.yaml o jo olupin.yaml. Iyatọ ni pe ohun imuṣiṣẹ ni apakan kan env. O ṣe asọye awọn oniyipada ayika ti o nilo fifuye ati eyiti o fi sii nigbati o nṣiṣẹ ohun elo lati orisun.

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

Aago fifuye ko gba awọn ibeere ti nwọle, fun aaye naa iru itọkasi Àkópọ̀ IP. Iru yii n pese adiresi IP itẹramọṣẹ ti awọn iṣẹ inu iṣupọ le lo, ṣugbọn adiresi IP yii ko farahan si awọn alabara ita.

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

Gbigbe Awọn apoti ni GKE

1) Lọ si liana nibiti apẹẹrẹ wa server:

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

2) Ṣii olupin.yaml ni a ọrọ olootu.
3) Rọpo orukọ ni aaye image si orukọ aworan Docker rẹ.

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

Rọpo PROJECT_ID si ID iṣẹ akanṣe GCP rẹ.
4) Fipamọ ati sunmọ olupin.yaml.
5) Mu faili YAML lọ si Kubernetes:

kubectl apply -f server.yaml

Ni ipari aṣeyọri, aṣẹ naa ṣe agbejade koodu atẹle:

deployment.apps/helloserver created
service/hellosvc created

6) Lọ si liana nibiti fifuye:

cd ../loadgen

7) Ṣii fifuye.yaml ni a ọrọ olootu.
8) Rọpo orukọ ni aaye image si orukọ aworan Docker rẹ.

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

Rọpo PROJECT_ID si ID iṣẹ akanṣe GCP rẹ.
9) Fipamọ ati sunmọ fifuye.yaml, pa olootu ọrọ.
10) Mu faili YAML lọ si Kubernetes:

kubectl apply -f loadgen.yaml

Ni ipari aṣeyọri, aṣẹ naa ṣe agbejade koodu atẹle:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Ṣayẹwo ipo ti awọn podu:

kubectl get pods

Ilana naa fihan ipo naa:

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

12) Jade awọn iwe ohun elo lati podu fifuye. Rọpo POD_ID si idamo lati idahun ti tẹlẹ.

kubectl logs loadgenerator-POD_ID

13) Gba awọn adiresi IP ita helosvc:

kubectl get service

Idahun aṣẹ naa dabi iru eyi:

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) Fi ibeere ranṣẹ si helosvc: ropo EXTERNAL_IP si ita IP adirẹsi helosvc.

curl http://EXTERNAL_IP

Jẹ ká ya lori Istio

O ti ni ohun elo kan ti a fi ranṣẹ si GKE. fifuye le lo Kubernetes DNS (helosvc:80) lati firanṣẹ awọn ibeere si serverati pe o le firanṣẹ awọn ibeere si server nipasẹ ita IP adirẹsi. Botilẹjẹpe Kubernetes ni awọn ẹya pupọ, alaye diẹ wa ti o padanu nipa awọn iṣẹ naa:

  • Bawo ni awọn iṣẹ ṣe nlo? Kini awọn ibatan laarin awọn iṣẹ? Bawo ni ijabọ ṣiṣan laarin awọn iṣẹ? Ṣe o mọ pe fifuye rán ibeere lati server, ṣugbọn fojuinu pe o ko mọ ohunkohun nipa ohun elo naa. Lati dahun ibeere wọnyi, jẹ ki a wo atokọ ti awọn adarọ-ese ti nṣiṣẹ ni GKE.
  • Awọn iwọn. Bawo lo se gun to server ṣe idahun si ibeere ti nwọle? Awọn ibeere melo ni iṣẹju-aaya ni olupin gba? Ṣe o fun awọn ifiranṣẹ aṣiṣe?
  • Aabo Alaye. Traffic laarin fifuye и server o kan kọja HTTP tabi nipasẹ mTLS?

Istio dahun gbogbo awọn ibeere wọnyi. Lati ṣe eyi, Istio gbe aṣoju ẹgbẹ ẹgbẹ kan envoy ninu kọọkan podu. Aṣoju aṣoju Aṣoju n ṣe idiwọ gbogbo awọn ijabọ ti nwọle ati ti njade si awọn apoti ohun elo. Iyẹn tumọ si server и fifuye gba nipasẹ sidecar aṣoju Envoy, ati gbogbo awọn ijabọ lati fifuye к server lọ nipasẹ awọn aṣoju aṣoju.

Awọn isopọ laarin awọn aṣoju Aṣoju ṣe agbekalẹ iṣẹ kan. Awọn faaji apapo iṣẹ pese Layer ti iṣakoso lori oke Kubernetes.

Ngbaradi ohun elo fun Istio

Niwọn igba ti awọn aṣoju aṣoju nṣiṣẹ ninu awọn apoti tiwọn, Istio le fi sori ẹrọ lori oke iṣupọ GKE pẹlu fere ko si awọn ayipada si koodu ohun elo. Ṣugbọn o ti ṣe diẹ ninu awọn iṣẹ lati jẹ ki ohun elo rẹ ṣetan lati ṣakoso nipasẹ Istio:

  • Awọn iṣẹ fun gbogbo awọn apoti. Si awọn imuṣiṣẹ server и fifuye ti so lati Kubernetes iṣẹ. Paapaa fifuye, ti ko gba awọn ibeere ti nwọle, iṣẹ kan wa.
  • Awọn ibudo ni awọn iṣẹ gbọdọ ni awọn orukọ. Botilẹjẹpe a le fi awọn ibudo iṣẹ silẹ laigba orukọ ni GKE, Istio nilo ki o pato ibudo orukọ ni ibamu pẹlu ilana rẹ. Ninu faili YAML ibudo fun server ti a npe ni httpnitori olupin nlo ilana naa HTTP... Ti iṣẹ lo gRPC, o yoo lorukọ ibudo grpc.
  • Awọn imuṣiṣẹ ti wa ni ifihan. Nitorinaa, o le lo awọn ẹya iṣakoso ijabọ Istio, gẹgẹbi pipin ijabọ laarin awọn ẹya ti iṣẹ kanna.

Fifi sori Istio

Awọn ọna meji lo wa lati fi sori ẹrọ Istio. Le jeki Istio on GKE itẹsiwaju tabi fi sori ẹrọ ẹya orisun ṣiṣi ti Istio lori iṣupọ. Pẹlu Istio lori GKE, o le ni rọọrun ṣakoso awọn fifi sori ẹrọ Istio ati awọn iṣagbega jakejado igbesi aye iṣupọ GKE. Ti o ba fẹ ẹya tuntun ti Istio tabi iṣakoso diẹ sii lori iṣeto iṣakoso Istio rẹ, fi ẹya orisun ṣiṣi sori ẹrọ dipo Istio lori itẹsiwaju GKE. Lati pinnu lori ọna, ka nkan naa Ṣe Mo nilo Istio lori GKE?.

Yan aṣayan kan, ṣayẹwo itọsọna ti o yẹ, ki o tẹle awọn ilana lati fi Istio sori iṣupọ rẹ. Ti o ba fẹ lo Istio pẹlu ohun elo tuntun ti a fi ranṣẹ, jeki sidecar imuse fun aaye orukọ aiyipada.

Ninu

Lati yago fun gbigba agbara si akọọlẹ Google Cloud Platform rẹ fun awọn orisun ti o lo ninu ikẹkọ yii, paarẹ iṣupọ eiyan ni kete ti o ti fi Istio sori ẹrọ ati ṣere pẹlu ohun elo apẹẹrẹ. Eyi yoo yọ gbogbo awọn orisun iṣupọ kuro, gẹgẹbi awọn iṣẹlẹ iṣiro, awọn disiki, ati awọn orisun nẹtiwọki.

Ohun ti ni tókàn?

orisun: www.habr.com

Fi ọrọìwòye kun