Nyiyapake aplikasi kanggo Istio

Nyiyapake aplikasi kanggo Istio

Istio minangka alat sing trep kanggo nyambungake, ngamanake lan ngawasi aplikasi sing disebarake. Istio nggunakake macem-macem teknologi kanggo mbukak lan ngatur piranti lunak ing skala, kalebu wadhah kanggo paket kode aplikasi lan dependensi kanggo penyebaran, lan Kubernetes kanggo ngatur wadhah kasebut. Mula, kanggo nggarap Istio, sampeyan kudu ngerti kepiye aplikasi kanthi macem-macem layanan adhedhasar teknologi kasebut tanpa Istio. Yen alat lan konsep iki wis kenal karo sampeyan, aja lali skip tutorial iki lan langsung menyang bagean kasebut Nginstal Istio ing Google Kubernetes Engine (GKE) utawa nginstal extension Istio ing GKE.

Iki minangka pandhuan langkah-langkah ing ngendi kita bakal ngliwati kabeh proses saka kode sumber menyang wadhah GKE supaya sampeyan entuk pangerten dhasar babagan teknologi kasebut kanthi conto. Sampeyan uga bakal weruh kepiye Istio nggunakake kekuwatan teknologi kasebut. Iki nganggep sampeyan ora ngerti apa-apa babagan wadhah, Kubernetes, jejaring layanan, utawa Istio.

tugas

Ing tutorial iki, sampeyan bakal ngrampungake tugas ing ngisor iki:

  1. Sinau aplikasi hello world sing prasaja kanthi macem-macem layanan.
  2. Jalanake aplikasi saka kode sumber.
  3. Packaging aplikasi ing kontaner.
  4. Nggawe kluster Kubernetes.
  5. Nyebarake wadhah menyang kluster.

Sadurunge miwiti

Tindakake pandhuan kanggo ngaktifake Kubernetes Engine API:

  1. Menyang Kaca Kubernetes Engine ing konsol Google Cloud Platform.
  2. Gawe utawa pilih proyek.
  3. Enteni nganti API lan layanan sing gegandhengan diaktifake. Iki bisa njupuk sawetara menit.
  4. Priksa manawa tagihan wis disetel kanggo proyek Google Cloud Platform. Sinau carane ngaktifake tagihan.

Ing tutorial iki, sampeyan bisa nggunakake Cloud Shell, sing nyiapake mesin virtual g1-cilik ing Google Compute Engine karo Linux basis Debian, utawa komputer Linux utawa macOS.

Pilihan A: Nggunakake Cloud Shell

Keuntungan nggunakake Cloud Shell:

  • Lingkungan pangembangan Python 2 lan Python 3 (kalebu virtualenv) wis dikonfigurasi kanthi lengkap.
  • Piranti Command Line gcloud, docker, Go ΠΈ kubectl, sing bakal digunakake wis diinstal.
  • Sampeyan duwe sawetara kanggo milih saka editor teks:
    1. Editor kode, sing mbukak nganggo lambang suntingan ing sisih ndhuwur jendhela Cloud Shell.
    2. Emacs, Vim utawa Nano, sing mbukak saka baris printah ing Cloud Shell.

Kanggo nggunakake Cangkang Awan:

  1. Pindhah menyang konsol GCP.
  2. Klik tombol Aktifake Cloud Shell (Aktifake Cloud Shell) ing sisih ndhuwur jendhela console GCP.

Nyiyapake aplikasi kanggo Istio

Ing sisih ngisor konsol GCP Sesi Cloud Shell kanthi baris printah bakal mbukak ing jendela anyar.

Nyiyapake aplikasi kanggo Istio

Pilihan B: Nggunakake Command Line Tools Lokal

