Istio üçün ərizə hazırlanır

Istio üçün ərizə hazırlanır

Istio paylanmış proqramları birləşdirmək, qorumaq və izləmək üçün əlverişli vasitədir. Istio proqram təminatını miqyasda işə salmaq və idarə etmək üçün müxtəlif texnologiyalardan istifadə edir, o cümlədən tətbiq kodunu paketləşdirmək üçün konteynerlər və yerləşdirmə üçün asılılıqlar və bu konteynerləri idarə etmək üçün Kubernetes. Buna görə də, Istio ilə işləmək üçün bu texnologiyalara əsaslanan çoxsaylı xidmətləri olan tətbiqin necə işlədiyini bilməlisiniz olmadan Istio. Əgər bu alətlər və anlayışlar sizə artıq tanışdırsa, bu təlimatı atlayın və birbaşa bölməyə keçin. Google Kubernetes Mühərrikində (GKE) Istio quraşdırılması və ya uzantı quraşdırmaq GKE-də Istio.

Bu, nümunə vasitəsilə sizə bu texnologiyalar haqqında əsas anlayış vermək üçün mənbə kodundan GKE konteynerinə qədər bütün prosesi keçəcəyimiz addım-addım təlimatdır. Siz həmçinin Istio-nun bu texnologiyaların gücündən necə istifadə etdiyini görəcəksiniz. Bu, konteynerlər, Kubernetes, xidmət şəbəkələri və ya Istio haqqında heç nə bilmədiyinizi güman edir.

vəzifələri

Bu dərslikdə siz aşağıdakı tapşırıqları yerinə yetirəcəksiniz:

  1. Çoxsaylı xidmətlərlə sadə bir salam dünya tətbiqini öyrənmək.
  2. Proqramı mənbə kodundan işə salın.
  3. Tətbiqin qablarda qablaşdırılması.
  4. Kubernetes klasterinin yaradılması.
  5. Konteynerlərin klasterə yerləşdirilməsi.

Başlamadan əvvəl

Kubernetes Engine API-ni aktivləşdirmək üçün təlimatlara əməl edin:

  1. Gedin Kubernetes Engine səhifəsi Google Bulud Platforması konsolunda.
  2. Layihə yaradın və ya seçin.
  3. API və əlaqəli xidmətlər aktiv olana qədər gözləyin. Bu bir neçə dəqiqə çəkə bilər.
  4. Google Bulud Platforması layihəniz üçün faktura ayarlandığından əmin olun. Ödənişin necə aktivləşdiriləcəyini öyrənin.

Bu dərslikdə virtual maşını hazırlayan Cloud Shell-dən istifadə edə bilərsiniz Google Compute Engine-də g1-kiçik Debian əsaslı Linux və ya Linux və ya macOS kompüteri ilə.

Seçim A: Cloud Shell-dən istifadə

Cloud Shell-dən istifadənin üstünlükləri:

  • Python 2 və Python 3 inkişaf mühitləri (o cümlədən virtualenv) tam konfiqurasiya edilmişdir.
  • Komanda xətti alətləri gcloud, docker, git и kubectlistifadə edəcəyimiz , artıq quraşdırılmışdır.
  • Seçmək üçün bir neçə var mətn redaktorları:
    1. Kod redaktoru, Cloud Shell pəncərəsinin yuxarısındakı redaktə nişanı ilə açılır.
    2. Cloud Shell-də əmr satırından açılan Emacs, Vim və ya Nano.

İstifadə etmək Bulud qabığı:

  1. GCP konsoluna keçin.
  2. mətbuat Cloud Shell-i aktivləşdirin GCP konsol pəncərəsinin yuxarısında (Cloud Shell-i aktivləşdirin).

Istio üçün ərizə hazırlanır

Aşağı hissədə GCP konsolu Komanda xətti ilə Cloud Shell sessiyası yeni pəncərədə açılacaq.

Istio üçün ərizə hazırlanır

Seçim B: Komanda Sətiri Alətlərindən Yerli İstifadə

