Nyiapkeun aplikasi pikeun Istio

Nyiapkeun aplikasi pikeun Istio

Istio mangrupikeun alat anu gampang pikeun nyambungkeun, ngamankeun sareng ngawaskeun aplikasi anu disebarkeun. Istio ngagunakeun rupa-rupa téknologi pikeun ngajalankeun sareng ngatur parangkat lunak dina skala, kalebet wadah pikeun ngarangkep kode aplikasi sareng katergantungan pikeun panyebaran, sareng Kubernetes pikeun ngatur wadah éta. Janten, pikeun damel sareng Istio anjeun kedah terang kumaha aplikasi sareng sababaraha jasa dumasar kana téknologi ieu tanpa Istio. Upami alat sareng konsép ieu parantos wawuh ka anjeun, punten luncat kana tutorial ieu sareng langsung ka bagian éta Masang Istio dina Google Kubernetes Engine (GKE) atanapi masang ekstensi Istio on GKE.

Ieu mangrupikeun pituduh léngkah-léngkah dimana urang bakal ngalangkungan sadayana prosés tina kode sumber ka wadahna GKE supados anjeun ngartos dasar téknologi ieu sareng conto. Anjeun ogé bakal ningali kumaha Istio ngamangpaatkeun kakuatan téknologi ieu. Ieu nganggap anjeun henteu terang naon-naon ngeunaan wadah, Kubernetes, jaring jasa, atanapi Istio.

pancén

Dina tutorial ieu, anjeun bakal ngalengkepan tugas di handap ieu:

  1. Diajar aplikasi halo dunya anu sederhana sareng sababaraha jasa.
  2. Jalankeun aplikasi tina kode sumber.
  3. Bungkusan aplikasi dina peti.
  4. Nyieun klaster Kubernetes.
  5. Deploying peti kana klaster.

Sateuacan anjeun ngamimitian

Turutan parentah pikeun ngaktipkeun Kubernetes Engine API:

  1. Buka Kaca Kubernetes Engine dina konsol Google Cloud Platform.
  2. Jieun atawa pilih proyék.
  3. Antosan dugi ka API sareng jasa anu aya hubunganana diaktipkeun. Ieu tiasa nyandak sababaraha menit.
  4. Pastikeun tagihan tos disetel pikeun proyék Google Cloud Platform anjeun. Diajar kumaha ngaktipkeun tagihan.

Dina tutorial ieu, anjeun tiasa nganggo Cloud Shell, anu nyiapkeun mesin virtual g1-leutik dina Google Compute Engine sareng Linux basis Debian, atanapi komputer Linux atanapi macOS.

Pilihan A: Ngagunakeun Cloud Shell

Kauntungan ngagunakeun Cloud Shell:

  • Lingkungan pangembangan Python 2 sareng Python 3 (kalebet virtualenv) geus pinuh ngonpigurasi.
  • Paréntah Line Pakakas gcloud, docker, séwang и kubectl, anu bakal kami anggo parantos dipasang.
  • Anjeun gaduh sababaraha pilihan éditor téks:
    1. Éditor kode, nu muka ku ikon édit di luhureun jandela Cloud Shell.
    2. Emacs, Vim atanapi Nano, anu muka tina garis paréntah dina Cloud Shell.

Ngagunakeun Cangkang Awan:

  1. Pindah ka konsol GCP.
  2. pers Aktipkeun Cloud Shell (Aktipkeun Cloud Shell) di luhureun jandela konsol GCP.

Nyiapkeun aplikasi pikeun Istio

Dina bagian handap konsol GCP Sesi Cloud Shell sareng garis paréntah bakal dibuka dina jandela anyar.

Nyiapkeun aplikasi pikeun Istio

Pilihan B: Ngagunakeun Alat Jalur Komando Lokal