Yen sampeyan bakal nggarap komputer sing nganggo Linux utawa macOS, sampeyan kudu ngatur lan nginstal komponen ing ngisor iki:

  1. Ngatur Lingkungan pangembangan Python 3 lan Python 2.

  2. Instal Cloud SDK karo alat baris printah gcloud.

  3. Instal kubectl - alat baris printah kanggo nggarap Kubernetes.

    gcloud components install kubectl

  4. Instal Docker Community Edition (CE). Sampeyan bakal nggunakake alat baris perintah dockerkanggo nggawe gambar wadhah kanggo aplikasi sampel.

  5. Instal alat kasebut Kontrol versi Gitkanggo njupuk aplikasi sampel saka GitHub.

Download kode sampel

  1. Ngundhuh kode sumber helloserver:

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

  2. Pindhah menyang direktori kode conto:

    cd istio-samples/sample-apps/helloserver

Njelajah aplikasi kanthi macem-macem layanan

Aplikasi sampel ditulis ing Python lan kasusun saka rong komponen sing sesambungan nggunakake REST:

  • server: server prasaja karo siji titik pungkasan GET, /, kang prints "hello world" kanggo console.
  • loadgen: script sing ngirim lalu lintas menyang server, kanthi jumlah panjaluk sing bisa dikonfigurasi saben detik.

Nyiyapake aplikasi kanggo Istio

Mbukak aplikasi saka kode sumber

Kanggo njelajah aplikasi conto, bukak ing Cloud Shell utawa ing komputer.
1) Ing katalog istio-samples/sample-apps/helloserver mlayu server:

python3 server/server.py

Ing wiwitan server ing ngisor iki ditampilake:

INFO:root:Starting server...

2) Bukak jendhela terminal liyane kanggo ngirim panjalukan server. Yen sampeyan nggunakake Cloud Shell, klik lambang tambah kanggo mbukak sesi liyane.
3) Kirimi panjalukan menyang server:

curl http://localhost:8080

wangsulan server:

Hello World!

4) Saka direktori ing ngendi sampeyan ndownload kode sampel, pindhah menyang direktori sing ngemot loadgen:

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

5) Nggawe variabel lingkungan ing ngisor iki:

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

6) Bukak virtualenv:

virtualenv --python python3 env

7) Aktifake lingkungan virtual:

source env/bin/activate

8) Nyetel syarat kanggo loadgen:

pip3 install -r requirements.txt

9) Bukak loadgen:

python3 loadgen.py

Ing wiwitan loadgen nampilake kaya pesen ing ngisor iki:

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

