Istio үшін өтінімді дайындау

Istio үшін өтінімді дайындау

Istio – таратылған қолданбаларды қосуға, қорғауға және бақылауға арналған ыңғайлы құрал. Istio бағдарламалық құралды масштабта іске қосу және басқару үшін әртүрлі технологияларды пайдаланады, соның ішінде қолданба кодын бумалауға арналған контейнерлер мен орналастыруға тәуелділіктерді және сол контейнерлерді басқару үшін Kubernetes. Сондықтан, Istio-мен жұмыс істеу үшін сіз осы технологияларға негізделген бірнеше қызметтері бар қолданбаның қалай жұмыс істейтінін білуіңіз керек жоқ Istio. Егер бұл құралдар мен ұғымдар сізге бұрыннан таныс болса, бұл оқулықты өткізіп жіберіп, тікелей бөлімге өтіңіз. Google Kubernetes Engine (GKE) жүйесінде Istio орнату немесе кеңейтімді орнату Istio on GKE.

Бұл мысал арқылы осы технологиялар туралы негізгі түсінік беру үшін бастапқы кодтан GKE контейнеріне дейінгі бүкіл процесті аралайтын қадамдық нұсқаулық. Сондай-ақ, Istio осы технологиялардың күшін қалай пайдаланатынын көресіз. Бұл контейнерлер, Кубернеттер, қызмет көрсету торлары немесе Istio туралы ештеңе білмейсіз деп болжайды.

міндеттері

Бұл оқулықта сіз келесі тапсырмаларды орындайсыз:

  1. Бірнеше қызметтері бар қарапайым Hello World қолданбасын үйрену.
  2. Қолданбаны бастапқы кодтан іске қосыңыз.
  3. Қолданбаны контейнерлерге орау.
  4. Kubernetes кластерін жасау.
  5. Контейнерлерді кластерге орналастыру.

Бастамас бұрын

Kubernetes Engine API қосу үшін нұсқауларды орындаңыз:

  1. Жіберіңіз Kubernetes Engine беті Google Cloud Platform консолінде.
  2. Жобаны жасаңыз немесе таңдаңыз.
  3. API және қатысты қызметтер қосылғанша күтіңіз. Бұған бірнеше минут кетуі мүмкін.
  4. Google Cloud Platform жобасы үшін төлемнің орнатылғанын тексеріңіз. Есепшотты қосу жолын біліңіз.

Бұл оқулықта виртуалды машинаны дайындайтын Cloud Shell қолданбасын пайдалануға болады Google Compute Engine жүйесіндегі g1-кіші Debian негізіндегі Linux немесе Linux немесе macOS компьютерімен.

А нұсқасы: Cloud Shell пайдалану

Cloud Shell пайдаланудың артықшылықтары:

  • Python 2 және Python 3 әзірлеу орталары (соның ішінде virtualenv) толығымен конфигурацияланған.
  • Пәрмен жолы құралдары gcloud, доккер, Git и кубектлБіз қолданатын , әлдеқашан орнатылған.
  • Сізде бірнеше таңдау бар мәтіндік редакторлар:
    1. Код редакторы, ол Cloud Shell терезесінің жоғарғы жағындағы өңдеу белгішесімен ашылады.
    2. Cloud Shell пәрмен жолынан ашылатын Emacs, Vim немесе Nano.

Қолдану Бұлтты қабық:

  1. GCP консоліне өтіңіз.
  2. баспасөз Cloud Shell бағдарламасын іске қосыңыз GCP консолі терезесінің жоғарғы жағындағы (Cloud Shell іске қосыңыз).

Istio үшін өтінімді дайындау

Төменгі бөлігінде GCP консолі Пәрмен жолы бар Cloud Shell сеансы жаңа терезеде ашылады.

Istio үшін өтінімді дайындау

В опциясы: Пәрмен жолы құралдарын жергілікті пайдалану