Upami anjeun badé damel dina komputer anu ngajalankeun Linux atanapi macOS, anjeun kedah ngonpigurasikeun sareng masang komponén ieu:

  1. Ngaropea Python 3 jeung Python 2 lingkungan ngembangkeun.

  2. Pasang Cloud SDK kalawan alat garis paréntah gcloud.

  3. Masang kubectl - alat garis paréntah pikeun gawé bareng Kubernetes.

    gcloud components install kubectl

  4. Masang Docker Community Edition (CE). Anjeun bakal nganggo alat garis paréntah dockerpikeun nyieun gambar wadahna pikeun aplikasi sampel.

  5. Pasang alat kontrol Vérsi Gitpikeun meunangkeun aplikasi sampel ti GitHub.

Unduh kode sampel

  1. Unduh kodeu sumberna helloserver:

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

  2. Pindah ka diréktori kode conto:

    cd istio-samples/sample-apps/helloserver

Ngajalajah hiji aplikasi kalawan sababaraha layanan

Aplikasi sampel ditulis dina Python sarta diwangun ku dua komponén anu berinteraksi ngagunakeun ngaso:

  • server: server basajan kalawan hiji titik tungtung KANGGO,/, nu prints "halo dunya" pikeun konsol nu.
  • loadgen: Aksara nu ngirim lalulintas keur server, kalawan jumlah configurable of requests per detik.

Nyiapkeun aplikasi pikeun Istio

Ngajalankeun aplikasi tina kode sumber

Pikeun ngajalajah aplikasi sampel, jalankeun dina Cloud Shell atawa dina komputer Anjeun.
1) Dina katalog istio-sampel / sampel-aplikasi / helloserver lumpat server:

python3 server/server.py

Dina ngamimitian server di handap ieu dipintonkeun:

INFO:root:Starting server...

2) Buka jandela terminal sejen pikeun ngirim requests ka server. Upami anjeun nganggo Cloud Shell, klik ikon tambihan pikeun muka sési anu sanés.
3) Kirim pamundut ka server:

curl http://localhost:8080

jawaban server:

Hello World!

4) Tina diréktori dimana anjeun unduh kode sampel, angkat ka diréktori anu ngandung loadgen:

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

5) Jieun variabel lingkungan ieu di handap:

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

6) Lumpat virtualenv:

virtualenv --python python3 env

7) Aktipkeun lingkungan virtual:

source env/bin/activate

8) Nyetél sarat pikeun loadgen:

pip3 install -r requirements.txt

9) Lumpat loadgen:

python3 loadgen.py

Dina ngamimitian loadgen nembongkeun hal kawas pesen di handap ieu:

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