Əgər siz Linux və ya macOS ilə işləyən kompüterdə işləyəcəksinizsə, aşağıdakı komponentləri konfiqurasiya etməli və quraşdırmalısınız:

  1. Özəlləşdirmək Python 3 və Python 2 inkişaf mühiti.

  2. Cloud SDK quraşdırın komanda xətti aləti ilə gcloud.

  3. Təyin etmək kubectl - işləmək üçün əmr xətti aləti Kubernetes.

    gcloud components install kubectl

  4. Təyin etmək Docker Community Edition (CE). Komanda xətti alətindən istifadə edəcəksiniz dockernümunə tətbiqi üçün konteyner şəkilləri yaratmaq.

  5. Aləti quraşdırın Git versiyasına nəzarətGitHub-dan nümunə tətbiqi əldə etmək üçün.

Nümunə kodunu yükləyin

  1. Mənbə kodunu yükləyin salam server:

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

  2. Nümunə kod kataloquna keçin:

    cd istio-samples/sample-apps/helloserver

Çoxsaylı xidmətlərlə tətbiqi araşdırın

Nümunə proqram Python-da yazılmışdır və istifadə edərək qarşılıqlı əlaqədə olan iki komponentdən ibarətdir REST:

  • server: bir son nöqtə ilə sadə server GET, /, konsola "salam dünya" yazan.
  • yükləyici: trafik göndərən skript server, saniyədə konfiqurasiya edilə bilən sorğu sayı ilə.

Istio üçün ərizə hazırlanır

Mənbə kodundan proqramın işə salınması

Nümunə proqramı araşdırmaq üçün onu Cloud Shell-də və ya kompüterinizdə işə salın.
1) Kataloqda istio-samples/sample-apps/helloserver qaçmaq server:

python3 server/server.py

Başlanğıcda server aşağıdakılar göstərilir:

INFO:root:Starting server...

2) Sorğu göndərmək üçün başqa terminal pəncərəsini açın server. Cloud Shell istifadə edirsinizsə, başqa bir sessiya açmaq üçün əlavə et işarəsinə klikləyin.
3) Sorğu göndərin server:

curl http://localhost:8080

server cavab verir:

Hello World!

4) Nümunə kodunu endirdiyiniz qovluqdan olan qovluğa keçin yükləyici:

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

5) Aşağıdakı mühit dəyişənlərini yaradın:

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

6) işə salın virtualenv:

virtualenv --python python3 env

7) Virtual mühiti aktivləşdirin:

source env/bin/activate

8) üçün tələblər təyin edin yükləyici:

pip3 install -r requirements.txt

9) işə salın yükləyici:

python3 loadgen.py

Başlanğıcda yükləyici aşağıdakı mesaj kimi bir şey göstərir:

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

Başqa bir terminal pəncərəsində server konsola aşağıdakı mesajları verir:

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

Şəbəkə nöqteyi-nəzərindən bütün proqram bir hostda (yerli kompüter və ya Cloud Shell virtual maşını) işləyir. Buna görə də istifadə edə bilərsiniz localhostsorğular göndərmək server.
10) Dayanmaq yükləyici и server, daxil edin Ctrl-c hər terminal pəncərəsində.
11) Terminal pəncərəsində yükləyici virtual mühiti deaktiv edin:

deactivate

Tətbiqin konteynerlərdə qablaşdırılması

Tətbiqi GKE-də işə salmaq üçün nümunə tətbiqi paketləməlisiniz - server и yükləyici - in konteynerlər. Konteyner tətbiqi mühitindən təcrid etmək üçün onu qablaşdırmağın bir yoludur.

Tətbiqi konteynerə bağlamaq üçün sizə lazımdır Docker faylı. Docker faylı proqramın mənbə kodunu və ondan asılılıqları qurmaq üçün əmrləri müəyyən edən mətn faylıdır Docker şəkli. Quraşdırıldıqdan sonra şəkli Docker Hub və ya kimi konteyner reyestrinə yükləyirsiniz Konteyner reyestri.