Linux немесе macOS жүйесі бар компьютерде жұмыс істейтін болсаңыз, келесі құрамдастарды конфигурациялау және орнату қажет:

  1. Реттеу Python 3 және Python 2 әзірлеу ортасы.

  2. Cloud SDK орнатыңыз пәрмен жолы құралымен gcloud.

  3. Орнату кубектл - пәрмен жолы құралымен жұмыс істеу Kubernetes.

    gcloud components install kubectl

  4. Орнату Docker Community Edition (CE). Сіз пәрмен жолы құралын пайдаланасыз доккерүлгі қолданбасы үшін контейнер кескіндерін жасау.

  5. Құралды орнатыңыз Git нұсқасын басқаруGitHub қолданбасынан үлгі қолданбаны алу үшін.

Үлгі кодын жүктеп алыңыз

  1. Бастапқы кодты жүктеп алыңыз сәлем сервері:

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

  2. Мысал код каталогына өтіңіз:

    cd istio-samples/sample-apps/helloserver

Бірнеше қызметтері бар қолданбаны зерттеу

Үлгі қолданба Python тілінде жазылған және өзара әрекеттесетін екі компоненттен тұрады REST:

  • сервер: бір соңғы нүктесі бар қарапайым сервер АЛУ, /, ол консольге «сәлем әлемді» басып шығарады.
  • жүктеген: трафикті жіберетін сценарий сервер, секундына конфигурацияланатын сұраулар санымен.

Istio үшін өтінімді дайындау

Бастапқы кодтан қолданбаны іске қосу

Үлгі қолданбаны зерттеу үшін оны Cloud Shell ішінде немесе компьютерде іске қосыңыз.
1) Каталогта istio-samples/sample-apps/helloserver жүгіру сервер:

python3 server/server.py

Іске қосылғанда сервер төмендегілер көрсетіледі:

INFO:root:Starting server...

2) Сұрауларды жіберу үшін басқа терминал терезесін ашыңыз сервер. Cloud Shell қолданбасын пайдалансаңыз, басқа сеансты ашу үшін қосу белгішесін басыңыз.
3) Сұраныс жіберу сервер:

curl http://localhost:8080

сервер жауаптары:

Hello World!

4) Үлгі кодты жүктеп алған каталогтан құрамында бар каталогқа өтіңіз жүктеген:

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

5) Келесі орта айнымалыларын жасаңыз:

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

6) Жүгіру virtualenv:

virtualenv --python python3 env

7) Виртуалды ортаны іске қосыңыз:

source env/bin/activate

8) қойылатын талаптарды белгілеу жүктеген:

pip3 install -r requirements.txt

9) Жүгіру жүктеген:

python3 loadgen.py

Іске қосылғанда жүктеген келесі хабарлама сияқты нәрсені көрсетеді:

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

Басқа терминал терезесінде сервер консольге келесі хабарламаларды шығарады:

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

Желі тұрғысынан алғанда, бүкіл қолданба бір хостта (жергілікті компьютер немесе Cloud Shell виртуалды машинасы) жұмыс істейді. Сондықтан сіз пайдалана аласыз жергіліктісұрауларды жіберу үшін сервер.
10) Тоқтау жүктеген и сервер, енгізіңіз Ctrl-c әрбір терминал терезесінде.
11) Терминал терезесінде жүктеген виртуалды ортаны өшіру:

deactivate

Қолданбаны контейнерлерге салу

Қолданбаны GKE жүйесінде іске қосу үшін үлгі қолданбаны бумалау керек − сервер и жүктеген - in контейнерлер. Контейнер қолданбаны ортасынан оқшаулау үшін оны бумалау тәсілі болып табылады.

Бағдарламаны контейнерге бумалау үшін сізге қажет Докер файлы. Докер файлы қолданбаның бастапқы кодын және оның тәуелділіктерін құру пәрмендерін анықтайтын мәтіндік файл Докер кескіні. Құрылғаннан кейін кескінді Docker Hub немесе сияқты контейнер тізіліміне жүктеп салыңыз Контейнер тізілімі.

Мысал бұрыннан бар Докер файлы үшін сервер и жүктеген суреттерді жинау үшін барлық қажетті командалармен. Төменде - Докер файлы үшін сервер:

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

  • команда FROM python: 3-жіңішке негіз ретінде Docker соңғы нұсқасын пайдалануды ұсынады Python 3 суреті негіз ретінде.
  • команда КӨШІРУ. . бастапқы файлдарды ағымдағы жұмыс каталогына көшіреді (біздің жағдайда ғана server.py) контейнердің файлдық жүйесіне.
  • КІРУ НҮКТЕГІ контейнерді іске қосу үшін пайдаланылатын пәрменді анықтайды. Біздің жағдайда бұл пәрмен бұрын іске қосылған командамен бірдей дерлік server.py бастапқы кодтан.
  • команда ТАҢДАУ екенін көрсетеді сервер порт арқылы деректерді күтеді 8080. Бұл команда емес порттарды қамтамасыз етеді. Бұл портты ашу үшін қажет құжаттаманың бір түрі 8080 контейнерді іске қосқанда.

Қолданбаңызды контейнерлеуге дайындалуда

1) Келесі орта айнымалы мәндерін орнатыңыз. Ауыстыру PROJECT_ID GCP жоба идентификаторына.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Мәндерді пайдалану PROJECT_ID и GCR_REPO Сіз оны құрастырған кезде Docker кескінін белгілеп, оны жеке контейнер тізіліміне итеріңіз.

2) Пәрмен жолы құралы үшін әдепкі GCP жобасын орнатыңыз gcloud.

gcloud config set project $PROJECT_ID

3) Пәрмен жолы құралы үшін әдепкі аймақты орнатыңыз gcloud.

gcloud config set compute/zone us-central1-b

4) Контейнер тізілімі қызметінің GCP жобасында қосылғанын тексеріңіз.

gcloud services enable containerregistry.googleapis.com

Контейнерлеу сервері

  1. Мысал орналасқан каталогқа өтіңіз сервер:

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

  2. көмегімен кескінді құрастырыңыз Докер файлы және сіз бұрын анықтаған орта айнымалылары:

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

Параметр -t Docker тегін білдіреді. Бұл контейнерді орналастыру кезінде пайдаланатын кескіннің атауы.

  1. Кескінді контейнер тізіліміне жүктеңіз:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Жүкті контейнерлеу

1) Мысал орналасқан каталогқа өтіңіз жүктеген:

cd ../loadgen

2) Суретті жинаңыз:

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

3) Кескінді контейнер тізіліміне жүктеңіз:

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

Суреттер тізімін қараңыз

Репозиторийдегі суреттер тізімін қарап шығыңыз және суреттердің жүктеп салынғанын тексеріңіз:

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

Пәрмен жаңадан жүктелген кескіндердің атауларын көрсетеді:

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

GKE кластерін жасау.

Бұл контейнерлерді Cloud Shell виртуалды машинасында немесе пәрмені бар компьютерде іске қосуға болады докер жұмыс істейді. Бірақ өндірістік ортада контейнерлерді орталықтан басқару тәсілі қажет. Мысалы, сізге контейнерлердің үнемі жұмыс істеп тұрғанын қамтамасыз ететін жүйе қажет және трафик көбейген жағдайда қосымша контейнер даналарын кеңейту және айналдыру жолы қажет.

Контейнерленген қолданбаларды іске қосу үшін пайдалануға болады Г.К.Е.. GKE - виртуалды машиналарды кластерге біріктіретін контейнерлік оркестрлік платформа. Әрбір виртуалды машина түйін деп аталады. GKE кластерлері ашық бастапқы Kubernetes кластерін басқару жүйесіне негізделген. Kubernetes кластермен өзара әрекеттесу механизмдерін қамтамасыз етеді.

GKE кластерін жасау:

1) Кластер құру:

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

команда gcloud GCP жобасында және сіз көрсеткен әдепкі аймақта istioready кластерін жасайды. Istio іске қосу үшін кемінде 4 түйін және виртуалды машина болуын ұсынамыз n1-стандартты-2.

Топ бірнеше минут ішінде кластерді жасайды. Кластер дайын болғанда, пәрмен осындай нәрсені шығарады хабарлама.

2) Пәрмен жолы құралында тіркелгі деректерін қамтамасыз етіңіз кубектлкластерді басқару үшін оны пайдалану үшін:

gcloud container clusters get-credentials istioready

3) Енді сіз Kubernetes арқылы байланыса аласыз кубектл. Мысалы, келесі пәрмен түйіндердің күйін біле алады:

kubectl get 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 негізгі түсініктері

Диаграмма GKE қолданбасын көрсетеді:

Istio үшін өтінімді дайындау

GKE-де контейнерлерді орналастырмас бұрын, Kubernetes негізгі түсініктерін үйреніңіз. Егер сіз көбірек білгіңіз келсе, ең соңында сілтемелер бар.

  • Түйіндер мен кластерлер. GKE-де түйін виртуалды машина болып табылады. Басқа Kubernetes платформаларында түйін компьютер немесе виртуалды машина болуы мүмкін. Кластер - контейнерлік бағдарламаны орналастыратын жалғыз бірлік деп санауға болатын түйіндер жиынтығы.
  • Қапшықтар. Кубернетесте контейнерлер түйіршіктерде жұмыс істейді. Кубернетестегі Pod - бұл бөлінбейтін бірлік. Pod бір немесе бірнеше контейнерді сақтайды. Сіз сервер контейнерлерін және жүктеген бөлек түйіршіктерде. Қоспада бірнеше контейнер болған кезде (мысалы, қолданба сервері және прокси сервер), контейнерлер жалғыз нысан ретінде басқарылады және қосқыш ресурстарын ортақ пайдаланады.
  • Орналастырулар. Kubernetes жүйесінде орналастыру - бұл бірдей подкасттардың жинағы болып табылатын нысан. Орналастыру кластер түйіндері бойынша таратылған қосқыштардың бірнеше көшірмелерін іске қосады. Орналастыру сәтсіз немесе жауап бермейтін подкасттарды автоматты түрде ауыстырады.
  • Kubernetes қызметі. GKE-де қолданба кодын іске қосқан кезде, арасындағы байланыс жүктеген и сервер. Cloud Shell виртуалды машинасында немесе жұмыс үстелінде қызметтерді бастаған кезде, сіз сұрауларды жібердіңіз сервер мекенжай бойынша localhost: 8080. GKE-ге орналастырылғаннан кейін подкасттар қол жетімді түйіндерде орындалады. Әдепкі бойынша, сіз подкасттың қай түйінде жұмыс істейтінін басқара алмайсыз, сондықтан сіз бүршіктер тұрақты IP мекенжайлары жоқ.
    үшін IP мекенжайын алу үшін сервер, желілік абстракцияны тіректердің жоғарғы жағында анықтауыңыз керек. Бұл солай Kubernetes қызметі. Kubernetes қызметі қосқыштар жиынтығы үшін тұрақты соңғы нүктені қамтамасыз етеді. Бірнеше бар қызмет түрлері. сервер пайдаланады LoadBalancer, ол байланысу үшін сыртқы IP мекенжайын береді сервер кластердің сыртынан.
    Kubernetes-те DNS атауларын тағайындайтын кіріктірілген DNS жүйесі де бар (мысалы, helloserver.default.cluster.local) қызметтер. Осының арқасында кластердегі қосқыштар тұрақты мекенжай бойынша кластердегі басқа подкасттармен байланысады. DNS атауын Cloud Shell немесе компьютер сияқты кластерден тыс пайдалану мүмкін емес.

Кубернетес көрсетеді

Қолданбаны көзден іске қосқанда, сіз императивті пәрменді қолдандыңыз python3

server.py

Бұйрық етістікті білдіреді: «мұны істе».

Кубернетес пайдаланады декларативті модель. Бұл дегеніміз, біз Кубернетеске нақты не істеу керектігін айтпаймыз, керісінше қалаған күйді сипаттаймыз. Мысалы, Кубернетес жүйенің нақты күйі қалаған күйге сәйкес келетініне көз жеткізу үшін қажет болғанда подкасттарды қосады және тоқтатады.

Манифесттерде немесе файлдарда қажетті күйді көрсетесіз ЯМЛ. YAML файлында бір немесе бірнеше Kubernetes нысандарының техникалық сипаттамалары бар.

Мысалда YAML файлы бар сервер и жүктеген. Әрбір YAML файлы орналастыру нысанының және 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

  • мейірімді объектінің түрін көрсетеді.
  • metadata.name орналастыру атын көрсетеді.
  • Бірінші өріс ерекшелігі қажетті күйдің сипаттамасын қамтиды.
  • spec.replicas түйіршіктердің қажетті санын көрсетеді.
  • Бөлім spec.template подкаст үлгісін анықтайды. Қондырғы спецификациясында өріс бар бейне, ол Контейнер тізілімінен шығару қажет кескіннің атын көрсетеді.

Қызмет келесідей анықталады:

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

  • LoadBalancer: Клиенттер сұрауларды тұрақты IP мекенжайы бар және кластерден тыс қол жеткізуге болатын жүктеме балансының IP мекенжайына жібереді.
  • мақсатты порт: естеріңізде болса, команда EXPOSE 8080 в Докер файлы порттарды бермеді. Сіз портты бересіз 8080контейнерге хабарласуыңыз үшін сервер кластерден тыс. Біздің жағдайда hellovc.default.cluster.local:80 (қысқа аты: hellovc) портқа сәйкес келеді 8080 Pod IP мекенжайлары сәлем сервері.
  • порт: Бұл кластердегі басқа қызметтер сұрауларды жіберетін порт нөмірі.

loadgen.yaml

Орналастыру нысаны loadgen.yaml ұқсайды server.yaml. Айырмашылық мынада, орналастыру нысанында бөлім бар ауд. Ол қажетті орта айнымалыларын анықтайды жүктеген және қолданбаны дереккөзден іске қосқан кезде орнатылған.

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

уақыт жүктеген өріс үшін кіріс сұрауларды қабылдамайды түрі көрсетілген ClusterIP. Бұл түр кластердегі қызметтер пайдалана алатын тұрақты IP мекенжайын қамтамасыз етеді, бірақ бұл IP мекенжайы сыртқы клиенттерге әсер етпейді.

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

GKE-де контейнерлерді орналастыру

1) Мысал орналасқан каталогқа өтіңіз сервер:

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

2) Ашық server.yaml мәтіндік редакторда.
3) Өрістегі атауды ауыстырыңыз бейне Docker кескініңіздің атына.

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

Ауыстыру PROJECT_ID GCP жоба идентификаторына.
4) Сақтау және жабу server.yaml.
5) YAML файлын Kubernetes жүйесіне орналастырыңыз:

kubectl apply -f server.yaml

Сәтті аяқталғаннан кейін команда келесі кодты шығарады:

deployment.apps/helloserver created
service/hellosvc created

6) Анықтамаға өтіңіз жүктеген:

cd ../loadgen

7) Ашық loadgen.yaml мәтіндік редакторда.
8) Өрістегі атауды ауыстырыңыз бейне Docker кескініңіздің атына.

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

Ауыстыру PROJECT_ID GCP жоба идентификаторына.
9) Сақтау және жабу loadgen.yaml, мәтіндік редакторды жабыңыз.
10) YAML файлын Kubernetes жүйесіне орналастырыңыз:

kubectl apply -f loadgen.yaml

Сәтті аяқталғаннан кейін команда келесі кодты шығарады:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Бұршақтардың күйін тексеріңіз:

kubectl get pods

Пәрмен күйді көрсетеді:

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

12) Қосқыштан қолданба журналдарын шығарып алыңыз жүктеген. Ауыстыру POD_ID алдыңғы жауаптағы идентификаторға.

kubectl logs loadgenerator-POD_ID

13) Сыртқы IP мекенжайларын алыңыз hellovc:

kubectl get service

Пәрмен жауабы келесідей көрінеді:

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) Сұраныс жіберу hellovc: ауыстырыңыз EXTERNAL_IP сыртқы IP мекенжайына hellovc.

curl http://EXTERNAL_IP

Истиоға келейік

Сізде GKE қолданбасы бұрыннан бар. жүктеген Kubernetes DNS пайдалана алады (hellovc: 80) сұрауларды жіберу үшін сервержәне сұрауларды жіберуге болады сервер сыртқы IP мекенжайы бойынша. Kubernetes көптеген мүмкіндіктерге ие болғанымен, қызметтер туралы кейбір ақпарат жетіспейді:

  • Қызметтер қалай өзара әрекеттеседі? Қызметтер арасында қандай байланыс бар? Қызметтер арасындағы трафик қалай жүреді? Сіз мұны білесіз бе жүктеген сұраныстарын жібереді сервер, бірақ қолданба туралы ештеңе білмейсіз деп елестетіңіз. Бұл сұрақтарға жауап беру үшін GKE жүйесіндегі іске қосылған қосқыштар тізімін қарастырайық.
  • Көрсеткіштер. Недеген ұзақ сервер кіріс сұрауға жауап береді? Сервер секундына қанша сұраныс алады? Ол қате туралы хабарларды береді ме?
  • Қауіпсіздік туралы ақпарат. арасындағы қозғалыс жүктеген и сервер жай ғана өтеді HTTP немесе mTLS?

Istio осы сұрақтардың бәріне жауап береді. Бұл әрекетті орындау үшін, Istio бүйірлік проксиді орналастырады өкілі әрбір қабықта. Envoy проксиі қолданба контейнерлеріне барлық кіріс және шығыс трафикті ұстайды. Бұл дегеніміз сервер и жүктеген бүйірлік прокси өкіл арқылы және барлық трафикті алыңыз жүктеген к сервер Өкіл прокси арқылы өтеді.

Envoy проксилері арасындағы қосылымдар қызмет торын құрайды. Қызмет торының архитектурасы Kubernetes жоғарғы жағында басқару қабатын қамтамасыз етеді.

Istio үшін өтінімді дайындау

Envoy прокси-серверлері өз контейнерлерінде жұмыс істейтіндіктен, Istio қолданбасын кодты өзгертусіз дерлік GKE кластерінің үстіне орнатуға болады. Бірақ сіз қолданбаңызды Istio басқаруына дайындау үшін біраз жұмыс жасадыңыз:

  • Барлық контейнерлерге арналған қызметтер. Орналастыруларға сервер и жүктеген Kubernetes қызметіне байланысты. Тіпті жүктеген, кіріс сұрауларын қабылдамайтын, қызмет бар.
  • Қызметтердегі порттардың атаулары болуы керек. Қызмет порттарын GKE-де атаусыз қалдыруға болатынына қарамастан, Istio көрсетуді талап етеді порт атауы оның хаттамасына сәйкес. YAML файлында порт сервер деп аталады HTTPсебебі сервер протоколды пайдаланады HTTP... Егер қызмет көрсету пайдаланылады gRPC, сіз портты атар едіңіз grpc.
  • Орналастырулар жалаушамен белгіленген. Сондықтан, сіз Istio трафикті басқару мүмкіндіктерін пайдалана аласыз, мысалы, трафикті бір қызметтің нұсқалары арасында бөлу.

Istio орнатылуда

Istio орнатудың екі жолы бар. мүмкін GKE кеңейтімінде Istio қосыңыз немесе Istio бағдарламасының ашық бастапқы нұсқасын орнатыңыз кластер бойынша. Istio on GKE көмегімен GKE кластерінің өмірлік циклі бойына Istio орнатулары мен жаңартуларын оңай басқара аласыз. Istio бағдарламасының соңғы нұсқасын немесе Istio басқару тақтасының конфигурациясын көбірек басқаруды қаласаңыз, Istio on GKE кеңейтімінің орнына ашық бастапқы нұсқаны орнатыңыз. Әдіс туралы шешім қабылдау үшін мақаланы оқыңыз Маған GKE-де Istio керек пе?.

Опцияны таңдап, сәйкес нұсқаулықты қарап шығыңыз және кластеріңізге Istio орнату үшін нұсқауларды орындаңыз. Istio қолданбасын жаңадан енгізілген қолданбамен пайдаланғыңыз келсе, бүйірлік жолды іске асыруға мүмкіндік береді аттар кеңістігі үшін Әдепкі.

Тазалау

Осы оқулықта пайдаланған ресурстар үшін Google Cloud Platform тіркелгісіне ақы алынбау үшін, Istio орнатып, үлгі қолданбасымен ойнағаннан кейін контейнер кластерін жойыңыз. Бұл есептеу даналары, дискілер және желі ресурстары сияқты барлық кластер ресурстарын жояды.

Ары қарай не?

Ақпарат көзі: www.habr.com

пікір қалдыру