Saunia se talosaga mo Istio

Saunia se talosaga mo Istio

Istio o se meafaigaluega talafeagai mo le faʻafesoʻotaʻi, faʻamautinoa ma mataʻituina talosaga tufatufaina. O lo'o fa'aogaina e Istio le tele o tekinolosi e fa'atino ai ma fa'atautaia polokalame i le fua, e aofia ai atigipusa e fa'apipi'i ai fa'ailoga tusi talosaga ma fa'alagolago mo le fa'atinoina, ma Kubernetes e fa'atautaia na koneteina. O le mea lea, e galulue ai ma Istio e tatau ona e iloa pe faʻapefea ona galue se talosaga ma le tele o auaunaga e faʻavae i luga o nei tekinolosi e aunoa ma Istio. Afai o nei meafaigaluega ma manatu ua e masani ia te oe, lagona le saoloto e faamisi lenei aʻoaʻoga ma alu saʻo i le vaega Fa'apipi'i Istio ile Google Kubernetes Engine (GKE) poʻo le faʻapipiʻiina o se faʻaopoopoga Istio i le GKE.

Ole ta'iala lea ole la'asaga ole a tatou savalia le faagasologa atoa mai le source code ile GKE container e avatu ai ia te oe se malamalamaga faavae o nei tekinolosi e ala i se fa'ata'ita'iga. E te va'ai fo'i pe fa'afefea ona fa'aogaina e Istio le malosi o nei tekonolosi. E fa'apea e te le iloa se mea e uiga i koneteina, Kubernetes, meshes tautua, po'o Istio.

Galuega

I lenei aʻoaʻoga, o le ae faʻamaeʻaina galuega nei:

  1. A'oa'oina se fa'aoga faigofie i le lalolagi fa'afeiloa'i ma le tele o tautua.
  2. Fa'aola le talosaga mai le fa'ailoga puna.
  3. Tu'u le talosaga i totonu o pusa.
  4. Fausia se fuifui Kubernetes.
  5. Fa'asoa pusa i totonu o se fuifui.

Ae e te lei amata

Mulimuli i faatonuga ina ia mafai ai le Kubernetes Engine API:

  1. Alu i Kubernetes Engine itulau i le Google Cloud Platform console.
  2. Fausia pe filifili se poloketi.
  3. Fa'atali se'ia fa'aaga le API ma auaunaga fa'atasi. Atonu e umi ni nai minute.
  4. Ia mautinoa ua seti pili mo lau poloketi Google Cloud Platform. A'oa'o pe fa'afefea ona fa'agaoioi pili.

I lenei aʻoaʻoga, e mafai ona e faʻaogaina le Cloud Shell, lea e saunia ai le masini masini g1-laiti ile Google Compute Engine fa'atasi ai ma Linux fa'avae Debian, po'o se komepiuta Linux po'o macOS.

Filifiliga A: Fa'aaogā le Cloud Shell

Fa'amanuiaga ole fa'aogaina ole Cloud Shell:

  • Python 2 ma le Python 3 atinaʻe siosiomaga (e aofia ai taupou) ua fa'atulaga atoatoa.
  • Meafaigaluega Laina Poloaiga gcloud, toso, git и kubectl, lea o le a matou faʻaogaina ua uma ona faʻapipiʻiina.
  • E tele au filifiliga e te filifili mai ai fa'atonu tusitusiga:
    1. Fa'atonu tulafono, lea e tatala i le fa'aikona fa'asa'o i le pito i luga o le fa'amalama Cloud Shell.
    2. Emacs, Vim poʻo Nano, lea e tatala mai le laina faʻatonu i Cloud Shell.

Faʻaaoga Cloud Shell:

  1. Alu ile GCP console.
  2. Kiliki le faʻamau Fa'agaoioi Cloud Shell (Activate Cloud Shell) i le pito i luga o le GCP console window.

Saunia se talosaga mo Istio

I le pito i lalo GCP fa'amafanafanaga O se sauniga Cloud Shell ma se laina faʻatonu o le a tatalaina i se faamalama fou.

Saunia se talosaga mo Istio

Filifiliga B: Fa'aogaina Meafaigaluega Laina Poloaiga i le lotoifale