Nümunə artıq var Docker faylı uğrunda server и yükləyici şəkilləri toplamaq üçün bütün lazımi əmrlərlə. Aşağıda - Docker faylı uğrunda 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" ]

  • Komanda FROM python: 3-əsas kimi incə Dockerə ən son istifadə etməyi deyir Python 3 şəkil əsas kimi.
  • Komanda KOPYALA. . mənbə fayllarını cari iş qovluğuna köçürür (yalnız bizim vəziyyətimizdə server.py) konteynerin fayl sisteminə.
  • GİRİŞ NÖQTƏSİ konteyneri işə salmaq üçün istifadə olunan əmri müəyyən edir. Bizim vəziyyətimizdə bu əmr demək olar ki, əvvəllər işlətdiyiniz əmrlə eynidir server.py mənbə kodundan.
  • Komanda TƏSİR olduğunu göstərir server port vasitəsilə məlumat gözləyir 8080. Bu komanda deyil portları təmin edir. Bu, portu açmaq üçün lazım olan bir növ sənəddir 8080 konteyneri işə saldıqda.

Tətbiqinizi konteynerləşdirməyə hazırlanır

1) Aşağıdakı mühit dəyişənlərini təyin edin. Əvəz edin PROJECT_ID GCP layihə identifikatorunuza.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Dəyərlərdən istifadə PROJECT_ID и GCR_REPO Docker şəklini yaratdığınız zaman onu işarələyin və şəxsi Konteyner Reyestrinə köçürürsünüz.

2) Komanda xətti aləti üçün standart GCP layihəsini təyin edin gcloud.

gcloud config set project $PROJECT_ID

3) Komanda xətti aləti üçün standart zonanı təyin edin gcloud.

gcloud config set compute/zone us-central1-b

4) Konteyner Reyestr xidmətinin GCP layihəsində aktiv olduğundan əmin olun.

gcloud services enable containerregistry.googleapis.com

Konteynerləşdirmə serveri

  1. Nümunənin yerləşdiyi qovluğa gedin server:

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

  2. Şəkildən istifadə edərək yığın Docker faylı və əvvəllər müəyyən etdiyiniz mühit dəyişənləri:

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

Parametr -t Docker teqini təmsil edir. Bu, konteyneri yerləşdirərkən istifadə etdiyiniz şəklin adıdır.

  1. Şəkli Konteyner Reyestrinə yükləyin:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Yükləyicinin konteynerləşdirilməsi

1) Nümunənin yerləşdiyi qovluğa keçin yükləyici:

cd ../loadgen

2) Şəkli toplayın:

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

3) Şəkli Konteyner Reyestrinə yükləyin:

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

Şəkillərin siyahısına baxın

Anbardakı şəkillərin siyahısını nəzərdən keçirin və şəkillərin yükləndiyini yoxlayın:

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

Komanda yeni yüklənmiş şəkillərin adlarını göstərir:

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

GKE klasterinin yaradılması.

Bu konteynerlər Cloud Shell virtual maşınında və ya komanda ilə kompüterdə işlədilə bilər docker run. Ancaq istehsal mühitində konteynerləri mərkəzdən idarə etmək üçün bir yola ehtiyacınız var. Məsələn, konteynerlərin daim işlədiyinə əmin olan bir sistemə ehtiyacınız var və trafik artarsa, əlavə konteyner nümunələrini böyütmək və fırlatmaq üçün bir yola ehtiyacınız var.

Konteynerləşdirilmiş proqramları işə salmaq üçün istifadə edə bilərsiniz G.K.E.. GKE virtual maşınları klasterə birləşdirən konteyner orkestr platformasıdır. Hər bir virtual maşın bir node adlanır. GKE klasterləri açıq mənbəli Kubernetes klaster idarəetmə sisteminə əsaslanır. Kubernetes klaster ilə qarşılıqlı əlaqə mexanizmlərini təmin edir.

GKE klasterinin yaradılması:

1) Klaster yaradın:

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

Komanda gcloud GCP layihəsində və qeyd etdiyiniz standart zonada istioready klaster yaradır. Istio-nu işə salmaq üçün ən azı 4 qovşaq və virtual maşına sahib olmağı məsləhət görürük n1-standart-2.

Komanda bir neçə dəqiqə ərzində klaster yaradır. Klaster hazır olduqda, əmr buna bənzər bir şey çıxarır сообщение.

2) Komanda xətti alətində etimadnamələri təmin edin kubectlklasteri idarə etmək üçün istifadə etmək üçün:

gcloud container clusters get-credentials istioready

3) İndi Kubernetes ilə əlaqə saxlaya bilərsiniz kubectl. Məsələn, aşağıdakı əmr qovşaqların vəziyyətini öyrənə bilər:

kubectl get nodes

Komanda qovşaqların siyahısını yaradır:

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 əsas anlayışları

Diaqram GKE-də tətbiqi göstərir:

Istio üçün ərizə hazırlanır

GKE-də konteynerləri yerləşdirməzdən əvvəl Kubernetes-in əsas anlayışlarını öyrənin. Daha çox öyrənmək istəyirsinizsə, ən sonunda bağlantılar var.

  • Düyünlər və çoxluqlar. GKE-də qovşaq virtual maşındır. Digər Kubernetes platformalarında qovşaq kompüter və ya virtual maşın ola bilər. Klaster, konteynerləşdirilmiş tətbiqi yerləşdirdiyiniz vahid vahid hesab edilə bilən qovşaqların toplusudur.
  • Podlar. Kubernetesdə qablar qablarda işləyir. Kubernetesdəki Pod bölünməz bir vahiddir. Pod bir və ya daha çox konteyner saxlayır. Siz server konteynerlərini yerləşdirirsiniz və yükləyici ayrı qablarda. Podda bir neçə konteyner olduqda (məsələn, proqram serveri və proxy server), konteynerlər tək bir qurum kimi idarə olunur və pod resurslarını paylaşır.
  • Yerləşdirmələr. Kubernetes-də yerləşdirmə eyni podların toplusundan ibarət obyektdir. Yerləşdirmə klaster qovşaqları arasında paylanmış podların çoxsaylı replikalarını işə salır. Yerləşdirmə uğursuz və ya cavab verməyən podları avtomatik əvəz edir.
  • Kubernetes xidməti. Tətbiq kodu GKE-də işləyərkən, arasında əlaqə yükləyici и server. Cloud Shell virtual maşınında və ya iş masasında xidmətlərə başladığınız zaman sorğu göndərdiniz server at localhost: 8080. GKE-də yerləşdirildikdən sonra podlar mövcud qovşaqlarda icra olunur. Varsayılan olaraq, podun hansı node üzərində işlədiyinə nəzarətiniz yoxdur, buna görə də siz qabıqlar daimi IP ünvanları yoxdur.
    üçün IP ünvanı əldə etmək üçün server, podların üstündə şəbəkə abstraksiyasını təyin etməlisiniz. Bu budur Kubernetes xidməti. Kubernetes xidməti bir sıra podlar üçün davamlı son nöqtə təmin edir. Bir neçə var xidmət növləri. server istifadə edir LoadBalancer, əlaqə üçün xarici IP ünvanı təmin edir server klasterdən kənardan.
    Kubernetes həmçinin DNS adlarını təyin edən daxili DNS sisteminə malikdir (məsələn, salamserver.default.cluster.local) xidmətlər. Bunun sayəsində klaster daxilindəki podlar klasterdəki digər podlarla daimi ünvanda əlaqə saxlayır. DNS adı Cloud Shell-də və ya kompüterdə olduğu kimi klasterdən kənarda istifadə edilə bilməz.

Kubernetes təzahür edir

Tətbiqi mənbədən işlətdiyiniz zaman imperativ əmrdən istifadə etdiniz python3

server.py

İmperativ bir feli nəzərdə tutur: “bunu et”.

Kubernetes istifadə edir deklarativ model. Bu o deməkdir ki, biz Kubernetesə dəqiq nə edəcəyimizi demirik, əksinə arzu olunan vəziyyəti təsvir edirik. Məsələn, Kubernetes sistemin faktiki vəziyyətinin istənilən vəziyyətə uyğun olmasını təmin etmək üçün lazım olduqda podları işə salır və dayandırır.

Siz manifestlərdə və ya fayllarda istədiyiniz vəziyyəti göstərirsiniz YAML. YAML faylı bir və ya daha çox Kubernetes obyekti üçün spesifikasiyaları ehtiva edir.