Ing jendhela terminal liyane server Output pesen ing ngisor iki menyang 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: */*

Saka perspektif jaringan, kabeh aplikasi mlaku ing host siji (komputer lokal utawa mesin virtual Cloud Shell). Mulane sampeyan bisa nggunakake localhostkanggo ngirim panjalukan kanggo server.
10) Kanggo mungkasi loadgen ΠΈ server, mlebu Ctrl-c ing saben jendhela terminal.
11) Ing jendhela terminal loadgen mateni lingkungan virtual:

deactivate

Packaging aplikasi ing kontaner

Kanggo mbukak aplikasi ing GKE, sampeyan kudu paket conto aplikasi βˆ’ server ΠΈ loadgen - ing kontaner. Wadah minangka cara kanggo ngemas aplikasi kanggo ngisolasi saka lingkungane.

Kanggo paket aplikasi menyang wadhah, sampeyan kudu file docker. file docker minangka file teks sing nemtokake printah kanggo mbangun kode sumber aplikasi lan dependensi Gambar Docker. Sawise dibangun, sampeyan ngunggah gambar menyang registri wadhah kayata Docker Hub utawa Registry kontainer.

Tuladhane wis ana file docker kanggo server ΠΈ loadgen karo kabeh prentah sing perlu kanggo ngumpulake gambar. Ngisor - file docker kanggo 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" ]

  • tim Saka python: 3-slim minangka basa ngandhani Docker nggunakake paling anyar Gambar Python 3 minangka dhasar.
  • tim COPY. . nyalin file sumber menyang direktori kerja saiki (mung ing kasus kita server.py) menyang sistem file wadhah.
  • ENTRYPOINT nemtokake printah sing digunakake kanggo miwiti wadhah. Ing kasus kita, printah iki meh padha karo sing digunakake kanggo mbukak server.py saka kode sumber.
  • tim Mbabarake nuduhake yen server ngenteni data liwat port 8080. Tim iki ora menehi bandar. Iki minangka sawetara dokumentasi sing dibutuhake kanggo mbukak port kasebut 8080 nalika miwiti wadhah.

Nyiyapake kanggo containerize aplikasi sampeyan

1) Setel variabel lingkungan ing ngisor iki. Ganti PROJECT_ID menyang ID proyek GCP sampeyan.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Nggunakake nilai PROJECT_ID ΠΈ GCR_REPO sampeyan menehi tag gambar Docker nalika sampeyan mbangun lan push menyang Registry Container pribadi.

2) Setel proyek GCP standar kanggo alat baris printah gcloud.

gcloud config set project $PROJECT_ID

3) Setel zona gawan kanggo alat baris printah gcloud.

gcloud config set compute/zone us-central1-b

4) Priksa manawa layanan Container Registry diaktifake ing proyek GCP.

gcloud services enable containerregistry.googleapis.com

Server kontainerisasi

  1. Pindhah menyang direktori ing ngendi conto kasebut dumunung server:

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

  2. Nglumpukake gambar nggunakake file docker lan variabel lingkungan sing wis ditemtokake sadurunge:

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

Parameter -t nggantosi tag Docker. Iki jeneng gambar sing sampeyan gunakake nalika nyebarake wadhah kasebut.

  1. Unggah gambar menyang Registry Kontainer:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Kontainerisasi loadgen

1) Pindhah menyang direktori ing ngendi conto kasebut dumunung loadgen:

cd ../loadgen

2) Ngumpulake gambar:

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

3) Unggah gambar menyang Registry Kontainer:

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

Deleng dhaptar gambar

Deleng dhaptar gambar ing repositori lan verifikasi manawa gambar kasebut wis diunggah:

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

Printah kasebut nampilake jeneng gambar sing mentas diunggah:

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

Nggawe klompok GKE.

Wadah kasebut bisa ditindakake ing mesin virtual Cloud Shell utawa ing komputer kanthi prentah kasebut docker run. Nanging ing lingkungan produksi, sampeyan butuh cara kanggo ngatur kontainer kanthi pusat. Contone, sampeyan butuh sistem sing nggawe manawa kontaner tansah mlaku, lan sampeyan butuh cara kanggo nggedhekake lan muter kasus kontainer tambahan yen lalu lintas mundhak.

Kanggo mbukak aplikasi containerized sampeyan bisa nggunakake G.K.E.. GKE minangka platform orkestrasi wadah sing nggabungake mesin virtual dadi kluster. Saben mesin virtual diarani simpul. Kluster GKE adhedhasar sistem manajemen kluster Kubernetes open source. Kubernetes nyedhiyakake mekanisme kanggo sesambungan karo kluster.

Nggawe cluster GKE:

1) Nggawe klaster:

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

tim gcloud nggawe kluster istioready ing proyek GCP lan zona gawan sing sampeyan nemtokake. Kanggo mbukak Istio, disaranake duwe paling ora 4 kelenjar lan mesin virtual n1-standar-2.

Tim nggawe kluster ing sawetara menit. Nalika kluster wis siyap, printah kasebut ngasilake kaya iki pesen.

2) Nyedhiyakake kredensial ing alat baris perintah kubectldigunakake kanggo ngatur kluster:

gcloud container clusters get-credentials istioready

3) Saiki sampeyan bisa komunikasi karo Kubernetes liwat kubectl. Contone, prentah ing ngisor iki bisa ngerteni status simpul:

kubectl get nodes

Printah kasebut ngasilake dhaptar node:

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

Konsep Kunci Kubernetes

Diagram nuduhake aplikasi ing GKE:

Nyiyapake aplikasi kanggo Istio

Sadurunge masang wadhah ing GKE, sinau konsep kunci Kubernetes. Ana pranala ing pungkasan yen sampeyan pengin sinau luwih akeh.

  • Node lan kluster. Ing GKE, simpul minangka mesin virtual. Ing platform Kubernetes liyane, simpul bisa dadi komputer utawa mesin virtual. Kluster minangka kumpulan simpul sing bisa dianggep minangka unit siji ing ngendi sampeyan nyebarake aplikasi sing dikontainer.
  • Podho. Ing Kubernetes, wadhah mbukak ing pods. Pod ing Kubernetes minangka unit sing ora bisa dipisahake. A Pod ngemot siji utawa luwih wadhah. Sampeyan nyebarke kontaner server lan loadgen ing pods kapisah. Nalika ana sawetara kontaner ing pod (contone, server aplikasi lan server proxy), wadhah dikelola minangka entitas siji lan nuduhake sumber daya pod.
  • Penyebaran. Ing Kubernetes, panyebaran minangka obyek sing minangka kumpulan polong sing padha. Penyebaran ngluncurake pirang-pirang replika polong sing disebar ing node kluster. Panyebaran kanthi otomatis ngganti pods sing gagal utawa ora responsif.
  • layanan Kubernetes. Nalika mbukak kode aplikasi ing GKE, sambungan antarane loadgen ΠΈ server. Nalika sampeyan miwiti layanan ing mesin virtual Cloud Shell utawa desktop, sampeyan ngirim panjalukan kanggo server dening alamat localhost: 8080. Sawise disebarake menyang GKE, pods dieksekusi ing node sing kasedhiya. Kanthi gawan, sampeyan ora duwe kontrol liwat simpul sing polong mlaku, mula sampeyan polong ora ana alamat IP permanen.
    Kanggo entuk alamat IP kanggo server, sampeyan kudu nemtokake abstraksi jaringan ing ndhuwur pods. Mekaten punika layanan Kubernetes. Layanan Kubernetes nyedhiyakake titik pungkasan sing terus-terusan kanggo sakumpulan pod. Ana sawetara jinis layanan. server nggunakake LoadBalancer, sing nyedhiyakake alamat IP eksternal kanggo dihubungi server saka njaba kluster.
    Kubernetes uga duwe sistem DNS sing wis dibangun sing menehi jeneng DNS (contone, helloserver.default.cluster.local) layanan. Thanks kanggo iki, pods ing kluster komunikasi karo pods liyane ing kluster ing alamat permanen. Jeneng DNS ora bisa digunakake ing njaba kluster, kayata ing Cloud Shell utawa ing komputer.

Kubernetes manifests

Nalika sampeyan mbukak aplikasi saka sumber, sampeyan nggunakake printah imperatif python3

server.py

Imperatif tegese tembung kriya: "nglakoni iki."

Kubernetes migunakake model deklaratif. Iki tegese kita ora ngandhani Kubernetes persis apa sing kudu ditindakake, nanging nggambarake kahanan sing dikarepake. Contone, Kubernetes miwiti lan mungkasi pods yen perlu kanggo mesthekake yen kahanan nyata saka sistem cocog karo negara sing dikarepake.

Sampeyan nuduhake negara sing dikarepake ing manifests utawa file YAML. Berkas YAML ngemot spesifikasi kanggo siji utawa luwih obyek Kubernetes.

Conto ngemot file YAML kanggo server ΠΈ loadgen. Saben file YAML nemtokake kahanan sing dikarepake saka obyek penyebaran lan layanan 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

  • jenis nuduhake jinis obyek.
  • metadata.jeneng nemtokake jeneng panyebaran.
  • Lapangan pisanan spec ngemot katrangan babagan kahanan sing dikarepake.
  • spec.replika nuduhake jumlah polong sing dikarepake.
  • Bagean spec.template nemtokake cithakan pod. Ana lapangan ing spesifikasi pod gambar, sing nemtokake jeneng gambar sing kudu diekstrak saka Registry Kontainer.

Layanan kasebut ditetepake kaya ing ngisor iki:

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

  • LoadBalancer: Klien ngirim panjalukan menyang alamat IP saka load balancer, sing nduweni alamat IP sing terus-terusan lan bisa diakses saka njaba kluster.
  • targetPort: sing elinga, tim PABRIK 8080 Π² file docker ora nyedhiyani bandar. Sampeyan nyedhiyani port 8080supaya sampeyan bisa hubungi wadhah server njaba kluster. Ing kasus kita hellosvc.default.cluster.local:80 (jeneng singkat: hellosvc) cocog karo port 8080 Alamat IP Pod helloserver.
  • port: Iki nomer port ngendi layanan liyane ing kluster bakal ngirim panjalukan.

loadgen.yaml

Panyebaran obyek kanggo loadgen.yaml katon kaya server.yaml. Bentenane yaiku obyek penyebaran ngemot bagean sugeng. Iki nemtokake variabel lingkungan sing dibutuhake loadgen lan sing diinstal nalika mbukak aplikasi saka sumber.

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

Wektu loadgen ora nampa panjalukan mlebu, kanggo lapangan jinis dituduhake KlusterIP. Jinis iki menehi alamat IP terus-terusan sing layanan ing kluster bisa digunakake, nanging alamat IP iki ora kapapar klien external.

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

Nyebarake Wadhah ing GKE

1) Pindhah menyang direktori ing ngendi conto kasebut dumunung server:

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

2) Bukak server.yaml ing editor teks.
3) Ganti jeneng ing lapangan gambar kanggo jeneng gambar Docker sampeyan.

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

Ganti PROJECT_ID menyang ID proyek GCP sampeyan.
4) Simpen lan nutup server.yaml.
5) Pasang file YAML menyang Kubernetes:

kubectl apply -f server.yaml

Sawise rampung, printah kasebut ngasilake kode ing ngisor iki:

deployment.apps/helloserver created
service/hellosvc created

6) Pindhah menyang direktori ngendi loadgen:

cd ../loadgen

7) Bukak loadgen.yaml ing editor teks.
8) Ganti jeneng ing lapangan gambar kanggo jeneng gambar Docker sampeyan.

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

Ganti PROJECT_ID menyang ID proyek GCP sampeyan.
9) Simpen lan nutup loadgen.yaml, tutup editor teks.
10) Pasang file YAML menyang Kubernetes:

kubectl apply -f loadgen.yaml

Sawise rampung, printah kasebut ngasilake kode ing ngisor iki:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Priksa status pods:

kubectl get pods

Perintah kasebut nuduhake status:

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

12) Ekstrak log aplikasi saka pod loadgen. Ganti POD_ID menyang pengenal saka jawaban sadurunge.

kubectl logs loadgenerator-POD_ID

13) Entuk alamat IP eksternal hellosvc:

kubectl get service

Tanggapan perintah katon kaya iki:

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) Kirimi panjalukan menyang hellosvc: ngganti EXTERNAL_IP menyang alamat IP eksternal hellosvc.

curl http://EXTERNAL_IP

Ayo dadi njupuk Istio

Sampeyan wis duwe aplikasi sing disebarake menyang GKE. loadgen bisa nggunakake DNS Kubernetes (hellosvc:80) kanggo ngirim panjalukan kanggo serverlan sampeyan bisa ngirim panjalukan kanggo server dening alamat IP eksternal. Sanajan Kubernetes nduweni akeh fitur, ana sawetara informasi sing ilang babagan layanan kasebut:

  • Kepiye cara interaksi layanan? Apa hubungane antarane layanan? Kepiye arus lalu lintas ing antarane layanan? Apa sampeyan ngerti loadgen ngirim panjalukan kanggo server, nanging mbayangno sing ora ngerti apa-apa bab aplikasi. Kanggo mangsuli pitakon kasebut, deleng dhaptar polong sing mlaku ing GKE.
  • Metrik. Suwene server nanggapi panjalukan sing mlebu? Carane akeh panjalukan saben detik ditampa dening server? Apa menehi pesen kesalahan?
  • Informasi Keamanan. Lalu lintas antarane loadgen ΠΈ server mung liwat HTTP utawa dening mTLS?

Istio njawab kabeh pitakonan iki. Kanggo nindakake iki, Istio nyelehake proxy sidecar Envoy ing saben pod. Proksi Utusan nyegat kabeh lalu lintas mlebu lan metu menyang wadhah aplikasi. Iku tegese server ΠΈ loadgen nampa liwat sidecar proxy Utusan, lan kabeh lalu lintas saka loadgen ΠΊ server liwat proxy Utusan.

Sambungan antarane proksi Utusan mbentuk bolong layanan. Arsitektur bolong layanan nyedhiyakake lapisan kontrol ing ndhuwur Kubernetes.

Nyiyapake aplikasi kanggo Istio

Wiwit proxy Envoy mbukak ing wadhah dhewe, Istio bisa diinstal ing ndhuwur klompok GKE karo meh ora owah-owahan ing kode aplikasi. Nanging sampeyan wis nindakake sawetara karya kanggo nyiyapake aplikasi sampeyan supaya bisa dikelola dening Istio:

  • Layanan kanggo kabeh kontaner. Kanggo penyebaran server ΠΈ loadgen disambungake menyang layanan Kubernetes. Malah loadgen, sing ora nampa panjalukan mlebu, ana layanan.
  • Pelabuhan ing layanan kudu duwe jeneng. Sanajan port layanan bisa ditinggal tanpa jeneng ing GKE, Istio mbutuhake sampeyan nemtokake jeneng port miturut protokole. Ing file YAML port kanggo server disebut httpamarga server nggunakake protokol HTTP... Yen layanan digunakake gRPC, sampeyan bakal menehi jeneng port grpc.
  • Panyebaran diwenehi tandha. Mula, sampeyan bisa nggunakake fitur manajemen lalu lintas Istio, kayata pamisah lalu lintas antarane versi layanan sing padha.

Nginstal Istio

Ana rong cara kanggo nginstal Istio. Saget ngaktifake Istio ing ekstensi GKE utawa nginstal versi open source saka Istio ing kluster. Kanthi Istio ing GKE, sampeyan bisa kanthi gampang ngatur instalasi lan nganyarke Istio sajrone siklus urip kluster GKE. Yen sampeyan pengin versi paling anyar saka Istio utawa kontrol liyane liwat konfigurasi panel kontrol Istio, nginstal versi open source tinimbang ekstensi Istio ing GKE. Kanggo mutusake pendekatan kasebut, waca artikel kasebut Apa aku butuh Istio ing GKE?.

Pilih opsi, deleng pandhuan sing cocog, lan tindakake pandhuan kanggo nginstal Istio ing kluster sampeyan. Yen sampeyan pengin nggunakake Istio karo aplikasi sing mentas disebarake, ngaktifake implementasi sidecar kanggo namespace standar.

Reresik

Supaya ora dikenani biaya menyang akun Google Cloud Platform kanggo sumber daya sing digunakake ing tutorial iki, mbusak kluster wadhah yen sampeyan wis nginstal Istio lan muter karo aplikasi sampel. Iki bakal mbusak kabeh sumber daya kluster, kayata conto komputasi, disk, lan sumber daya jaringan.

Apa sabanjurΓ©?

Source: www.habr.com

Add a comment