Afai o loʻo e galue i luga o se komepiuta o loʻo faʻaogaina Linux poʻo macOS, e tatau ona e faʻapipiʻi ma faʻapipiʻi vaega nei:

  1. Fa'asinomaga Python 3 ma le Python 2 atinaʻe siosiomaga.

  2. Fa'apipi'i le Cloud SDK fa'atasi ai ma meafaigaluega laina fa'atonu gcloud.

  3. Faʻamau kubectl - meafaigaluega laina poloaiga mo le galulue faatasi Kubernetes.

    gcloud components install kubectl

  4. Faʻamau Docker Community Edition (CE). E te fa'aogaina le meafaigaluega laina fa'atonu tosoe fai ata atigipusa mo le fa'ata'ita'iga talosaga.

  5. Fa'apipi'i le meafaigaluega Git version controle maua ai le faʻataʻitaʻiga talosaga mai GitHub.

La'u mai le fa'ata'ita'iga code

  1. La'u mai le fa'ailoga puna Helloserver:

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

  2. Alu i le fa'ata'ita'iga code directory:

    cd istio-samples/sample-apps/helloserver

Su'esu'e se talosaga ma le tele o auaunaga

O le faʻataʻitaʻiga talosaga o loʻo tusia i le Python ma e aofia ai vaega e lua e fegalegaleai faʻaoga mapu:

  • faigaluega: server faigofie e tasi le pito MAUA, /, lea e lolomi "hello world" i le faʻamafanafanaga.
  • utaina: tusitusiga e auina atu ai feoaiga i faigaluega, faatasi ai ma se numera fetuutuunai o talosaga i le sekone.

Saunia se talosaga mo Istio

Fa'atino se talosaga mai le fa'ailoga puna

Ina ia su'esu'e le fa'ata'ita'iga talosaga, fa'agasolo ile Cloud Shell po'o lau komepiuta.
1) I le lisi istio-samples/sample-apps/helloserver tamo'e faigaluega:

python3 server/server.py

I le amataga faigaluega ua fa'aalia mea nei:

INFO:root:Starting server...

2) Tatala se isi fa'amalama fa'amau e lafo ai talosaga i faigaluega. Afai o lo'o e fa'aogaina le Cloud Shell, kiliki le fa'aopoopo fa'aikona e tatala ai se isi sauniga.
3) Auina atu se talosaga i faigaluega:

curl http://localhost:8080

tali a le server:

Hello World!

4) Mai le lisi na e siiina mai ai le faʻataʻitaʻiga code, alu i le lisi o loʻo i ai utaina:

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

5) Fausia suiga ole siosiomaga nei:

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

6) Fa'alauiloa taupou:

virtualenv --python python3 env

7) Fa'agaoioia le si'osi'omaga virtual:

source env/bin/activate

8) Seti manaoga mo utaina:

pip3 install -r requirements.txt

9) Fa'alauiloa utaina:

python3 loadgen.py

I le amataga utaina fa'aalia se mea e pei o le savali lenei:

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

I le isi fa'amalama fa'amalama faigaluega fa'aulu mai fe'au nei i le fa'amafanafanaga:

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 se va'aiga feso'ota'iga, o le talosaga atoa e fa'atautaia i luga o se 'au e tasi (komipiuta fa'apitonu'u po'o le Cloud Shell virtual machine). O lea e mafai ona e faʻaaogaina localhoste lafo atu talosaga i faigaluega.
10) Ia taofi utaina и faigaluega, ulufale Ctrl-c i fa'amalama fa'amalama uma.
11) I le faʻamalama faʻamalama utaina fa'agata le si'osi'omaga virtual:

deactivate

Fa'apipi'i se talosaga i totonu o koneteina

Ina ia fa'agasolo le talosaga ile GKE, e tatau ona e fa'apipi'i le fa'ata'ita'iga talosaga - faigaluega и utaina - i le koneteina. O se atigipusa o se auala e afifiina ai se talosaga e vavae ese mai lona siosiomaga.

Ina ia afifi se talosaga i totonu o se koneteina, e te manaʻomia faila faila. faila faila ose faila faila e fa'amatala ai fa'atonuga mo le fausiaina o le fa'apogai o le tusi talosaga ma ona fa'alagolago i totonu Ata Docker. A maeʻa ona fausia, e te lafoina le ata i se koneteina resitala pei ole Docker Hub poʻo Tusi Resitala Container.