Nümunədə YAML faylı var server и yükləyici. Hər bir YAML faylı yerləşdirmə obyektinin və Kubernetes xidmətinin istənilən vəziyyətini müəyyən edir.

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

  • cür obyektin növünü göstərir.
  • metadata.name yerləşdirmə adını müəyyən edir.
  • Birinci sahə spec arzu olunan vəziyyətin təsvirini ehtiva edir.
  • spec.replikalar istədiyiniz pods sayını göstərir.
  • Bölmə spec.şablon pod şablonunu müəyyən edir. Pod spesifikasiyasında sahə var təsvir, Konteyner Reyestrindən çıxarılması lazım olan şəklin adını müəyyən edir.

Xidmət aşağıdakı kimi müəyyən edilir:

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

  • LoadBalancer: Müştərilər davamlı IP ünvanına malik olan və klasterdən kənardan əldə edilə bilən yük balanslaşdırıcısının IP ünvanına sorğular göndərirlər.
  • targetPort: xatırladığınız kimi, komanda 8080 в Docker faylı limanları təmin etməmişdir. Siz limanı təmin edirsiniz 8080konteynerlə əlaqə saxlamağınız üçün server klasterdən kənarda. Bizim vəziyyətimizdə hellovc.default.cluster.local:80 (qısa ad: hellovc) porta uyğundur 8080 Pod IP ünvanları salam server.
  • port: Bu, klasterdəki digər xidmətlərin sorğu göndərəcəyi port nömrəsidir.

loadgen.yaml

Yerləşdirmə obyekti loadgen.yaml oxşamaq server.yaml. Fərq ondadır ki, yerləşdirmə obyektində bölmə var env. Lazım olan mühit dəyişənlərini müəyyən edir yükləyici və tətbiqi mənbədən işlədərkən quraşdırdığınız.

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

Vaxt yükləyici sahə üçün daxil olan sorğuları qəbul etmir növü göstərdi ClusterIP. Bu tip klasterdəki xidmətlərin istifadə edə biləcəyi davamlı IP ünvanını təmin edir, lakin bu IP ünvanı xarici müştərilərə məruz qalmır.

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

GKE-də Konteynerlərin Yerləşdirilməsi

1) Nümunənin yerləşdiyi qovluğa keçin server:

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

2) Açıq server.yaml mətn redaktorunda.
3) Sahədə adı dəyişdirin təsvir Docker şəklinizin adına.

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

Dəyişdirin PROJECT_ID GCP layihə identifikatorunuza.
4) Saxlayın və bağlayın server.yaml.
5) YAML faylını Kubernetes-ə yerləşdirin:

kubectl apply -f server.yaml

Uğurlu başa çatdıqdan sonra əmr aşağıdakı kodu istehsal edir:

deployment.apps/helloserver created
service/hellosvc created

6) olduğu qovluğa gedin yükləyici:

cd ../loadgen

7) Açıq loadgen.yaml mətn redaktorunda.
8) Sahədə adı dəyişdirin təsvir Docker şəklinizin adına.

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

Dəyişdirin PROJECT_ID GCP layihə identifikatorunuza.
9) Saxlayın və bağlayın loadgen.yaml, mətn redaktorunu bağlayın.
10) YAML faylını Kubernetes-ə yerləşdirin:

kubectl apply -f loadgen.yaml

Uğurlu başa çatdıqdan sonra əmr aşağıdakı kodu istehsal edir:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Podların vəziyyətini yoxlayın:

kubectl get pods

Komanda statusu göstərir:

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

12) Tətbiq qeydlərini poddan çıxarın yükləyici. Əvəz edin POD_ID əvvəlki cavabdan identifikatora.

kubectl logs loadgenerator-POD_ID

13) Xarici IP ünvanlarını əldə edin hellovc:

kubectl get service

Komanda cavabı belə görünür:

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) Sorğu göndərin hellovc: dəyişdirin EXTERNAL_IP xarici IP ünvanına hellovc.

curl http://EXTERNAL_IP

Gəlin Istio-nu götürək

Artıq GKE-də yerləşdirilmiş tətbiqiniz var. yükləyici Kubernetes DNS istifadə edə bilər (salam: 80) sorğu göndərmək servervə sorğu göndərə bilərsiniz server xarici IP ünvanı ilə. Kubernetes bir çox xüsusiyyətlərə malik olsa da, xidmətlər haqqında bəzi məlumatlar çatışmır:

  • Xidmətlər necə qarşılıqlı əlaqə qurur? Xidmətlər arasında hansı əlaqələr var? Xidmətlər arasında trafik axını necə olur? Bundan xəbəriniz varmı yükləyici ünvanına sorğular göndərir server, lakin tətbiq haqqında heç nə bilmədiyinizi təsəvvür edin. Bu suallara cavab vermək üçün gəlin GKE-də işləyən podların siyahısına baxaq.
  • Metriklər. Nə qədər server daxil olan sorğuya cavab verir? Server tərəfindən saniyədə neçə sorğu qəbul edilir? Səhv mesajları verirmi?
  • Təhlükəsizlik Məlumatı. arasında trafik yükləyici и server sadəcə keçir HTTP ya da mTLS?

İstio bütün bu suallara cavab verir. Bunu etmək üçün, Istio bir yan araba proxy yerləşdirir elçi hər podda. Elçi proksi proqram konteynerlərinə daxil olan və gedən bütün trafiki kəsir. Bu o deməkdir ki server и yükləyici yan vaqon proxy Elçisi və bütün trafik vasitəsilə qəbul edin yükləyici к server Elçi vəkilindən keçir.

Envoy proksiləri arasındakı əlaqələr xidmət şəbəkəsini təşkil edir. Xidmət mesh arxitekturası Kubernetes üzərində nəzarət qatını təmin edir.

Istio üçün ərizə hazırlanır

Envoy proksiləri öz konteynerlərində işlədiyi üçün Istio tətbiq kodunda demək olar ki, heç bir dəyişiklik olmadan GKE klasterinin üstünə quraşdırıla bilər. Ancaq tətbiqinizi Istio tərəfindən idarə olunmağa hazırlamaq üçün bəzi işlər görmüsünüz:

  • Bütün konteynerlər üçün xidmətlər. Yerləşdirmələrə server и yükləyici Kubernetes xidmətinə bağlıdır. Hətta yükləyici, gələn sorğuları qəbul etməyən bir xidmət var.
  • Xidmətlərdəki portların adları olmalıdır. Baxmayaraq ki, xidmət portları GKE-də adsız qala bilər, Istio sizdən qeyd etməyi tələb edir port adı onun protokoluna uyğun olaraq. YAML faylında üçün port server deyilən httpçünki server protokoldan istifadə edir HTTP. Əgər xidmət istifadə olunur gRPC, limanın adını verərdiniz grpc.
  • Yerləşdirmələr qeyd olunur. Buna görə də, eyni xidmətin versiyaları arasında trafikin bölünməsi kimi Istio-nun trafikin idarə edilməsi xüsusiyyətlərindən istifadə edə bilərsiniz.

Quraşdırma

Istio quraşdırmağın iki yolu var. Bacarmaq GKE uzadılmasında Istio-nu aktivləşdirin və ya Istio-nun açıq mənbə versiyasını quraşdırın klaster üzərində. GKE-də Istio ilə siz GKE klasterinin həyat dövrü ərzində Istio quraşdırmalarını və təkmilləşdirmələrini asanlıqla idarə edə bilərsiniz. Istio-nun ən son versiyasını və ya Istio idarəetmə panelinizin konfiqurasiyasına daha çox nəzarət etmək istəyirsinizsə, Istio on GKE genişləndirilməsi əvəzinə açıq mənbə versiyasını quraşdırın. Yanaşma barədə qərar vermək üçün məqaləni oxuyun Mənə GKE-də Istio lazımdır?.

Seçimlərdən birini seçin, müvafiq təlimatı nəzərdən keçirin və Istio-nu klasterinizdə quraşdırmaq üçün təlimatlara əməl edin. Istio-dan yeni yerləşdirilmiş tətbiqinizlə istifadə etmək istəyirsinizsə, yan avtomobilin həyata keçirilməsini təmin edin ad sahəsi üçün default.

Təmizləmə

Bu dərslikdə istifadə etdiyiniz resurslara görə Google Bulud Platforması hesabınızdan ödəniş almamaq üçün Istio-nu quraşdırdıqdan və nümunə tətbiqi ilə oynadıqdan sonra konteyner klasterini silin. Bu, hesablama nümunələri, disklər və şəbəkə resursları kimi bütün klaster resurslarını siləcək.

Növbəti nədir?

Mənbə: www.habr.com

Добавить комментарий