Npaj daim ntawv thov rau Istio

Npaj daim ntawv thov rau Istio

Istio yog ib qho cuab yeej yooj yim rau kev sib txuas, ruaj ntseg thiab saib xyuas cov ntawv thov sib faib. Istio siv ntau yam thev naus laus zis los khiav thiab tswj software ntawm qhov ntsuas, suav nrog cov thawv ntim rau pob daim ntawv thov code thiab kev vam khom rau kev xa tawm, thiab Kubernetes los tswj cov ntim ntawd. Yog li ntawd, ua haujlwm nrog Istio koj yuav tsum paub tias daim ntawv thov nrog ntau cov kev pabcuam raws li cov thev naus laus zis no ua haujlwm li cas tsis muaj Istio. Yog tias cov cuab yeej thiab cov ntsiab lus no twb paub rau koj lawm, xav tias dawb hla qhov kev qhia no thiab mus ncaj nraim mus rau ntu Txhim kho Istio ntawm Google Kubernetes Cav (GKE) los yog txhim kho qhov txuas ntxiv Qhov tseem ceeb ntawm GKE.

Nov yog cov lus qhia ib kauj ruam dhau los uas peb yuav taug kev los ntawm tag nrho cov txheej txheem los ntawm qhov chaws mus rau GKE thawv kom koj tau txais kev nkag siab yooj yim ntawm cov thev naus laus zis nrog piv txwv. Koj tseem yuav pom tias Istio leverages lub zog ntawm cov thev naus laus zis li cas. Qhov no xav tias koj tsis paub dab tsi txog cov thawv, Kubernetes, kev pabcuam meshes, lossis Istio.

paub tab

Hauv qhov kev qhia no, koj yuav ua tiav cov haujlwm hauv qab no:

  1. Kawm ib daim ntawv thov nyob zoo ntiaj teb yooj yim nrog ntau yam kev pabcuam.
  2. Khiav daim ntawv thov los ntawm qhov chaws.
  3. Ntim daim ntawv thov hauv ntim.
  4. Tsim ib pawg Kubernetes.
  5. Deploying ntim rau hauv ib pawg.

Ua ntej koj pib

Ua raws li cov lus qhia kom qhib Kubernetes Engine API:

  1. Mus rau Kubernetes Engine page hauv Google Cloud Platform console.
  2. Tsim lossis xaiv ib qhov project.
  3. Tos kom txog thaum API thiab cov kev pabcuam cuam tshuam tau qhib. Qhov no yuav siv li ob peb feeb.
  4. Xyuas kom tseeb tias kev them nqi raug teeb tsa rau koj qhov project Google Cloud Platform. Kawm paub yuav ua li cas kom tau txais kev them nqi.

Hauv qhov kev qhia no, koj tuaj yeem siv Cloud Plhaub, uas npaj lub tshuab virtual g1-me me hauv Google Compute Cav nrog Debian-based Linux, lossis Linux lossis macOS computer.

Kev xaiv A: Siv Huab Plhaub

Cov txiaj ntsig ntawm kev siv Cloud Shell:

  • Python 2 thiab Python 3 kev txhim kho ib puag ncig (nrog rau virtualenv) yog configured tag nrho.
  • Cov cuab yeej hais kom ua kab gcloud ua, docker, git ΠΈ kubtl ua, uas peb yuav siv yog twb ntsia.
  • Koj muaj ob peb xaiv los ntawm cov ntawv nyeem:
    1. Code editor, uas qhib nrog cov hloov kho icon nyob rau sab saum toj ntawm Huab Plhaub qhov rai.
    2. Emacs, Vim lossis Nano, uas qhib los ntawm kab hais kom ua hauv Huab Plhaub.

Siv Huab Plhaub:

  1. Mus rau GCP console.
  2. xovxwm Qhib Cloud Plhaub (Ua kom huab Plhaub) nyob rau sab saum toj ntawm GCP console qhov rai.

Npaj daim ntawv thov rau Istio

Hauv qab GCP console Kev sib tham Cloud Plhaub nrog cov kab hais kom ua yuav qhib rau hauv lub qhov rais tshiab.

Npaj daim ntawv thov rau Istio

Kev xaiv B: Siv cov cuab yeej hais kom ua hauv zos

Yog tias koj yuav ua haujlwm ntawm lub khoos phis tawj khiav Linux lossis macOS, koj yuav tsum tau teeb tsa thiab nruab cov khoom hauv qab no:

  1. Customize Python 3 thiab Python 2 kev txhim kho ib puag ncig.

  2. Nruab Cloud SDK nrog cov cuab yeej hais kom ua kab gcloud ua.

  3. Teeb kubtl ua - hais kom ua kab cuab yeej rau kev ua haujlwm nrog Kubernetes.

    gcloud components install kubectl

  4. Teeb Docker Community Edition (CE). Koj yuav siv cov kab hais kom ua dockerlos tsim cov duab ntim rau cov qauv ntawv thov.

  5. Nruab lub cuab yeej Git version tswjkom tau txais cov qauv ntawv thov los ntawm GitHub.

Download tau tus qauv code

  1. Download tau qhov chaws nyob zoo:

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

  2. Mus rau qhov piv txwv code directory:

    cd istio-samples/sample-apps/helloserver

Tshawb nrhiav ib daim ntawv thov nrog ntau yam kev pabcuam

Daim ntawv thov qauv yog sau rau hauv Python thiab muaj ob yam uas cuam tshuam nrog kev siv SO:

  • neeg rau zaub mov: yooj yim server nrog ib qho kawg TAU, /, uas luam tawm "nyob zoo ntiaj teb" rau lub console.
  • loadgen: tsab ntawv uas xa mus rau neeg rau zaub mov, nrog tus lej configurable ntawm kev thov ib ob.

Npaj daim ntawv thov rau Istio

Khiav ib daim ntawv thov los ntawm qhov chaws

Txhawm rau tshawb nrhiav tus qauv thov, khiav nws hauv Cloud Shell lossis hauv koj lub computer.
1) Hauv catalog istio-samples/sample-apps/helloserver khiav neeg rau zaub mov:

python3 server/server.py

Thaum pib neeg rau zaub mov cov hauv qab no yog tso tawm:

INFO:root:Starting server...

2) Qhib lwm lub qhov rais davhlau ya nyob twg xa cov lus thov mus rau neeg rau zaub mov. Yog tias koj siv Cloud Plhaub, nyem lub cim ntxiv kom qhib lwm qhov kev sib tham.
3) Xa ib daim ntawv thov rau neeg rau zaub mov:

curl http://localhost:8080

server teb:

Hello World!

4) Los ntawm cov npe uas koj rub tawm cov qauv code, mus rau cov npe uas muaj loadgen:

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

5) Tsim cov kev hloov pauv ib puag ncig hauv qab no:

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

6) Launch virtualenv:

virtualenv --python python3 env

7) Qhib ib puag ncig virtual:

source env/bin/activate

8) Teem cov kev cai rau loadgen:

pip3 install -r requirements.txt

9) Launch loadgen:

python3 loadgen.py

Thaum pib loadgen qhia tej yam zoo li cov lus hauv qab no:

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