O le faataitaiga ua uma ona i ai faila faila mo faigaluega и utaina faatasi ai ma poloaiga talafeagai uma e aoina ai ata. Lalo - faila faila mo faigaluega:

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

  • au MAI python:3-slim e pei o le faavae taʻu atu ia Docker e faʻaaoga le mea fou Python 3 ata e fai ma faavae.
  • au KOPI. . kopiina faila autu i le lisi galue o loʻo iai nei (i le matou tulaga server.py) i le faiga faila a le koneteina.
  • ENTRYPOINT fa'amatala le fa'atonuga e fa'aaoga e amata ai le koneteina. I la matou tulaga, o lenei poloaiga e toetoe lava tutusa ma le tasi na e faʻaaogaina server.py mai le source code.
  • au FAʻAALIGA faailoa mai lena faigaluega fa'atali mo fa'amatalaga e ala i le uafu 8080. E leai lenei 'au saunia uafu. O se ituaiga o faʻamaumauga e manaʻomia e tatala ai le taulaga 8080 pe a amata le koneteina.

Sauni e fa'aputu lau talosaga

1) Seti suiga ole siosiomaga nei. Sui PROJECT_ID i lau ID galuega GCP.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Fa'aaogaina o mea taua PROJECT_ID и GCR_REPO e te faʻailogaina le ata Docker pe a e fausia ma tulei i se Resitala Container tumaoti.

2) Seti le GCP galuega faatino mo le meafaigaluega laina poloaiga gcloud.

gcloud config set project $PROJECT_ID

3) Seti le sone fa'aletonu mo le meafaigaluega laina poloaiga gcloud.

gcloud config set compute/zone us-central1-b

4) Ia mautinoa o lo'o fa'agaoioi le auaunaga Resitala Container ile poloketi GCP.

gcloud services enable containerregistry.googleapis.com

'Au'aunaga fa'aputu

  1. Alu i le lisi o loʻo i ai le faʻataʻitaʻiga faigaluega:

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

  2. Faʻapipiʻi le ata faʻaaoga faila faila ma le siosiomaga fesuiaiga na e faʻamatalaina muamua:

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

Parakalafa -t e fai ma sui o le Docker tag. O le igoa lea o le ata e te faʻaogaina pe a faʻapipiʻi le koneteina.

  1. Tu'u le ata i le Container Registry:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Fa'amauina o uta

1) Alu i le lisi o loʻo i ai le faʻataʻitaʻiga utaina:

cd ../loadgen

2) Aoina le ata:

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

3) Tu'u le ata i le Container Registry:

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

Va'ai se lisi o ata

Toe iloilo le lisi o ata i totonu o le fale teu oloa ma faʻamaonia ua uma ona tuʻuina ata:

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

O le faʻatonuga e faʻaalia ai igoa o ata fou na tuʻuina atu:

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

Fausia se fuifui GKE.

O nei koneteina e mafai ona faʻatautaia i luga o se masini komepiuta Cloud Shell poʻo luga o se komepiuta ma le faʻatonuga toso tamoe. Ae i se siosiomaga gaosiga, e te manaʻomia se auala e faʻapipiʻi ai pusa. Mo se faʻataʻitaʻiga, e te manaʻomia se faiga e faʻamautinoa ai o loʻo taʻavale i taimi uma pusa, ma e te manaʻomia se auala e faʻalautele ai ma faʻapipiʻi i luga isi mea faʻapipiʻi pe a faʻateleina feoaiga.

Mo le fa'agaioia o mea fa'apipi'i e mafai ona e fa'aogaina GKE. O le GKE ose koneteina tu'ufa'atasiga fa'apipi'i e fa'apotopotoina masini fa'apitoa i se fuifui. E ta'ua ta'itasi masini fa'apitoa o se node. O fuifui GKE e fa'avae i luga ole faiga fa'afoe o le fa'aogaina o fa'alapotopotoga Kubernetes. Ua saunia e Kubernetes auala e fegalegaleai ai ma le fuifui.

Fausia se fuifui GKE:

1) Fausia se fuifui:

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

au gcloud fa'atupuina se fuifui istioready i le GCP poloketi ma le sone fa'aletonu na e fa'ailoa mai. Ina ia faʻagasolo Istio, matou te fautuaina le i ai o le itiiti ifo ma le 4 nodes ma se masini masini n1-tulaga-2.

E faia e le 'au le fuifui i ni nai minute. A sauni le fuifui, o le poloaiga e faʻaalia se mea faʻapea feʻau.

2) Tuuina atu faʻamaoniga i le meafaigaluega laina faʻatonu kubectle fa'aaoga e pulea ai le fuifui:

gcloud container clusters get-credentials istioready

