Rakenduse ettevalmistamine Istio jaoks

Rakenduse ettevalmistamine Istio jaoks

Istio on mugav tööriist jaotatud rakenduste ĂŒhendamiseks, kaitsmiseks ja jĂ€lgimiseks. Istios kasutatakse erinevaid tehnoloogiaid tarkvara skaleeritavaks kĂ€ivitamiseks ja haldamiseks, sealhulgas rakenduskoodi ja sĂ”ltuvuste pakendamiseks konteinerites ning Kubernetes - nende konteinerite haldamiseks. SeetĂ”ttu peate Istio kasutamiseks teadma, kuidas mitme teenusega rakendus nende tehnoloogiate pĂ”hjal toimib. ilma Istio. Kui need tööriistad ja mĂ”isted on teile juba tuttavad, jÀÀnud juhised vahele ja minge otse jaotisesse. Istio paigaldamine Google Kubernetes Engine'is (GKE) vĂ”i laienduse installimine Istio GKE-s.

See on samm-sammuline juhend, kus vaatleme kogu protsessi lĂ€htekoodist kuni konteinerini GKE-s, et saaksite nende tehnoloogiate pĂ”hjal mugava ĂŒlevaate. Samuti nĂ€ete, kuidas Istio kasutab nende tehnoloogiate vĂ”imalusi. Eeldatakse, et te ei tea midagi konteineritest, Kubernetesest, teenuste vĂ”rgustikest vĂ”i Istio'st.

Ülesanded

Selles juhendis tĂ€idate jĂ€rgmisi ĂŒlesandeid:

  1. Lihtsa hello world rakenduse uurimine mitme teenusega.
  2. Rakenduse kÀitamine lÀhtekoodist.
  3. Rakenduse pakendamine konteineritesse.
  4. Kubernetes klastri loomine.
  5. Konteinerite juurutamine klastrisse.

Enne alustamist

JĂ€rgige juhiseid, et aktiveerida Kubernetes Engine API:

  1. Minge Kubernetes Engine lehele Google Cloud Platformi konsoolis.
  2. Looge vÔi valige projekt.
  3. Oodake, kuni API ja sellega seotud teenused aktiveeritakse. See vÔib vÔtta mitu minutit.
  4. Veenduge, et Google Cloud Platformi projekti jaoks on seadistatud arveldamine. Uurige, kuidas arveldamist lubada..

Selles juhendis saate kasutada Cloud Shell'i, mis valmistab ette virtuaalmasina g1-small Google Compute Engine'is Debiani pÔhise Linuxiga vÔi Linuxi vÔi macOSi arvutiga.

Variant A: kasutades Cloud Shell'i

Cloud Shell'i kasutamise eelised:

  • Python 2 ja Python 3 arenduskeskkonnad (sealhulgas virtualenv) on tĂ€iesti seadistatud.
  • KĂ€surea tööriistad gcloud, docker, git ja kubectl, mida me kasutame, on juba installitud.
  • Teil on valikus mitu redaktorit.:
    1. Koodiredaktor, mis avatakse redigeerimise ikooniga Cloud Shell'i akna ĂŒlaosas.
    2. Emacs, Vim vÔi Nano, mis avanevad kÀsurealt Cloud Shell'is.

Cloud Shell'i kasutamiseks Minge GCP konsooli.:

  1. Aktiveeri Cloud Shell
  2. KlĂ”psake nuppu (Aktiveerida Cloud Shell) GCP konsooli akna ĂŒlaosas. (Aktiveeri Cloud Shell) GCP-i konsooli akna ĂŒlaosas.

Rakenduse ettevalmistamine Istio jaoks

All pool GCP console a Cloud Shell session with a command line will open in a new window.

Rakenduse ettevalmistamine Istio jaoks

Option B: using command line tools locally

If you are working on a computer with Linux or macOS, you need to set up and install the following components:

  1. Seadistage the Python 3 and Python 2 development environment.

  2. Install the Cloud SDK with the command line tool gcloud.

  3. Installige kubectl — the command line tool for working with Kubernetes.

    gcloud components install kubectl

  4. Installige Docker Community Edition (CE). You will use the command line tool docker, to build container images for the sample application.

  5. Install the version control tool Git, to get the sample application from GitHub.