Hauv lwm qhov rai qhov rai neeg rau zaub mov outputs cov lus hauv qab no rau lub 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: */*

Los ntawm kev pom kev sib tham, tag nrho daim ntawv thov khiav ntawm ib tus tswv tsev (lub computer hauv zos lossis Cloud Shell virtual tshuab). Yog li koj tuaj yeem siv localhostxa cov lus thov rau neeg rau zaub mov.
10) nres loadgen ΠΈ neeg rau zaub mov, nkag Ctrl-c nyob rau hauv txhua lub qhov rais terminal.
11) Nyob rau hauv lub qhov rais terminal loadgen deactivate lub virtual ib puag ncig:

deactivate

Ntim ib daim ntawv thov hauv ntim

Txhawm rau khiav daim ntawv thov ntawm GKE, koj yuav tsum tau ntim cov qauv daim ntawv thov βˆ’ neeg rau zaub mov ΠΈ loadgen - ntawm ntim. Lub thawv yog ib txoj hauv kev los ntim daim ntawv thov kom cais tawm ntawm nws ib puag ncig.

Txhawm rau ntim daim ntawv thov rau hauv lub thawv, koj xav tau Dockerfile. Dockerfile yog cov ntawv nyeem uas txhais cov lus txib rau kev tsim daim ntawv thov lub hauv paus code thiab nws cov dependencies rau hauv Docker duab. Thaum tsim tau, koj muab cov duab tso rau hauv lub thawv sau npe xws li Docker Hub lossis Container Registry.

Qhov piv txwv twb muaj Dockerfile rau neeg rau zaub mov ΠΈ loadgen nrog tag nrho cov lus txib tsim nyog los sau cov duab. Hauv qab no - Dockerfile rau neeg rau zaub mov:

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

  • pab neeg Los ntawm python: 3-slim as base qhia Docker kom siv qhov tseeb Python 3 duab raws li lub hauv paus.
  • pab neeg COPY. . luam cov ntaub ntawv los ntawm cov ntaub ntawv ua haujlwm tam sim no (hauv peb rooj plaub nkaus xwb server.py) mus rau lub thawv ntim cov ntaub ntawv system.
  • ENTRYPOINT txhais cov lus txib uas siv los pib lub thawv. Hauv peb cov ntaub ntawv, cov lus txib no yuav luag zoo ib yam li qhov koj tau siv los khiav server.py los ntawm qhov chaws.
  • pab neeg EXPOSE qhia tias neeg rau zaub mov tos cov ntaub ntawv los ntawm qhov chaw nres nkoj 8080. Pab neeg no tsis yog muab cov chaw nres nkoj. Nov yog qee yam ntaub ntawv uas xav tau los qhib qhov chaw nres nkoj 8080 thaum pib lub thawv.

Npaj kom ntim koj daim ntawv thov

1) Teem cov kev hloov pauv ib puag ncig hauv qab no. Hloov PROJECT_ID rau koj tus GCP project ID.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Siv tus nqi PROJECT_ID ΠΈ GCR_REPO koj tag cov duab Docker thaum koj tsim nws thiab thawb nws mus rau lub Thawv Registry ntiag tug.

2) Teem lub neej ntawd GCP project rau cov cuab yeej kab hais kom ua gcloud ua.

gcloud config set project $PROJECT_ID

3) Teem lub default zone rau cov kab hais kom ua gcloud ua.

gcloud config set compute/zone us-central1-b

4) Nco ntsoov tias qhov kev pabcuam Thawv Sau Npe tau qhib rau hauv GCP qhov project.

gcloud services enable containerregistry.googleapis.com

Containerization server

  1. Mus rau hauv phau ntawv qhia qhov piv txwv nyob neeg rau zaub mov:

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

  2. Sib sau cov duab siv Dockerfile thiab qhov hloov pauv ib puag ncig koj tau txhais ua ntej:

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

Parameter -t sawv cev rau Docker tag. Qhov no yog lub npe ntawm daim duab uas koj siv thaum siv lub thawv.

  1. Upload duab mus rau lub Thawv Registry:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Containerization ntawm loadgen

1) Mus rau hauv phau ntawv qhia qhov piv txwv nyob loadgen:

cd ../loadgen

2) Sau cov duab:

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

3) Upload duab mus rau lub Thawv Registry:

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

Saib daim ntawv teev cov duab

Tshawb xyuas cov npe ntawm cov duab hauv qhov chaw khaws cia thiab xyuas kom meej tias cov duab tau muab tso rau:

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

Cov lus txib qhia cov npe ntawm cov duab uas nyuam qhuav upload tshiab:

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

Tsim ib pawg GKE.

Cov thawv no tuaj yeem khiav ntawm Cloud Shell virtual tshuab lossis hauv computer nrog cov lus txib docker khiav. Tab sis nyob rau hauv ib puag ncig kev tsim khoom, koj xav tau ib txoj hauv kev rau hauv nruab nrab orchestrate ntim. Piv txwv li, koj xav tau ib qho system uas ua kom cov thawv ntim ib txwm khiav, thiab koj xav tau ib txoj hauv kev los ntsuas thiab tig cov thawv ntxiv yog tias muaj tsheb thauj mus los.

Txhawm rau khiav cov ntawv thov ntim khoom koj tuaj yeem siv G.K.E.. GKE yog lub thawv orchestration platform uas sib sau cov tshuab virtual rau hauv pawg. Txhua lub tshuab virtual hu ua node. GKE pawg yog raws li qhib qhov chaw Kubernetes pawg tswj hwm. Kubernetes muab cov txheej txheem rau kev cuam tshuam nrog pawg.

Tsim ib pawg GKE:

1) Tsim ib pawg:

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

pab neeg gcloud ua tsim ib qho istioready pawg hauv GCP qhov project thiab default zone koj teev. Txhawm rau khiav Istio, peb pom zoo kom muaj tsawg kawg 4 nodes thiab lub tshuab virtual n1-txoj-2.

Pab neeg tsim cov pawg hauv ob peb feeb. Thaum cov pawg npaj txhij, cov lus txib tso tawm ib yam dab tsi zoo li no сообщСниС.

2) Muab cov ntaub ntawv pov thawj hauv cov cuab yeej hais kom ua kubtl uasiv nws los tswj cov pawg:

gcloud container clusters get-credentials istioready

3) Tam sim no koj tuaj yeem sib txuas lus nrog Kubernetes ntawm kubtl ua. Piv txwv li, cov lus txib hauv qab no tuaj yeem pom cov xwm txheej ntawm cov nodes:

kubectl get nodes

Cov lus txib tsim cov npe ntawm cov 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

Kubernetes Cov ntsiab lus tseem ceeb

Daim duab qhia ib daim ntawv thov ntawm GKE:

Npaj daim ntawv thov rau Istio

Ua ntej koj xa cov thawv rau hauv GKE, kawm cov ntsiab lus tseem ceeb ntawm Kubernetes. Muaj qhov txuas ntawm qhov kawg yog tias koj xav kawm ntxiv.

  • Nodes thiab pawg. Hauv GKE, qhov node yog lub tshuab virtual. Ntawm lwm lub Kubernetes platforms, ib lub pob tuaj yeem yog lub computer lossis lub tshuab virtual. Ib pawg yog ib pawg ntawm cov nodes uas tuaj yeem suav hais tias yog ib chav tsev uas koj siv cov ntawv thov ntim khoom.
  • Pods. Hauv Kubernetes, ntim tau khiav hauv cov pods. Lub Pod nyob rau hauv Kubernetes yog ib chav tsev indivisible. Lub Pod tuav ib lossis ntau lub thawv. Koj deploy server ntim thiab loadgen nyob rau hauv nyias nyias. Thaum muaj ntau lub ntim hauv ib lub plhaub (piv txwv li, daim ntawv thov server thiab proxy server), cov thawv ntim tau tswj hwm raws li ib qho chaw thiab sib faib cov peev txheej.
  • Kev xa tawm. Hauv Kubernetes, kev xa tawm yog ib yam khoom uas yog sau los ntawm cov pods zoo tib yam. Deployment launches ntau replicas ntawm pods faib nyob rau hauv pawg nodes. Kev xa tawm tau hloov pauv cov pods uas ua tsis tau lossis tsis teb.
  • Kubernetes kev pabcuam. Thaum khiav daim ntawv thov code hauv GKE, kev sib txuas ntawm loadgen ΠΈ neeg rau zaub mov. Thaum koj pib cov kev pabcuam ntawm Cloud Shell virtual tshuab lossis desktop, koj tau xa cov lus thov mus rau neeg rau zaub mov ntawm localhost: 8080. Thaum xa mus rau GKE, cov pods raug tua ntawm cov muaj. Los ntawm lub neej ntawd, koj tsis muaj kev tswj xyuas qhov twg ntawm lub plhaub taum ua haujlwm, yog li koj pods tsis muaj chaw nyob IP ruaj khov.
    Kom tau txais tus IP chaw nyob rau neeg rau zaub mov, koj yuav tsum tau txhais lub network abstraction nyob rau sab saum toj ntawm cov pods. Qhov ntawd yog qhov nws yog Kubernetes kev pabcuam. Qhov kev pabcuam Kubernetes muab qhov kawg kawg rau ib pawg ntawm cov pods. Muaj ob peb tug hom kev pabcuam. neeg rau zaub mov siv LoadBalancer, uas muab qhov chaw nyob IP sab nraud los tiv tauj neeg rau zaub mov los ntawm sab nraud pawg.
    Kubernetes kuj tseem muaj cov kab ke DNS built-in uas muab cov npe DNS (piv txwv li, helloserver.default.cluster.local) kev pabcuam. Ua tsaug rau qhov no, cov pods hauv pawg sib txuas lus nrog lwm cov pods hauv pawg ntawm qhov chaw nyob tas li. Lub npe DNS tsis tuaj yeem siv sab nraum pawg, xws li hauv Huab Plhaub lossis hauv computer.

Kubernetes manifests

Thaum koj khiav daim ntawv thov los ntawm qhov chaw, koj siv cov lus txib tseem ceeb python3

server.py

Imperative implies ib tug verb: "ua li no."

Kubernetes siv tus qauv tshaj tawm. Qhov no txhais tau hais tias peb tsis qhia Kubernetes raws nraim yuav ua li cas, tab sis piav qhia txog lub xeev xav tau. Piv txwv li, Kubernetes pib thiab nres cov pods raws li xav tau los ua kom lub xeev tiag tiag ntawm lub cev raws li lub xeev xav tau.

Koj qhia lub xeev xav tau hauv manifests lossis cov ntaub ntawv YAML. Ib cov ntaub ntawv YAML muaj cov lus qhia tshwj xeeb rau ib lossis ntau yam khoom Kubernetes.

Cov piv txwv muaj cov ntaub ntawv YAML rau neeg rau zaub mov ΠΈ loadgen. Txhua YAML cov ntaub ntawv qhia txog lub xeev xav tau ntawm kev xa khoom thiab kev pabcuam 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

  • zoo qhia txog hom khoom.
  • metadata.npe qhia lub npe xa mus.
  • Thawj teb spec muaj cov lus piav qhia ntawm lub xeev xav tau.
  • spec.replicas qhia txog qhov xav tau ntawm cov pods.
  • Feem spec. template txhais tau ib lub pod template. Muaj ib daim teb nyob rau hauv pod specification duab, uas qhia lub npe ntawm cov duab uas yuav tsum tau muab rho tawm los ntawm Lub Thawv Registry.

Cov kev pabcuam tau txhais raws li hauv qab no:

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

  • LoadBalancer: Cov neeg siv khoom xa cov lus thov mus rau qhov chaw nyob IP ntawm cov khoom sib npaug, uas muaj qhov chaw nyob IP tsis tu ncua thiab nkag tau los ntawm sab nraud pawg.
  • targetPort: raws li koj nco qab, pab neeg TIAB SA 8080 Π² Dockerfile tsis tau muab cov chaw nres nkoj. Koj muab qhov chaw nres nkoj 8080kom koj tuaj yeem tiv tauj lub thawv neeg rau zaub mov sab nraum pawg. Hauv peb qhov xwm txheej hellosvc.default.cluster.local:80 (lub npe luv: hlosvc) sib raug rau qhov chaw nres nkoj 8080 Pod IP chaw nyob nyob zoo.
  • qhov chaw nres nkoj: Nov yog tus lej chaw nres nkoj uas lwm cov kev pabcuam hauv pawg yuav xa cov lus thov.

loadgen.yaml

Deployment object rau loadgen.yaml zoo saib server.yaml. Qhov txawv yog tias cov khoom xa tawm muaj ib ntu kwv yees. Nws txhais cov kev hloov pauv ib puag ncig uas xav tau loadgen thiab qhov twg koj ntsia thaum khiav daim ntawv thov los ntawm qhov chaw.

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

Ib zaug loadgen tsis lees txais cov lus thov tuaj, rau thaj chaw hom qhia ClusterIP. Hom no muab qhov chaw nyob IP tsis tu ncua uas cov kev pabcuam hauv pawg tuaj yeem siv tau, tab sis qhov chaw nyob IP no tsis raug rau cov neeg siv khoom sab nraud.

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

Deploying Containers hauv GKE

1) Mus rau hauv phau ntawv qhia qhov piv txwv nyob neeg rau zaub mov:

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

2) Qhib server.yaml hauv ib phau ntawv editor.
3) Hloov lub npe hauv daim teb duab rau lub npe ntawm koj daim duab Docker.

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

Hloov PROJECT_ID rau koj tus GCP project ID.
4) Txuag thiab kaw server.yaml.
5) Xa cov ntaub ntawv YAML rau Kubernetes:

kubectl apply -f server.yaml

Thaum ua tiav tiav, cov lus txib tsim cov cai hauv qab no:

deployment.apps/helloserver created
service/hellosvc created

6) Mus rau qhov chaw nyob qhov twg loadgen:

cd ../loadgen

7) Qhib loadgen.yaml hauv ib phau ntawv editor.
8) Hloov lub npe hauv daim teb duab rau lub npe ntawm koj daim duab Docker.

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

Hloov PROJECT_ID rau koj tus GCP project ID.
9) Txuag thiab kaw loadgen.yaml, kaw cov ntawv nyeem.
10) Xa cov ntaub ntawv YAML rau Kubernetes:

kubectl apply -f loadgen.yaml

Thaum ua tiav tiav, cov lus txib tsim cov cai hauv qab no:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Txheeb xyuas cov xwm txheej ntawm cov pods:

kubectl get pods

Cov lus txib qhia cov xwm txheej:

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

12) Tshem tawm daim ntawv thov cav los ntawm lub plhaub loadgen. Hloov POD_ID mus rau tus cim los ntawm cov lus teb dhau los.

kubectl logs loadgenerator-POD_ID

13) Tau txais IP chaw nyob sab nraud hlosvc:

kubectl get service

Cov lus teb hais kom ua zoo li no:

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) Xa ib daim ntawv thov rau hlosvc: hloov EXTERNAL_IP mus rau sab nraud IP chaw nyob hlosvc.

curl http://EXTERNAL_IP

Wb coj ntawm Istio

Koj twb muaj ib daim ntawv thov xa mus rau GKE. loadgen tuaj yeem siv Kubernetes DNS (hwv: 80) xa cov lus thov mus rau neeg rau zaub movthiab koj tuaj yeem xa cov lus thov mus rau neeg rau zaub mov los ntawm tus IP chaw nyob sab nraud. Txawm hais tias Kubernetes muaj ntau yam nta, muaj qee cov ntaub ntawv uas ploj lawm txog cov kev pabcuam:

  • Cov kev pabcuam cuam tshuam li cas? Kev sib raug zoo ntawm cov kev pabcuam yog dab tsi? Kev khiav tsheb khiav ntawm cov kev pabcuam li cas? Koj puas paub qhov ntawd loadgen xa cov lus thov rau neeg rau zaub mov, tab sis xav txog tias koj tsis paub dab tsi txog daim ntawv thov. Txhawm rau teb cov lus nug no, peb saib cov npe ntawm cov khoom siv khiav hauv GKE.
  • Kev ntsuas. Ntev npaum li cas neeg rau zaub mov teb rau qhov kev thov tuaj? Muaj pes tsawg qhov kev thov ib ob tau txais los ntawm server? Nws puas muab cov lus yuam kev?
  • Cov ntaub ntawv kev ruaj ntseg. Tsheb khiav ntawm loadgen ΠΈ neeg rau zaub mov tsuas yog hla dhau HTTP los ntawm mTLS?

Istio teb tag nrho cov lus nug no. Txhawm rau ua qhov no, Istio tso lub npe sab hauv Envoy hauv txhua lub pob. Tus Envoy proxy cuam tshuam tag nrho cov khoom nkag thiab tawm mus rau cov thawv ntawv thov. Nws txhais tau tias neeg rau zaub mov ΠΈ loadgen tau txais los ntawm sidecar proxy Envoy, thiab tag nrho cov tsheb khiav los ntawm loadgen ΠΊ neeg rau zaub mov mus dhau lub npe Envoy.

Kev sib txuas ntawm Envoy proxies tsim ib qho kev pabcuam mesh. Cov kev pabcuam mesh architecture muab cov txheej txheem tswj hwm saum Kubernetes.

Npaj daim ntawv thov rau Istio

Txij li thaum Envoy proxies khiav hauv lawv lub thawv, Istio tuaj yeem ntsia tau rau sab saum toj ntawm GKE pawg nrog yuav luag tsis muaj kev hloov pauv rau daim ntawv thov code. Tab sis koj tau ua qee yam haujlwm kom tau txais koj daim ntawv thov npaj los tswj los ntawm Istio:

  • Kev pabcuam rau txhua lub thawv. Rau kev xa tawm neeg rau zaub mov ΠΈ loadgen khi rau Kubernetes kev pabcuam. Txawm loadgen, uas tsis tau txais kev thov tuaj, muaj kev pabcuam.
  • Cov chaw nres nkoj hauv cov kev pabcuam yuav tsum muaj npe. Txawm hais tias cov chaw nres nkoj pabcuam tuaj yeem raug tso tseg tsis muaj npe hauv GKE, Istio xav kom koj qhia npe port raws li nws txoj cai. Hauv YAML cov ntaub ntawv qhov chaw nres nkoj rau neeg rau zaub mov hu ua Httpvim server siv raws tu qauv HTTP. Yog kev pab cuam siv GRPC, koj yuav npe lub chaw nres nkoj grpc ua.
  • Deployments yog flagged. Yog li ntawd, koj tuaj yeem siv Istio txoj kev tswj hwm kev khiav tsheb, xws li kev sib faib tsheb khiav ntawm cov kev pabcuam tib yam.

Kev teeb tsa

Muaj ob txoj hauv kev rau nruab Istio. Ua tau pab Istio ntawm GKE txuas ntxiv los yog nruab qhov qhib qhov version ntawm Istio ntawm pawg. Nrog Istio ntawm GKE, koj tuaj yeem yooj yim tswj Istio kev teeb tsa thiab hloov kho tshiab thoob plaws GKE pawg lub neej. Yog tias koj xav tau qhov tseeb version ntawm Istio lossis ntau dua kev tswj hwm koj Istio tswj vaj huam sib luag teeb tsa, nruab qhov qhib qhov chaw hloov ntawm Istio ntawm GKE txuas ntxiv. Txhawm rau txiav txim siab txog txoj hauv kev, nyeem kab lus Kuv puas xav tau Istio ntawm GKE?.

Xaiv ib qho kev xaiv, tshuaj xyuas cov lus qhia tsim nyog, thiab ua raws li cov lus qhia rau nruab Istio ntawm koj pawg. Yog tias koj xav siv Istio nrog koj daim ntawv thov siv tshiab, pab txoj kev siv tsheb rau npe ua ntej.

Tu

Txhawm rau kom tsis txhob raug them nyiaj rau koj tus lej Google Cloud Platform rau cov peev txheej uas koj siv hauv qhov kev qhia no, tshem tawm cov thawv ntim ib zaug koj tau teeb tsa Istio thiab ua si nrog cov qauv thov. Qhov no yuav tshem tawm tag nrho cov peev txheej hauv pawg, xws li suav suav, disks, thiab cov peev txheej hauv network.

Yuav ua li cas yog tom ntej no?

Tau qhov twg los: www.hab.com

Ntxiv ib saib