3) O lea e mafai ona e fesoʻotaʻi ma Kubernetes e ala i kubectl. Mo se faʻataʻitaʻiga, o le poloaiga lenei e mafai ona iloa ai le tulaga o nodes:

kubectl get nodes

O le poloaiga e maua ai se lisi o 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 Manatu Autu

O le ata o loʻo faʻaalia ai se talosaga ile GKE:

Saunia se talosaga mo Istio

Ae e te le'i tu'uina atu pusa i le GKE, a'oa'o manatu autu o Kubernetes. E iai feso'ota'iga i le pito tonu pe a e mana'o e a'oa'o atili.

  • Nodes ma fuifui. I le GKE, o le node o se masini komepiuta. I luga o isi tulaga Kubernetes, o le node e mafai ona avea ma komepiuta poʻo se masini komepiuta. O le fuifui o se aofa'iga o nodes e mafai ona manatu o se iunite e tasi e te fa'aogaina ai se talosaga fa'apipi'i.
  • Pods. I Kubernetes, o koneteina o loʻo taʻavale i pusa. O le Pod i Kubernetes o se iunite e le mavaevae. O le Pod o lo'o uuina se atigipusa se tasi pe sili atu. E te fa'apipi'i pusa server ma utaina i pusa eseese. Pe a tele ni koneteina i totonu o se pusa (mo se faʻataʻitaʻiga, se server application ma sui sui), koneteina o lo'o fa'afoeina o se fa'alapotopotoga e tasi ma fefa'asoaa'i punaoa pod.
  • Fa'atonuga. I totonu o Kubernetes, o le faʻapipiʻiina o se mea faitino o se aofaʻiga o pusa tutusa. O le fa'atinoina e fa'alauiloa ai le tele o fa'atusa o pods o lo'o fa'asoa i nodes fuifui. E otometi lava ona sui le fa'apolokalame ia pods ua le manuia pe ua le tali mai.
  • auaunaga Kubernetes. Pe a faʻatautaia le code talosaga i le GKE, o le fesoʻotaʻiga i le va utaina и faigaluega. Ina ua e amataina au'aunaga i luga o se masini komepiuta Cloud Shell po'o le desktop, na e lafoina talosaga i faigaluega i localhost: 8080. O le taimi lava e tu'uina atu ai i le GKE, e fa'atino fo'i pods i nodes avanoa. I le faaletonu, e leai sau pule i luga o le pona o loʻo faʻaogaina ai le pod, o oe pusa leai ni tuatusi IP tumau.
    Ina ia maua se tuatusi IP mo faigaluega, e tatau ona e faʻamalamalamaina se faʻaogaina o fesoʻotaʻiga i luga o pods. O le mea lena auaunaga Kubernetes. Ole 'au'aunaga Kubernetes e maua ai se fa'ai'uga tumau mo se seti o pods. E i ai nai ituaiga auaunaga. faigaluega faʻaaoga LoadBalancer, lea e maua ai se tuatusi IP fafo e faʻafesoʻotaʻi faigaluega mai fafo o le fuifui.
    O lo'o iai fo'i i le Kubernetes se fa'aoga DNS e tu'uina atu igoa DNS (mo se fa'ata'ita'iga, helloserver.default.cluster.local) auaunaga. Fa'afetai i lenei mea, o pusa i totonu o le fuifui e feso'ota'i ma isi pods i le fuifui i se tuatusi faifaipea. Le igoa DNS e le mafai ona fa'aoga i fafo atu o le fuifui, pei ole Cloud Shell po'o luga ole komepiuta.

Kubernetes faʻaalia

Ina ua e tamo'e le talosaga mai le puna, na e fa'aogaina le fa'atonuga taua python3

server.py

Imperative e faauigaina se veape: "fai lenei."

Fa'aaoga e Kubernetes fa'ata'ita'iga fa'ailoa. O lona uiga matou te le o taʻuina saʻo ia Kubernetes le mea e fai, ae o loʻo faʻamatalaina le tulaga manaʻomia. Mo se faʻataʻitaʻiga, Kubernetes amata ma taofi pods pe a manaʻomia e faʻatumauina le tulaga moni o le faiga e ogatasi ma le tulaga manaʻomia.

E te faʻaalia le tulaga manaʻomia i faʻaaliga poʻo faila YAML. O se faila YAML o lo'o iai fa'amatalaga mo se tasi pe sili atu mea Kubernetes.

O le faʻataʻitaʻiga o loʻo i ai se faila YAML mo faigaluega и utaina. O faila YAML taʻitasi e faʻamaonia ai le tulaga manaʻomia o le mea faʻapipiʻi ma auaunaga 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

  • agalelei e faailoa mai ai le ituaiga o mea.
  • metadata.igoa fa'ailoa mai ai le igoa fa'apipi'i.
  • Muamua fanua faʻamatalaga o loʻo i ai se faʻamatalaga o le tulaga manaʻomia.
  • spec.replicas ta'u mai ai le numera mana'omia o pods.
  • Fuaiupu spec.template fa'amatala se mamanu pod. O loʻo i ai se fanua i le faʻamatalaga pod faʻatusa, lea e faʻamaonia ai le igoa o le ata e manaʻomia ona aveese mai le Container Registry.

O lo'o fa'amatalaina le tautua e fa'apea:

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

  • LoadBalancer: E auina atu e tagata faʻatau talosaga i le tuatusi IP o le paleni o uta, o loʻo i ai se tuatusi IP tumau ma e mafai ona maua mai fafo atu o le fuifui.
  • targetPort: e pei ona e manatua, o le au FAAALIA 8080 в faila faila e le'i saunia ni uafu. E te saunia le uafu 8080ina ia mafai ona e faʻafesoʻotaʻi le pusa faigaluega fafo o le fuifui. I lo tatou tulaga hellosvc.default.cluster.local:80 (igoa puupuu: talofavc) e fetaui ma le uafu 8080 Pod tuatusi IP Helloserver.
  • tāulaga: O le numera lea o le taulaga lea e auina atu ai e isi au'aunaga i totonu o le fuifui talosaga.

loadgen.yaml

Fa'atino mea e loadgen.yaml e foliga server.yaml. O le eseesega o le mea faʻapipiʻi o loʻo i ai se vaega auina atu. O lo'o fa'amatalaina ai suiga ole si'osi'omaga e mana'omia utaina ma na e faʻapipiʻiina pe a faʻagaoioia le talosaga mai le puna.

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

Tasi utaina e le talia talosaga e sau, mo le fanua ituaiga faailoa ClusterIP. O lenei ituaiga e maua ai se tuatusi IP tumau e mafai ona faʻaogaina e auʻaunaga i le fuifui, ae o lenei tuatusi IP e le faʻaalia i tagata mai fafo.

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

Tu'uina atu pusa i le GKE

1) Alu i le lisi o loʻo i ai le faʻataʻitaʻiga faigaluega:

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

2) Tatala server.yaml i se fa'atonu tusitusiga.
3) Suia le igoa i le fanua faʻatusa i le igoa o lau ata Docker.

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

Sui PROJECT_ID i lau ID galuega GCP.
4) Faasaoina ma tapuni server.yaml.
5) Tuʻu le faila YAML i Kubernetes:

kubectl apply -f server.yaml

A maeʻa manuia, o le poloaiga e maua ai le code lea:

deployment.apps/helloserver created
service/hellosvc created

6) Alu i le lisi o fea utaina:

cd ../loadgen

7) Tatala loadgen.yaml i se fa'atonu tusitusiga.
8) Suia le igoa i le fanua faʻatusa i le igoa o lau ata Docker.

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

Sui PROJECT_ID i lau ID galuega GCP.
9) Faasaoina ma tapuni loadgen.yaml, tapuni le faatonu o tusitusiga.
10) Tuʻu le faila YAML i Kubernetes:

kubectl apply -f loadgen.yaml

A maeʻa manuia, o le poloaiga e maua ai le code lea:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Siaki le tulaga o pusa:

kubectl get pods

O le poloaiga e faʻaalia ai le tulaga:

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

12) Ave'ese tusi talosaga mai le pod utaina. Sui POD_ID i le fa'ailoa mai le tali muamua.

kubectl logs loadgenerator-POD_ID

13) Maua tuatusi IP fafo talofavc:

kubectl get service

O le tali o le poloaiga e foliga mai e pei o lenei:

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) Auina atu se talosaga i talofavc: sui EXTERNAL_IP i tuatusi IP fafo talofavc.

curl http://EXTERNAL_IP

Sei o tatou ave Istio

Ua uma ona i ai sau talosaga ua fa'apipi'i ile GKE. utaina mafai ona fa'aoga Kubernetes DNS (talofavc:80) e lafo atu talosaga i faigaluegama e mafai ona e lafo talosaga i faigaluega e ala ile tuatusi IP fafo. E ui lava e tele foliga o Kubernetes, o loʻo i ai nisi faʻamatalaga o loʻo misi e uiga i auaunaga:

  • E fa'afefea ona fegalegaleai au'aunaga? O a sootaga i le va o auaunaga? E fa'afefea ona feoa'i feoaiga i le va o auaunaga? O e silafia lena mea utaina auina atu talosaga i faigaluega, ae mafaufau e te le iloa se mea e uiga i le talosaga. Ina ia tali nei fesili, se'i o tatou va'ai i le lisi o ta'avale pods i le GKE.
  • Fuafuaga. Le a le umi faigaluega e tali atu i se talosaga e sau? E fia talosaga i le sekone e maua e le server? E aumai ni fe'au sese?
  • Fa'amatalaga Puipuiga. Ta'avale i le va utaina и faigaluega na ona pasia HTTP pe e ala i mTLS?

E tali e Istio nei fesili uma. Ina ia faia lenei mea, e tuʻuina e Istio se sui taʻavale Envoy i pusa taitasi. O le sui sui o le Envoy e fa'alavelave uma femalaga'iga ulufale ma fafo atu i pusa talosaga. O lona uiga faigaluega и utaina maua e ala i sidecar sui Avefeau, ma feoaiga uma mai utaina к faigaluega alu atu i le sui sui.

O feso'ota'iga i le va o sui sui o le Envoy e fausia ai se 'au'aunaga. O le au'aunaga mesh architecture e maua ai se fa'atonuga i luga o Kubernetes.

Saunia se talosaga mo Istio

Talu ai ona o sui o le Envoy e tamomoe i totonu o latou lava koneteina, e mafai ona faʻapipiʻi Istio i luga o le kulupu GKE e toetoe lava a leai ni suiga i le numera o talosaga. Ae ua e faia se galuega e saunia ai lau talosaga e pulea e Istio:

  • Au'aunaga mo koneteina uma. I deployments faigaluega и utaina noatia i le auaunaga Kubernetes. E oo lava utaina, lea e le maua mai talosaga mai, o loʻo i ai se auaunaga.
  • O taulaga i auaunaga e tatau ona iai igoa. E ui lava e mafai ona tu'u le ta'ua ports i le GKE, e mana'omia e Istio oe e fa'amaoti igoa uafu e tusa ai ma lana feagaiga. I le faila YAML le taulaga mo faigaluega ua valaauina httpaua o lo'o fa'aogaina e le server le protocol HTTP. Afai tautua faʻaaoga gRPC, e te faaigoa le uafu grpc.
  • Ua fa'ailogaina fa'agaioiga. O le mea lea, e mafai ona e faʻaogaina le faʻaogaina o fefaʻatauaiga a Istio, e pei o le vaeluaina o fefaʻatauaiga i le va o lomiga o le auaunaga lava e tasi.

Fa'apipi'i Istio

E lua auala e faʻapipiʻi ai Istio. E mafai fa'aagaoioia Istio ile fa'aopoopoga GKE poʻo faʻapipiʻi le faʻamatalaga tatala o Istio i luga o le fuifui. Faatasi ai ma Istio i luga o le GKE, e faigofie ona e pulea Istio faʻapipiʻi ma faʻaleleia i le GKE cluster lifecycle. Afai e te manaʻo i le lomiga lata mai o Istio poʻo le sili atu le puleaina o lau Istio control panel configuration, faʻapipiʻi le faʻamatalaga tatala puna ae le o le Istio i le GKE faʻaopoopoga. Ina ia filifili i le auala, faitau le tusiga Ou te mana'omia Istio ile GKE?.

Filifili se filifiliga, faitau le taʻiala talafeagai, ma mulimuli i faʻatonuga e faʻapipiʻi ai Istio i lau fuifui. Afai e te manaʻo e faʻaoga Istio ma lau talosaga fou, fa'ataga le fa'atinoga o ta'avale mo igoa avanoa Leai se totogi.

Faamama

Ina ia aloese mai le molia i lau Google Cloud Platform account mo punaoa na e faʻaaogaina i lenei aʻoaʻoga, tape le pusa pusa pe a uma ona e faʻapipiʻi Istio ma taʻalo i le faʻataʻitaʻiga talosaga. Ole mea lea ole a ave'esea uma alagaoa fuifui, e pei ole fa'atulagaina o fa'ata'ita'iga, tisiki, ma punaoa feso'otaiga.

o sosoo ai le a?

puna: www.habr.com

Faaopoopo i ai se faamatalaga