Download the code sample

  1. Download the source code helloserver:

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

  2. Change to the code sample directory:

    cd istio-samples/sample-apps/helloserver

Exploring the multi-service application

The sample application is written in Python and consists of two components that interact through REST:

  • server: a simple server with a single endpoint GET, /, which outputs "hello world" to the console.
  • loadgen: a script that sends traffic to server, with a configurable number of requests per second.

Rakenduse ettevalmistamine Istio jaoks

Running the application from the source code

To explore the sample application, run it in Cloud Shell or on your computer.
1) In the directory istio-samples/sample-apps/helloserver run server:

python3 server/server.py

KĂ€ivitamisel server the following will be displayed:

INFO:root:Starting server...

2) Open another terminal window to send requests to server. If you are using Cloud Shell, click the add icon to open another session.
3) Send a request to server:

curl http://localhost:8080

the server responds:

Tere maailm!

4) From the directory where you downloaded the code sample, change to the directory that contains loadgen:

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

5) Create the following environment variables:

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

6) Run virtualenv:

virtualenv --python python3 env

7) Activate the virtual environment:

source env/bin/activate

8) Install the requirements for loadgen:

pip3 install -r requirements.txt

9) Run loadgen:

python3 loadgen.py

KĂ€ivitamisel loadgen outputs approximately the following message:

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

In another terminal window server outputs approximately the following messages to the console:

127.0.0.1 - - [21/Jun/2019 14:22:01] "GET / HTTP/1.1" 200 -
INFO:root:GET request,
Path: /

VĂ”rgu seisukohalt töötab kogu rakendus ĂŒhel serveril (kohalik arvuti vĂ”i virtuaalne masin Cloud Shell). SeetĂ”ttu saab kasutada localhost, et saata pĂ€ringud server.
10) Peatamiseks loadgen ja server, sisestage Ctrl-c iga terminaliaknas.
11) Terminaliaknas loadgen deaktiveerige virtuaalne keskkond:

deactivate

Rakenduse pakkimine konteineritesse

Et kĂ€ivitada rakendus GKE-s, tuleb pakendada nĂ€idisrakendus — server ja loadgen — konteinerid. Konteiner on viis rakenduse pakkimiseks, et isoleerida see keskkonnast.

Rakenduse pakendamiseks konteinerisse on vajalik Dockerfile. Dockerfile — see on tekstifail, kus mÀÀratakse rakenduse lĂ€htekoodi ja selle sĂ”ltuvuste koostamise kĂ€sklused Docker pildiks. PĂ€rast koostamist laadite pildi konteinerite registrisse, nĂ€iteks Docker Hub vĂ”i Container Registry.