Dina jandela terminal sejen server outputs pesen handap pikeun konsol nu:

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: */*

Tina sudut pandang jaringan, sadaya aplikasi dijalankeun dina hiji host (komputer lokal atanapi mesin virtual Cloud Shell). Ku kituna anjeun bisa make localhostpikeun ngirim requests ka server.
10) Pikeun eureun loadgen и server, asupkeun Ctrl-c dina unggal jandela terminal.
11) Dina jandela terminal loadgen nganonaktipkeun lingkungan virtual:

deactivate

Bungkusan aplikasi dina peti

Pikeun ngajalankeun aplikasi dina GKE, anjeun kedah ngarangkep conto aplikasi − server и loadgen - at peti. Wadah mangrupikeun cara pikeun ngarangkep aplikasi pikeun ngasingkeunana tina lingkunganana.

Pikeun ngarangkep aplikasi kana wadahna, anjeun peryogi dockerfile. dockerfile nyaéta file téks anu netepkeun paréntah pikeun ngawangun kode sumber aplikasi sareng dependensi na Gambar Docker. Saatos diwangun, anjeun unggah gambar kana pendaptaran wadah sapertos Docker Hub atanapi pendaptaran wadahna.

Contona geus boga dockerfile keur server и loadgen kalayan sagala paréntah diperlukeun pikeun ngumpulkeun gambar. Di handap - dockerfile keur 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" ]

  • regu FROM python: 3-langsing salaku dasar ngabejaan Docker ngagunakeun panganyarna gambar Python 3 salaku dasar.
  • regu NYALIN. . nyalin file sumber kana diréktori kerja ayeuna (dina kasus urang wungkul server.py) kana sistem file wadahna.
  • ENTRYPOINT ngahartikeun paréntah anu dipaké pikeun ngamimitian wadahna. Dina kasus urang, paréntah ieu ampir sami sareng anu anjeun biasa jalankeun server.py tina kode sumber.
  • regu NGABUNGKEUN nunjukkeun yén server ngantosan data ngaliwatan port 8080. Tim ieu henteu nyadiakeun palabuhan. Ieu sababaraha jenis dokuméntasi anu diperlukeun pikeun muka port nu 8080 nalika ngamimitian wadahna.

Nyiapkeun pikeun wadahna aplikasi anjeun

1) Atur variabel lingkungan di handap ieu. Ngaganti PROJECT_ID ka ID proyék GCP Anjeun.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Ngagunakeun nilai PROJECT_ID и GCR_REPO Anjeun méré tag gambar Docker nalika anjeun ngawangun sareng nyorong kana pendaptaran Wadahna pribadi.

2) Setel proyék GCP standar pikeun alat baris paréntah gcloud.

gcloud config set project $PROJECT_ID

3) Setel zona standar pikeun alat garis paréntah gcloud.

gcloud config set compute/zone us-central1-b

4) Pastikeun yén layanan Container Registry diaktipkeun dina proyék GCP.

gcloud services enable containerregistry.googleapis.com

server Containerization

  1. Pindah ka diréktori dimana conto ayana server:

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

  2. Nyusun gambar nganggo dockerfile sareng variabel lingkungan anu anjeun tangtukeun sateuacana:

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

parameter -t ngagambarkeun tag Docker. Ieu mangrupikeun nami gambar anu anjeun anggo nalika nyebarkeun wadahna.

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

Containerization of loadgen

1) Pindah ka diréktori dimana conto ayana loadgen:

cd ../loadgen

2) Kumpulkeun gambar:

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

3) Unggah gambar ka Pendaptaran Wadahna:

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

Nempo daptar gambar

Pariksa daptar gambar dina gudang sareng pariksa yén gambar éta parantos diunggah:

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

Paréntah nampilkeun nami gambar anu nembé diunggah:

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

Nyieun klaster GKE.

Wadah ieu tiasa dijalankeun dina mesin virtual Cloud Shell atanapi dina komputer nganggo paréntah docker ngaji. Tapi dina lingkungan produksi, anjeun peryogi cara pikeun ngatur wadahna. Salaku conto, anjeun peryogi sistem anu mastikeun yén wadahna sok dijalankeun, sareng anjeun peryogi cara pikeun skala sareng spin up instansi wadahna tambahan upami lalu lintas ningkat.

Pikeun ngajalankeun aplikasi containerized Anjeun tiasa make G.K.E.. GKE mangrupikeun platform orkestrasi wadah anu ngahijikeun mesin virtual kana klaster. Unggal mesin virtual disebut node. Klaster GKE dumasar kana sistem manajemen klaster Kubernetes open source. Kubernetes nyadiakeun mékanisme pikeun interaksi jeung klaster.

Nyieun klaster GKE:

1) Jieun klaster:

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

regu gcloud nyiptakeun kluster istioready dina proyék GCP sareng zona standar anu anjeun atur. Pikeun ngajalankeun Istio, kami nyarankeun gaduh sahenteuna 4 titik sareng mesin virtual n1-baku-2.

Tim nyiptakeun klaster dina sababaraha menit. Nalika kluster parantos siap, paréntah kaluaran sapertos kieu pesen.

2) Nyadiakeun Kapercayaan dina alat garis paréntah kubectlngagunakeun éta pikeun ngatur klaster:

gcloud container clusters get-credentials istioready

3) Ayeuna anjeun tiasa komunikasi sareng Kubernetes via kubectl. Contona, paréntah di handap ieu bisa manggihan status titik:

kubectl get nodes

Paréntah ngahasilkeun daptar titik:

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 konci Kubernetes

Diagram nunjukkeun aplikasi dina GKE:

Nyiapkeun aplikasi pikeun Istio

Sateuacan anjeun nyebarkeun wadah dina GKE, diajar konsép konci Kubernetes. Aya tautan di tungtung upami anjeun hoyong diajar langkung seueur.

  • Titik sareng klaster. Dina GKE, titik mangrupikeun mesin virtual. Dina platform Kubernetes anu sanés, node tiasa janten komputer atanapi mesin virtual. Kluster mangrupikeun kumpulan titik anu tiasa dianggap unit tunggal dimana anjeun nyebarkeun aplikasi wadahna.
  • Polong. Dina Kubernetes, wadahna dijalankeun dina pods. Pod di Kubernetes mangrupikeun unit anu teu tiasa dipisahkeun. A Pod nahan hiji atawa leuwih wadahna. Anjeun nyebarkeun wadah server na loadgen dina pods misah. Nalika aya sababaraha wadah dina pod (contona, server aplikasi sareng server proxy), wadahna dikokolakeun salaku éntitas tunggal sareng ngabagi sumberdaya pod.
  • Deployments. Dina Kubernetes, panyebaran mangrupikeun obyék anu mangrupikeun kumpulan pods idéntik. Deployment ngaluncurkeun sababaraha réplika pods anu disebarkeun dina titik kluster. Deployment otomatis ngagentos pods anu gagal atanapi henteu responsif.
  • jasa Kubernetes. Nalika ngajalankeun kode aplikasi dina GKE, sambungan antara loadgen и server. Nalika anjeun ngamimitian jasa dina mesin virtual atanapi desktop Cloud Shell, anjeun ngirim pamundut ka server ku alamat localhost: 8080. Sakali disebarkeun ka GKE, pods dieksekusi dina titik anu sayogi. Sacara standar, anjeun teu boga kontrol leuwih titik nu pod ngajalankeun on, jadi Anjeun polong euweuh alamat IP permanén.
    Pikeun ménta alamat IP pikeun server, Anjeun kudu nangtukeun hiji abstraksi jaringan dina luhureun pods. Éta naon éta jasa Kubernetes. Ladenan Kubernetes nyadiakeun endpoint persisten pikeun sakumpulan pods. Aya sababaraha jenis jasa. server ngagunakeun LoadBalancer, nu nyadiakeun alamat IP éksternal pikeun kontak server ti luar klaster.
    Kubernetes ogé gaduh sistem DNS anu diwangun anu masihan nami DNS (contona, helloserver.default.cluster.local) jasa. Hatur nuhun kana ieu, pods dina kluster komunikasi sareng pods séjén dina kluster dina alamat konstan. Ngaran DNS teu tiasa dianggo di luar klaster, sapertos dina Cloud Shell atanapi dina komputer.

Kubernetes manifests

Nalika anjeun ngajalankeun aplikasi tina sumber, anjeun nganggo paréntah imperatif python3

server.py

Imperative ngandung harti kecap pagawéan: "ngalakukeun ieu."

Kubernetes ngagunakeun modél déklaratif. Ieu ngandung harti yén urang teu ngabejaan Kubernetes persis naon anu kudu dipigawé, tapi rada ngajelaskeun kaayaan nu dipikahoyong. Contona, Kubernetes ngamimitian jeung ngeureunkeun pods sakumaha diperlukeun pikeun ngajaga kaayaan sabenerna sistem konsisten jeung kaayaan nu dipikahoyong.

Anjeun nunjukkeun kaayaan anu dipikahoyong dina manifests atanapi file YAML. Berkas YAML ngandung spésifikasi pikeun hiji atanapi sababaraha objék Kubernetes.

Conto ngandung file YAML pikeun server и loadgen. Unggal file YAML netepkeun kaayaan anu dipikahoyong pikeun objék panyebaran sareng jasa 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

  • hade nuduhkeun jenis objék.
  • metadata.ngaran nangtukeun nami deployment.
  • Widang munggaran Spesifikasina ngandung pedaran ngeunaan kaayaan dipikahoyong.
  • spec.replicas nunjukkeun jumlah nu dipikahoyong tina pods.
  • Bagian spec.template ngahartikeun template pod. Aya widang dina spésifikasi pod gambaran, anu nangtukeun nami gambar anu kedah diékstrak tina Pendaptaran Wadahna.

Jasa didefinisikeun kieu:

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

  • LoadBalancer: Klién ngirim requests ka alamat IP tina beban balancer, nu boga alamat IP pengkuh tur diaksés ti luar klaster.
  • targetPort: sakumaha anjeun apal, tim EXPOSE 8080 в dockerfile teu nyadiakeun palabuhan. Anjeun nyadiakeun port 8080ku kituna anjeun bisa ngahubungan wadahna server luar klaster. Dina hal urang hellosvc.default.cluster.local:80 (ngaran pondok: hellosvc) pakait jeung port 8080 Alamat IP Pod helloserver.
  • palabuhan: Ieu nomer port mana jasa lianna di kluster bakal ngirim requests.

loadgen.yaml

Obyék deployment pikeun loadgen.yaml mirip server.yaml. Bédana nyaéta yén obyék deployment ngandung bagian utusan. Éta netepkeun variabel lingkungan anu diperyogikeun loadgen sareng anu anjeun pasang nalika ngajalankeun aplikasi tina 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

sakali loadgen teu nampa requests asup, pikeun sawah ngetik tandana KlusterIP. Jenis ieu nyadiakeun alamat IP pengkuh yén layanan dina klaster bisa ngagunakeun, tapi alamat IP ieu teu kakeunaan klien éksternal.

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

Deploying Wadah di GKE

1) Pindah ka diréktori dimana conto ayana server:

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

2) Buka server.yaml dina pangropéa téksu.
3) Ganti ngaran dina widang gambaran kana nami gambar Docker anjeun.

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

Ngaganti PROJECT_ID ka ID proyék GCP Anjeun.
4) Simpen jeung nutup server.yaml.
5) Nyebarkeun file YAML ka Kubernetes:

kubectl apply -f server.yaml

Saatos parantosan suksés, paréntah ngahasilkeun kode ieu:

deployment.apps/helloserver created
service/hellosvc created

6) Pindah ka diréktori dimana loadgen:

cd ../loadgen

7) Buka loadgen.yaml dina pangropéa téksu.
8) Ganti ngaran dina widang gambaran kana nami gambar Docker anjeun.

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

Ngaganti PROJECT_ID ka ID proyék GCP Anjeun.
9) Simpen jeung nutup loadgen.yaml, tutup pangropéa téksu.
10) Nyebarkeun file YAML ka Kubernetes:

kubectl apply -f loadgen.yaml

Saatos parantosan suksés, paréntah ngahasilkeun kode ieu:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Pariksa status pods:

kubectl get pods

Paréntah nunjukkeun status:

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

12) Ékstrak log aplikasi tina pod loadgen. Ngaganti POD_ID kana identifier tina jawaban saméméhna.

kubectl logs loadgenerator-POD_ID

13) Kéngingkeun alamat IP éksternal hellosvc:

kubectl get service

Tanggapan paréntah sigana sapertos kieu:

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) Kirim pamundut ka hellosvc: ngaganti EXTERNAL_IP ka alamat IP éksternal hellosvc.

curl http://EXTERNAL_IP

Hayu urang nyandak Istio

Anjeun geus boga hiji aplikasi deployed ka GKE. loadgen tiasa nganggo DNS Kubernetes (hellosvc:80) pikeun ngirim requests ka servertur anjeun bisa ngirim requests ka server ku alamat IP éksternal. Sanaos Kubernetes gaduh seueur fitur, aya sababaraha inpormasi anu leungit ngeunaan jasa:

  • Kumaha jasa interaksi? Naon hubungan antara jasa? Kumaha aliran lalulintas antara jasa? Naha anjeun sadar éta loadgen ngirimkeun requests ka server, tapi ngabayangkeun nu teu nyaho nanaon tentang aplikasi. Pikeun ngajawab patarosan ieu, hayu urang tingali daptar pods jalan di GKE.
  • Métrik. Sakumaha lami server ngabales hiji pamundut asup? Sabaraha pamundut per detik anu ditampi ku server? Naha éta masihan pesen kasalahan?
  • Émbaran Kaamanan. Lalulintas antara loadgen и server ngan ngaliwat HTTP atanapi ku mTLS?

Istio ngajawab sakabéh patarosan ieu. Jang ngalampahkeun ieu, Istio nempatkeun proxy sidecar utusan dina unggal pod. Proksi Utusan nyegat sadaya lalu lintas asup sareng kaluar kana wadah aplikasi. Éta hartosna server и loadgen nampi via sidecar proxy Utusan, sarta sakabeh lalulintas ti loadgen к server ngaliwatan proxy Utusan.

Sambungan antara proksi Utusan ngabentuk bolong jasa. Arsitéktur bolong jasa nyadiakeun lapisan kontrol dina luhureun Kubernetes.

Nyiapkeun aplikasi pikeun Istio

Kusabab proxies Utusan dijalankeun dina peti sorangan, Istio bisa dipasang dina luhureun hiji klaster GKE kalawan ampir euweuh parobahan kode aplikasi. Tapi anjeun parantos ngalaksanakeun sababaraha padamelan pikeun nyiapkeun aplikasi anjeun pikeun dikelola ku Istio:

  • Jasa pikeun sakabéh wadahna. Pikeun deployments server и loadgen dihijikeun ka layanan Kubernetes. Komo loadgen, nu teu narima requests asup, aya layanan a.
  • Palabuhan dina jasa kedah gaduh nami. Sanajan palabuhan jasa bisa ditinggalkeun unnamed di GKE, Istio merlukeun anjeun nangtukeun ngaran port saluyu jeung protokolna. Dina file YAML port pikeun server eta anu disebut httpsabab server ngagunakeun protokol HTTP... Upami palayanan dipaké gRPC, Anjeun bakal ngaranan port grpc.
  • Deployments anu flagged. Ku alatan éta, anjeun tiasa nganggo fitur pangaturan lalu lintas Istio, sapertos ngabagi lalu lintas antara versi jasa anu sami.

Masang Istio

Aya dua cara pikeun masang Istio. Tiasa Aktipkeun Istio on GKE extension atawa install versi open source of Istio dina klaster. Kalawan Istio on GKE, anjeun bisa kalayan gampang ngatur pamasangan Istio sarta upgrades sapanjang siklus hirup klaster GKE. Upami anjeun hoyong versi panganyarna tina Istio atanapi langkung kontrol kana konfigurasi panel kontrol Istio anjeun, pasang versi open source tinimbang ekstensi Istio on GKE. Pikeun mutuskeun dina pendekatan, baca artikel Naha kuring peryogi Istio dina GKE?.

Pilih hiji pilihan, pariksa pituduh luyu, tur turutan parentah pikeun install Istio on klaster Anjeun. Upami anjeun hoyong nganggo Istio sareng aplikasi anu nembé dipasang, ngaktipkeun palaksanaan sidecar pikeun namespace standar.

Beberesih

Pikeun ngahindarkeun ditagihkeun ka akun Google Cloud Platform anjeun pikeun sumber daya anu anjeun anggo dina tutorial ieu, hapus klaster wadahna saatos anjeun pasang Istio sareng maén sareng aplikasi conto. Ieu bakal ngahapus sadaya sumber kluster, sapertos conto komputasi, disk, sareng sumber jaringan.

Naon saterusna?

sumber: www.habr.com

Tambahkeun komentar