NÀites on juba olemas Dockerfile jaoks server ja loadgen koik vajalikud kÀsklused piltide koostamiseks. Allpool on Dockerfile jaoks 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/*

# LĂŒlita sisse vĂ€ljundlogimine
FROM base as final
ENV PYTHONUNBUFFERED=1

RUN apt-get -qq update 
    && apt-get install -y --no-install-recommends 
        wget

WORKDIR /helloserver

# Noppige paketid ehitajalt
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/

# Lisage rakendus
COPY . .

EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]

  • Meeskond FROM python:3-slim as base kĂ€skleb Dockeril kasutada viimast Python 3 pildi kui baasi.
  • Meeskond COPY. . kopeerib lĂ€htekoodid praegusesse töökausta (meie puhul ainult server.py) konteineri failisĂŒsteemi.
  • ENTRYPOINT mÀÀrab kĂ€su, mida kasutatakse konteineri kĂ€ivitamiseks. Meie puhul on see kĂ€sk peaaegu sama, mis see, mida kasutasite lĂ€htekoodist server.py kĂ€ivitamiseks.
  • Meeskond EXPOSE nĂ€itab, et server ootab andmeid porti 8080. See kĂ€sk ei ava porte.See on midagi, mis sarnaneb dokumentatsiooniga, mis on vajalik uue porta avamiseks 8080 konteineri kĂ€ivitamisel.

Rakenduse konteeneriseerimiseks ettevalmistamine

1) MÀÀrake jÀrgmised keskkonnamuutujad. Asendage PROJECT_ID oma GCP projekti ID-ga.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Kasutades vÀÀrtusi PROJECT_ID ja GCR_REPO mÀrkite Docker pildi, kui koostate ja saadate selle eraldi Container Registry.

2) MÀÀrake vaikimisi GCP projekt kÀsurea tööriista jaoks gcloud.

gcloud config set project $PROJECT_ID

3) MÀÀrake vaikimisi ala kÀsurea tööriista jaoks gcloud.

gcloud config set compute/zone us-central1-b

4) Veenduge, et Container Registry teenus on GCP projektis lubatud.

gcloud services enable containerregistry.googleapis.com

Konteineriseerimine server

  1. Liikuge katalooge, kus asub nÀidis server:

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

  2. Koguge pilt jÀrgmise abil Dockerfile ja keskkonnamuutujate abil, mille mÀÀrasite varem:

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

Parameeter -t esindab Docker'i silti. See on pildi nimi, mida kasutate konteineri juurutamisel.

  1. Saatke pilt Container Registry'sse:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Konteineriseerimine loadgen

1) Liikuge katalooge, kus asub nÀidis loadgen:

cd ../loadgen

2) Koguge pilt:

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

3) Saatke pilt Container Registry'sse:

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

Piltide loendi vaatamine

Vaadake piltide loendit hoidlas ja veenduge, et pildid on saadetud:

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

KĂ€sk tagastab just saadetud piltide nimed:

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

GKE klastrite loomine.

Need konteinerid saaks toimida Cloud Shelli virtuaalses masinas vĂ”i teie arvutis kĂ€suga docker run. Kuid tootmisreĆŸiimis on vaja keskselt orkestreerida konteinereid. NĂ€iteks on vajalik sĂŒsteem, mis jĂ€lgib, et konteinerid töötaksid alati, ning on vajalik viis, kuidas suurendada ja kĂ€ivitada tĂ€iendavaid konteineri eksemplare, kui liiklus suureneb.

Konteinerirakenduste kĂ€ivitamiseks saab kasutada GKE. GKE on konteinerite orkestreerimise platvorm, mis ĂŒhendab virtuaalsed masinad klastriks. Iga virtuaalne masin nimetatakse sĂ”lmeks. GKE klastrid pĂ”hinevad avatud lĂ€htekoodiga Kubernetes klastrihaldussĂŒsteemil. Kubernetes pakub mehhanisme klastriga suhtlemiseks.

GKE klastrite loomine:

1) Looge klaster:

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

Meeskond gcloud loob claster'i istioready GCP projektis ja vaikimisi piirkonnas, mille olete mÀÀranud. Istio kÀivitamiseks soovitame vÀhemalt 4 sÔlme ja virtuaalmasinat n1-standard-2.

KÀsk loob klastrit mÔne minuti jooksul. Kui klaster on valmis, tagastab kÀsk sarnase teate.

2) MÀÀrake volitused kÀsurea tööriistale kubectl, et hallata klastrit:

gcloud container clusters get-credentials istioready

3) NĂŒĂŒd saab suhelda Kubernetesega kubectl. NĂ€iteks jĂ€rgmise kĂ€suga saab teada sĂ”lmede oleku:

kubectl get nodes

KÀsk tagastab sÔlmede loendi:

NIM                         STATUSE    ROLLID    VANUS    VERSIOON
gke-istoready-default-pool-dbeb23dc-1vg0   Valmis       99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5   Valmis       100s   v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s   Valmis       99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw   Valmis       99s    v1.13.6-gke.13

Kubernetesi pÔhikontseptsioonid

Diagrammil on kujutatud rakendus GKE-s:

Rakenduse ettevalmistamine Istio jaoks

Enne konteinerite kÀitamise alustamist GKE-s tutvuge Kubernetesi pÔhikontseptsioonidega. LÔpus on lingid, kui soovite rohkem teada.

  • SĂ”lmed ja klastrid. GKE-s on sĂ”lm virtuaalmasin. Teistel Kubernetes platvormidel vĂ”ib sĂ”lm olla arvuti vĂ”i virtuaalmasin. Klaster on sĂ”lmede kogum, mida saab pidada tervikuks ja kuhu te kĂ€rgitate konteineripĂ”hiseid rakendusi.
  • Pod'id. Kuberneteses kĂ€ivitatakse konteinerid pod'ides. Pod Kuberneteses on jagamatu ĂŒksus. Pod sisaldab ĂŒhte vĂ”i mitut konteinerit. Te kĂ€rgitate konteinerid server ja loadgen erinevates pod'ides. Kui pod'is on mitu konteinerit (nĂ€iteks rakenduse server ja proksi-server), juhitakse konteinerid kui ĂŒhtset objekti ja nad jagavad pod'i ressursse.
  • KĂ€ivitamised. Kuberneteses on kĂ€itamine objekt, mis esindab identsete pod'ide kogumit. KĂ€itamine kĂ€ivitab mitu pod'i koopiat, mis jaotatakse klastris olevatele sĂ”lmdele. KĂ€itamine asendab automaatselt need pod'id, mis ebaĂ”nnestuvad vĂ”i ei vasta.
  • Kubernetesi teenus. Kui kĂ€ivitate rakenduse koodi GKE-s, muutub ĂŒhendus loadgen ja server. Kui olete kĂ€ivitanud teenused virtuaalses masinas Cloud Shellis vĂ”i arvutis, saatsite pĂ€ringud server aadressile localhost:8080. PĂ€rast kĂ€rgimist GKE-s kĂ€ivitatakse pod'id saadaval olevatel sĂ”lmedel. Vaikimisi ei saa te kuidagi hallata, millisel sĂ”lmel pod kĂ€ivitub, seega ei pod'ide ole pĂŒsivaid IP-aadresse.
    IP-aadressi saamiseks server, peate mÀÀratlema vĂ”rgu abstraktsiooni pod'ide kohal. See ongi Kubernetesi teenus. Kubernetesi teenus annab pĂŒsiva lĂ”pp-punkti pod'ide kogumile. On mitmeid teenuse tĂŒĂŒpe. server kasutab LoadBalancer, mis pakuvad vĂ€list IP-aadressi, et ĂŒhenduda server klastrist vĂ€ljaspool.
    Kuberneteses on samuti sisseehitatud DNS-sĂŒsteem, mis mÀÀrab DNS-nimed (nĂ€iteks helloserver.default.cluster.local) teenustele. Selle tĂ”ttu suhtlevad pod’id klastris teiste pod’idega pĂŒsiva aadressi kaudu. DNS-i nime ei saa klastrist vĂ€ljaspool kasutada, nĂ€iteks Cloud Shellis vĂ”i teie arvutis.

Kubernetes’i manifestid

Kui kÀivitasite rakenduse lÀhtekoodist, kasutasite imperatiivset kÀsku python3

server.py

Imperatiivsuse mÔiste hÔlmab tegusÔna: "tee seda".

Kubernetes kasutab deklareeritav mudel. See tĂ€hendab, et me ei ĂŒtle Kubernetes’ele, mida tĂ€pselt teha, vaid kirjeldame soovitud olekut. NĂ€iteks kĂ€ivitab Kubernetes ja peatab pod’id vastavalt vajadusele, et tĂ”eline sĂŒsteemi seisund vastaks soovitule.

Soovitud oleku mÀÀrate manifestides vĂ”i failides YAML. YAML-fail sisaldab spetsifikatsioonid ĂŒhe vĂ”i mitme Kubernetes’i objekti jaoks.

NĂ€ites sisaldub YAML-fail server ja loadgen. Iga YAML-fail mÀÀratleb ĆŸelу mĐ”ŃŃŃŃ ĐŸĐ»ĐžĐŸobedĐŒŃ€ĐŸĐ±ĐșĐœĐ”Đ·Đ°Ń‚ĐŸŃ€ĐŸĐŒ — у сДрĐČОса Kubernetes’ist.

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

  • kind mÀÀrab objekti tĂŒĂŒbi.
  • metadata.name mÀÀrab vĂ€ljalaskmise nime.
  • Esimene vĂ€li spec sisaldab soovitud oleku kirjeldust.
  • spec.replicas mÀÀrab soovitud pod’ide arvu.
  • Jaotis spec.template mÀÀratleb pod’i mall. Pod’ide spetsifikatsioonis on vĂ€li image, kus mÀÀratakse konteinerifaili nimi, mille tuleb Container Registry’st vĂ€lja vĂ”tta.

Teenust mÀÀratletakse jÀrgmiselt:

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

  • LoadBalancer: kliendid saadavad pĂ€ringud koormusbalansi IP-aadressile, millel on pĂŒsiv IP-aadress ja mis on kergesti juurdepÀÀsetav klastrist vĂ€ljaspool.
  • targetPort: nagu mĂ€letate, kĂ€sk EXPOSE 8080 ja Dockerfile ei pakkunud porte. Te mÀÀrate pordi 8080, et oleks vĂ”imalik suhelda konteineriga server klastrist vĂ€ljaspool. Meie puhul hellosvc.default.cluster.local:80 (lĂŒhinimi: hellosvc) vastab pordile 8080 pod’i IP-aadress helloserver.
  • port: see on pordinumber, kuhu teised teenused klastris saadavad pĂ€ringud.

loadgen.yaml

KÀivitamisobjekt loadgen.yaml on server.yamlsarnane env. Erinevus seisneb selles, et kÀivitamisobjekt sisaldab jaotist loadgen . See mÀÀratleb keskkonnamuutujad, mis on vajalikud, ja mida te mÀÀrasite rakenduse kÀivitamisel lÀhtekoodist.

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

Üks loadgen ei vĂ”ta sisenevaid pĂ€ringuid, vĂ€lja arvatud type mĂ€rgitud ClusterIP. See tĂŒĂŒp pakub pĂŒsivat IP-aadressi, mida saavad kasutada klastris olevad teenused, kuid see IP-aadress ei ole vĂ€listele klientidele saadaval.

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

Konteinerite juurutamine GKE-s

1) Liikuge katalooge, kus asub nÀidis server:

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

2) Avage server.yaml tekstiredaktoris.
3) Asendage nimi vÀlja image oma Docker-pildiga nimega.

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

Asendage PROJECT_ID oma GCP projekti ID-ga.
4) Salvestage ja sulgege server.yaml.
5) Juurutage YAML-fail Kubernetesesse:

kubectl apply -f server.yaml

PÀrast eduka kÀivitamise korral annab kÀsk jÀrgmise koodi:

deployment.apps/helloserver created
service/hellosvc created

6) Minge kausta, kus asub loadgen:

cd ../loadgen

7) Avage loadgen.yaml tekstiredaktoris.
8) Asendage nimi vÀlja image oma Docker-pildiga nimega.

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

Asendage PROJECT_ID oma GCP projekti ID-ga.
9) Salvestage ja sulgege loadgen.yaml, sulgege tekstiredaktor.
10) Juurutage YAML-fail Kubernetesesse:

kubectl apply -f loadgen.yaml

PÀrast eduka kÀivitamise korral annab kÀsk jÀrgmise koodi:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Kontrollige pods'i staatust:

kubectl get pods

KÀsk nÀitab staatust:

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

12) TÔmmake rakenduse logisid podist loadgen. Asendage POD_ID eelnevalt saadud ID.

kubectl logs loadgenerator-POD_ID

13) Hankige vÀlised IP-aadressid hellosvc:

kubectl get service

KÀsk tagastab umbes jÀrgmise:

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                443/TCP        93m
loadgensvc   ClusterIP      10.81.15.155             80/TCP         4m52s

14) Saada pÀring hellosvc: asendage EXTERNAL_IP vÀlise IP-aadressiga hellosvc.

curl http://EXTERNAL_IP

Tegeleme Istio'ga

Teil on juba rakendus, mis on juurutatud GKE-s. loadgen vÔib kasutada Kubernetes DNS-i (hellosvc:80), et saata pÀringuid server, ja saate saata pÀringuid server vÀlise IP-aadressiga. Kuigi Kubernetesel on palju vÔimalusi, puudub teavet teenuste kohta:

  • Kuidas teenused omavahel suhtlevad? Millised on teenuste omavahelised suhted? Kuidas voolab liiklus teenuste vahel? Kas te olete teadlikud, et loadgen saab pĂ€ringud server, kuid kujutage ette, et te ei tea rakendusest midagi. Nendele kĂŒsimustele vastamiseks vaatame GKE-s kĂ€ivitatud podide loendit.
  • MÔÔtmised. Kui kaua server vastab sissetulevale pĂ€ringule? Kui palju pĂ€ringuid sekundis serverisse jĂ”uab? Kas ta annab veateateid?
  • Turvaandmed. Liiklus teenuste vahel loadgen ja server lĂ€bib lihtsalt HTTP vĂ”i mTLS?

KĂ”igile nendele kĂŒsimustele vastab Istio. Selleks paigutab Istio igasse podi sidecar-proksi Envoy Proksi Envoy pĂŒĂŒdab kinni kogu sissetuleva ja vĂ€ljamineva liikluse rakenduse konteineritele. See tĂ€hendab, et server ja loadgen saadakse sidecar-proksi Envoy'i kaudu ja kogu liiklus loadgen aadressile server lĂ€bib proksi Envoy'i.

Proksi Envoy'de vahelised ĂŒhendused moodustavad teenuste vĂ”rgu. Teenuste vĂ”rgu arhitektuur annab Kubernetes'ile ĂŒlemise tasandi kontrolli.

Rakenduse ettevalmistamine Istio jaoks

Kuna proksi Envoy töötavad oma konteinerites, saab Istio paigaldada GKE klastrisse, peaaegu muutmata rakenduse koodi. Kuid te olete teinud mÔningaid ettevalmistusi rakenduse tegemiseks Istio haldamiseks:

  • Teenused kĂ”igi konteinerite jaoks. Iga rakendamine server ja loadgen on seotud Kubernetes'e teenusega. Isegi loadgen, kuhu ei tule sissetulevaid pĂ€ringuid, on teenus.
  • Teenuste portidel peavad olema nimed. Kuigi GKE-s vĂ”ib teenuste porte nimeta jĂ€tta, nĂ”uab Istio pordil nime vastavalt tema protokollile. YAML-failis on port server kandideerib http, kuna server kasutab protokolli HTTP. Kui teenus kasutaks gRPC, siis nimetaksite porti grpc.
  • Rakendusi mĂ€rgistatakse. SeetĂ”ttu saate kasutada Istio liikluse juhtimise funktsioone, nĂ€iteks jagada liiklust ĂŒhe teenuse versioonide vahel.

Istio installimine

Istio installimiseks on kaks meetodit. VĂ”ite aktiveerida Istio on GKE laienduse vĂ”i installida avatud lĂ€htekoodiga versiooni Istio klastrisse. Istio on GKE abil on lihtne hallata Istio paigaldamist ja uuendamist GKE klastro elutsĂŒkli raames. Kui vajate kĂ”ige uuemat Istio versiooni vĂ”i rohkem kontrolli Istio juhtpaneeli seadistuse ĂŒle, installige avatud lĂ€htekoodiga versioon, mitte Istio on GKE laiendus. Otsustamiseks lugege artiklit Kas mul on vaja Istio on GKE?.

Valige variant, uurige vastavat juhendit ja jÀrgige juhiseid, et paigaldada Istio klastrisse. Kui soovite kasutada Istio just valminud rakendusega, aktiveerige sidecar'ide juurutamine nimeala SeejÀrel kÀivitame exec kÀsu ja ootame 5000 sekundit, et jÀtkata jÀlgimist:.

Puhastamine

Et vÀltida Google Cloud Platformi konto arveldamist nende ressursside eest, mida oled selles juhendis kasutanud, eemalda konteineriklaster pÀrast Istio installimist ja rakenduse nÀitega mÀngimist. Sellega eemaldatakse kÔik klastriga seotud ressursid, nÀiteks arvutieksemplarid, kettad ja vÔrguressursid.

Mis edasi?

Allikas: habr.com

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster