Na-akwado ngwa maka Istio

Na-akwado ngwa maka Istio

Istio bụ ngwa dị mma maka ijikọ, chekwaa na nyochaa ngwa ekesa. Istio na-eji teknụzụ dị iche iche iji na-agba ọsọ na jikwaa sọftụwia n'ọ̀tụ̀tụ̀, gụnyere arịa iji ngwugwu koodu ngwa na ndabere maka ibugharị, yana Kubernetes iji jikwaa akpa ndị ahụ. Yabụ, iji soro Istio rụọ ọrụ, ị ga-amarịrị ka ngwa nwere ọtụtụ ọrụ dabere na teknụzụ ndị a si arụ ọrụ enweghị Istio. Ọ bụrụ na ngwaọrụ na echiche ndị a amaralarị gị, nweere onwe gị ịhapụ nkuzi a wee gaa ozugbo na ngalaba Ịwụnye Istio na Google Kubernetes Engine (GKE) или установке расширения Istio na GKE.

Это пошаговое руководство, где мы рассмотрим весь процесс от исходного кода до контейнера на GKE, чтобы вы получили базовое представление об этих технологиях на примере. Также вы увидите, как Istio использует возможности этих технологий. Предполагается, что вы не знаете ничего о контейнерах, Kubernetes, service mesh или Istio.

ihe aga-eme

N'ime nkuzi a, ị ga-arụcha ọrụ ndị a:

  1. Изучение простого приложения hello world с несколькими службами.
  2. Gbaa ngwa ahụ site na koodu isi mmalite.
  3. Nkwakọ ngwaahịa ahụ n'ime akpa.
  4. Ịmepụta ụyọkọ Kubernetes.
  5. Развертывание контейнеров в кластер.

Tupu ịmalite

Soro ntuziaka ndị a iji mee ka Kubernetes Engine API nwee ike:

  1. Gaa na Kubernetes Engine ibe na Google Cloud Platform console.
  2. Mepụta ma ọ bụ họrọ oru ngo.
  3. Подождите, пока включится API и связанные службы. Это может занять несколько минут.
  4. Gbaa mbọ hụ na edobere ịgba ụgwọ maka ọrụ Google Cloud Platform gị. Mụta ka esi eme ka ịgba ụgwọ nwee ike.

N'ime nkuzi a, ị nwere ike iji Cloud Shell, nke na-akwado igwe mebere g1-small в Google Compute Engine ya na Linux dabeere na Debian, ma ọ bụ Linux ma ọ bụ kọmputa MacOS.

Nhọrọ A: Iji Cloud Shell

Uru nke iji Cloud Shell:

  • Python 2 na Python 3 gburugburu mmepe (gụnyere virtualenv) полностью настроены.
  • Ngwa Line Command gcloud, docker, gaa и kubectl, nke anyị ga-eji arụnyere.
  • Ị nwere ọtụtụ ị ga-ahọrọ текстовых редакторов:
    1. Koodu nchịkọta akụkọ, который открывается значком редактирования в верхней части окна Cloud Shell.
    2. Emacs, Vim ma ọ bụ Nano, nke na-emeghe site na ahịrị iwu na Cloud Shell.

Iji Shell igwe ojii:

  1. Gaa na njikwa GCP.
  2. Pịa bọtịnụ ahụ Mee Cloud Shell rụọ ọrụ (Активировать Cloud Shell) в верхней части окна консоли GCP.

Na-akwado ngwa maka Istio

Na akụkụ ala консоли GCP Oge Cloud Shell nwere ahịrị iwu ga-emeghe na mpio ọhụrụ.

Na-akwado ngwa maka Istio

Nhọrọ B: Iji Ngwa Line Command na mpaghara

Если вы будете работать на компьютере с Linux или macOS, нужно настроить и установить следующие компоненты:

  1. Hazie Python 3 na Python 2 gburugburu mmepe.

  2. Wụnye Cloud SDK na ngwá ọrụ ahịrị iwu gcloud.

  3. Tọọ kubectl — инструмент командной строки для работы с Kubernetes.

    gcloud components install kubectl

  4. Tọọ Mbipụta Obodo Docker (CE). Вы будете использовать инструмент командной строки docker, чтобы создавать образы контейнеров для примера приложения.

  5. Установите инструмент Njikwa ụdị Gitiji nweta ngwa nlele site na GitHub.

Budata koodu nlele

  1. Загрузите исходный код helloserver:

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

  2. Перейдите в каталог примера кода:

    cd istio-samples/sample-apps/helloserver

Изучение приложения с несколькими сервисами

Пример приложения написан на Python и состоит из двух компонентов, которые взаимодействуют с помощью REST:

  • server: ihe nkesa dị mfe nwere otu njedebe GET, /, nke na-ebipụta "hello ụwa" na console.
  • ibu ibu: скрипт, который посылает трафик на server, с настраиваемым числом запросов в секунду.

Na-akwado ngwa maka Istio

Na-eme ngwa site na koodu isi mmalite

Iji nyochaa ngwa nlele ahụ, mee ya na Cloud Shell ma ọ bụ na kọmputa gị.
1) Na katalọgụ istio-samples/sample-apps/helloserver na-agba ọsọ server:

python3 server/server.py

Na mmalite server отображается следующее:

INFO:root:Starting server...

2) Mepee windo ọnụ ọzọ ka iziga arịrịọ server. Ọ bụrụ na ị na-eji Cloud Shell, pịa akara ngosi gbakwunye ka imepe nnọkọ ọzọ.
3) Ziga arịrịọ ka server:

curl http://localhost:8080

server отвечает:

Hello World!

4) Site na ndekọ ebe ị budata koodu nlele, gaa na ndekọ nke nwere ibu ibu:

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) Mee ka ebe mebere arụ ọrụ rụọ ọrụ:

source env/bin/activate

8) Установите требования для ibu ibu:

pip3 install -r requirements.txt

9) Запустите ibu ibu:

python3 loadgen.py

Na mmalite ibu ibu na-egosipụta ihe dị ka ozi a:

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

Na windo ọnụ ọzọ server na-ewepụta ozi ndị a na 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: */*

С точки зрения сети, все приложение работает на одном хосте (локальном компьютере или виртуальной машине Cloud Shell). Поэтому можно использовать localhostiziga arịrịọ server.
10) Чтобы остановить ibu ibu и server, banye Ctrl-c в каждом окне терминала.
11) Na windo ọnụ ibu ibu gbanyụọ mebere gburugburu:

deactivate

Ịkwakọba ngwa n'ime akpa

Чтобы запустить приложение на GKE, нужно упаковать пример приложения — server и ibu ibu - na akpa. Контейнер — это способ упаковать приложение, чтобы изолировать его от среды.

Iji tinye ngwa n'ime akpa, ịchọrọ dockerfile. dockerfile bụ faịlụ ederede na-akọwa iwu maka iwulite koodu isi mmalite ngwa yana dabere na ya образ Docker. Ozugbo arụchara ya, ị bulite onyonyo a na ndekọ akpa dị ka Docker Hub ma ọ bụ Ndebanye aha akpa.

Ihe atụ enweela dockerfile n'ihi na server и ibu ibu na iwu niile dị mkpa iji nakọta onyonyo. N'okpuru - dockerfile n'ihi na 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" ]

  • otu SITE na Python: 3-slim dị ka isi велит Docker использовать последний Foto Python 3 dị ka ntọala.
  • otu Iṅomi. . detuo faịlụ isi mmalite na ndekọ ọrụ ugbu a (n'ọnọdụ anyị naanị ihe nkesa.py) в файловую систему контейнера.
  • ENTERRYPOINT na-akọwapụta iwu eji malite akpa ahụ. N'ọnọdụ anyị, iwu a fọrọ nke nta ka ọ bụrụ otu nke ị na-agbabu ihe nkesa.py site na koodu isi mmalite.
  • otu Ikpughe na-egosi na server na-eche data site n'ọdụ ụgbọ mmiri 8080. Otu a abụghị na-enye ọdụ ụgbọ mmiri. Nke a bụ ụfọdụ ụdị akwụkwọ achọrọ iji mepee ọdụ ụgbọ mmiri 8080 mgbe ịmalite akpa ahụ.

Подготовка к контейнеризации приложения

1) Tọọ mgbanwe gburugburu ebe obibi ndị a. Dochie PROJECT_ID na NJ ọrụ GCP gị.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Iji ụkpụrụ PROJECT_ID и GCR_REPO вы помечаете образ Docker, когда собираете и отправляете его в частный Container Registry.

2) Tọọ ọrụ GCP ndabara maka ngwa ahịrị iwu gcloud.

gcloud config set project $PROJECT_ID

3) Tọọ mpaghara ndabara maka ngwá ọrụ ahịrị iwu gcloud.

gcloud config set compute/zone us-central1-b

4) Gbaa mbọ hụ na agbanyere ọrụ ndekọ Container n'ọrụ GCP.

gcloud services enable containerregistry.googleapis.com

Ihe nkesa arịa

  1. Перейдите в каталог, где находится пример server:

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

  2. Jiri chịkọta onyonyo a dockerfile na mgbanwe gburugburu ebe ị kọwapụtara na mbụ:

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

Ogologo -t na-anọchi anya mkpado Docker. Nke a bụ aha onyonyo ị na-eji mgbe ị na-ebuga akpa ahụ.

  1. Bulite foto a na ndekọ akpa:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Ngwakọta nke loadgen

1) Gaa na ndekọ ebe ihe atụ dị ibu ibu:

cd ../loadgen

2) Chịkọta onyonyo:

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

3) Bulite onyonyo a na ndekọ akpa:

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

Lelee ndepụta onyonyo

Nyochaa ndepụta onyonyo dị na ebe nchekwa wee chọpụta na ebugoro foto ndị a:

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

Iwu ahụ gosipụtara aha onyonyo ndị ebugoro ọhụrụ:

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

Создание кластера GKE.

Enwere ike ịgbanye akpa ndị a na igwe mebere igwe Cloud Shell ma ọ bụ na kọmpụta nwere iwu ahụ docker na-agba ọsọ. Ma n'ebe a na-emepụta ihe, ị ga-achọ ụzọ ị ga-esi na-ahazi arịa na etiti. Dịka ọmụmaatụ, ịchọrọ usoro nke na-eme ka arịa na-agba ọsọ mgbe niile, na ịchọrọ ụzọ iji bulie ma gbasaa ihe ndị ọzọ akpa ma ọ bụrụ na okporo ụzọ na-abawanye.

Iji mee ngwa nwere akpa, ị nwere ike iji G.K.E.. GKE — это платформа оркестрации контейнеров, которая объединяет виртуальные машины в кластер. Каждая виртуальная машина называется узлом. Кластеры GKE основаны на опенсорс-системе управления кластерами Kubernetes. Kubernetes предоставляет механизмы взаимодействия с кластером.

Ịmepụta ụyọkọ GKE:

1) Создайте кластер:

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

otu gcloud na-emepụta ụyọkọ adịgboroja n'ime ọrụ GCP yana mpaghara ndabara ị kwuru. Iji mee Istio, anyị na-akwado inwe opekata mpe 4 ọnụ na igwe mebere n1-ọkọlọtọ-2.

Otu a na-emepụta ụyọkọ ahụ n'ime nkeji ole na ole. Mgbe ụyọkọ ahụ dị njikere, iwu ahụ na-ewepụta ihe dị ka nke a ozi.

2) Укажите учетные данные в инструменте командной строки kubectliji ya jikwaa ụyọkọ ahụ:

gcloud container clusters get-credentials istioready

3) Теперь можно общаться с Kubernetes через kubectl. Dịka ọmụmaatụ, iwu na-esonụ nwere ike ịchọpụta ọnọdụ ọnụ:

kubectl get nodes

Iwu ahụ na-ewepụta ndepụta ọnụ:

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

Isi echiche Kubernetes

Eserese a na-egosi ngwa na GKE:

Na-akwado ngwa maka Istio

Tupu ibunye arịa na GKE, mụta isi echiche nke Kubernetes. Enwere njikọ na njedebe ma ọ bụrụ na ịchọrọ ịmụtakwu.

  • Ọnụ na ụyọkọ. В GKE узел — это виртуальная машина. На других платформах Kubernetes узлом может быть компьютер или виртуальная машина. Кластер — это набор узлов, которые можно считать единым целым и где вы развертываете контейнеризированное приложение.
  • Pọds. Na Kubernetes, arịa na-agba na pọd. Pod dị na Kubernetes bụ nkeji anaghị ekewa. Pod na-ejide otu akpa ma ọ bụ karịa. Ị na-ebunye arịa ihe nkesa na ibu ibu n'ụdị pods dị iche iche. Mgbe enwere ọtụtụ akpa na pọd (dịka ọmụmaatụ, ihe nkesa ngwa na ihe nkesa proxy), контейнеры управляются как единый объект и совместно используют ресурсы pod’а.
  • Nkwanye. Na Kubernetes, mbugharị bụ ihe bụ mkpokọta pọd ndị yiri ya. Nkwanye na-ebupụta ọtụtụ mkpụrụ pọd ndị ekesara gafee ọnụ ụyọkọ. Nbunye na-anọchi anya pọd ndị dara ada ma ọ bụ na-anabataghị.
  • Сервис Kubernetes. Mgbe ị na-agba koodu ngwa na GKE, njikọ dị n'etiti ibu ibu и server. Когда вы запустили сервисы на виртуальной машине Cloud Shell или на компьютере, вы отправляли запросы к server na localhost: 8080. Ozugbo ebugara na GKE, a na-egbu pọd n'ọnụ ọnụ dị. Site na ndabara, ị nweghị njikwa nke ọnụ nke pọd na-arụ ọrụ, yabụ ị pọd enweghị adreesị IP na-adịgide adịgide.
    Iji nweta adreesị IP maka server, ịkwesịrị ịkọwapụta abstraction netwọk n'elu pọd. Nke ahụ bụ ihe ọ bụ Ọrụ Kubernetes. Ọrụ Kubernetes na-enye ebe njedebe na-adịgide adịgide maka otu pọd. Enwere ole na ole ụdị ọrụ. server na -eji LoadBalancer, nke na-enye adreesị IP mpụga iji kpọtụrụ server из-за пределов кластера.
    Kubernetes nwekwara sistemụ DNS arụnyere n'ime nke na-ekenye aha DNS (dịka ọmụmaatụ, helloserver.default.cluster.local) сервисам. Благодаря этому pod’ы внутри кластера связываются с другими pod’ами в кластере по постоянному адресу. Имя DNS нельзя использовать за пределами кластера, например в Cloud Shell или на компьютере.

Kubernetes pụtara

Mgbe isi na isi mmalite mere ngwa a, i jiri iwu dị mkpa python3

ihe nkesa.py

Imperative pụtara ngwaa: "mee nke a."

Kubernetes na-eji ihe ngosi ngosi. Nke a pụtara na anyị anaghị agwa Kubernetes kpọmkwem ihe anyị ga-eme, kama na-akọwa ọnọdụ achọrọ. Dịka ọmụmaatụ, Kubernetes na-amalite ma kwụsị pods ka ọ dị mkpa iji dobe ọnọdụ nke usoro ahụ n'ezie na ọnọdụ achọrọ.

Желаемое состояние вы указываете в манифестах, или файлах UMUAKA. Faịlụ YAML nwere nkọwapụta maka otu ihe ma ọ bụ karịa Kubernetes.

Ihe atụ nwere faịlụ YAML maka server и ibu ibu. Faịlụ YAML ọ bụla na-akọwapụta ọnọdụ achọrọ nke ihe mbugharị yana ọrụ Kubernetes.

sava.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

  • ụdị na-egosi ụdị ihe ahụ.
  • metadata.aha указывает имя развертывания.
  • Первое поле spec содержит описание желаемого состояния.
  • spec.replicas na-egosi ọnụ ọgụgụ pọd ndị achọrọ.
  • Nkebi spec.template na-akọwapụta template pod. Enwere ubi na nkọwapụta pọd image, где указывается имя образа, который нужно извлечь из Container Registry.

A kọwapụtara ọrụ a dịka ndị a:

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

  • LoadBalancer: Ndị ahịa na-eziga arịrịọ na adreesị IP nke onye na-ebu ibu, nke nwere adreesị IP na-adịgide adịgide ma na-enweta ya site na mpụga ụyọkọ ahụ.
  • targetPort: dị ka ị na-echeta, otu EXPOSE 8080 в dockerfile enyeghị ọdụ ụgbọ mmiri. Ị na-enye ọdụ ụgbọ mmiri 8080, чтобы можно было связаться с контейнером server снаружи кластера. В нашем случае hellosvc.default.cluster.local:80 (короткое имя: ndewovc) kwekọrọ na ọdụ ụgbọ mmiri 8080 Adreesị IP Pod helloserver.
  • n'ọdụ ụgbọ mmiri: Nke a bụ nọmba ọdụ ụgbọ mmiri ebe ọrụ ndị ọzọ na ụyọkọ ga-eziga arịrịọ.

loadgen.yaml

Ihe ebuga loadgen.yaml na adị ka sava.yaml. Разница в том, что объект развертывания содержит раздел ihe ruru. Ọ na-akọwapụta mgbanwe gburugburu ebe obibi achọrọ ibu ibu na nke ị rụnyere mgbe ị na-agba ọsọ site na isi mmalite.

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

Oge ibu ibu anaghị anabata arịrịọ mbata, maka ubi ụdị egosi ụyọkọ IP. Ụdị a na-enye adreesị IP na-adịgide adịgide nke ọrụ dị na ụyọkọ ahụ nwere ike iji, mana adreesị IP a adịghị ekpughe ndị ahịa mpụga.

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

Na-ebuga arịa na GKE

1) Gaa na ndekọ ebe ihe atụ dị server:

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

2) Mepee sava.yaml na editọ ederede.
3) Dochie aha na ubi image n'aha onyonyo Docker gị.

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

Dochie PROJECT_ID na NJ ọrụ GCP gị.
4) Chekwa ma mechie sava.yaml.
5) Разверните файл YAML в Kubernetes:

kubectl apply -f server.yaml

Mgbe emechara nke ọma, iwu ahụ na-ewepụta koodu a:

deployment.apps/helloserver created
service/hellosvc created

6) Gaa na ndekọ ebe ibu ibu:

cd ../loadgen

7) Mepee loadgen.yaml na editọ ederede.
8) Dochie aha na ubi image n'aha onyonyo Docker gị.

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

Dochie PROJECT_ID na NJ ọrụ GCP gị.
9) Chekwa ma mechie loadgen.yaml, mechie editọ ederede.
10) Разверните файл YAML в Kubernetes:

kubectl apply -f loadgen.yaml

Mgbe emechara nke ọma, iwu ahụ na-ewepụta koodu a:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Lelee ọkwa nke pọd ahụ:

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) Wepụ ndekọ ngwa na pọd ibu ibu. Dochie POD_ID na njirimara site na azịza gara aga.

kubectl logs loadgenerator-POD_ID

13) Nweta adreesị IP mpụga ndewovc:

kubectl get service

Nzaghachi iwu ahụ dị ka nke a:

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) Ziga arịrịọ ka ndewovc: dochie EXTERNAL_IP на внешний IP-адрес ndewovc.

curl http://EXTERNAL_IP

Ka anyị were Istio

У вас уже есть приложение, развернутое в GKE. ibu ibu может использовать Kubernetes DNS (helosvc:80), чтобы отправлять запросы к server, и вы можете отправлять запросы к server site na adreesị IP mpụga. Agbanyeghị na Kubernetes nwere ọtụtụ atụmatụ, enwere ụfọdụ ozi na-efu gbasara ọrụ ndị a:

  • Kedu ka ọrụ si emekọrịta? Kedu njikọ dị n'etiti ọrụ? Kedu ka okporo ụzọ si aga n'etiti ọrụ? Ị maara nke ahụ ibu ibu na-eziga arịrịọ server, mana were ya na ị maghị ihe ọ bụla gbasara ngwa ahụ. Iji zaa ajụjụ ndị a, ka anyị leba anya na ndepụta pọd na-agba ọsọ na GKE.
  • Metrics. Ogologo ole server zara arịrịọ mbata? Arịrịọ ole kwa nkeji nke sava na-enweta? Ọ na-enye ozi njehie?
  • Ozi nchekwa. Okporo ụzọ n'etiti ibu ibu и server dị nnọọ gafere Http ma ọ bụ site na mTLS?

Istio zara ajụjụ ndị a niile. Iji mee nke a, Istio na-edobe proxy sidecar Ụkọ n'akụkụ nke ọ bụla. Onye nnọchi anya onye ozi na-egbochi okporo ụzọ niile na-abata ma na-apụ na arịa ngwa. Ọ pụtara na server и ibu ibu nweta site sidecar proxy Envoy, na okporo ụzọ niile si ibu ibu к server проходит через прокси Envoy.

Njikọ dị n'etiti proxies ndị ozi na-etolite ntupu ọrụ. Ihe owuwu ntupu ọrụ na-enye njikwa njikwa n'elu Kubernetes.

Na-akwado ngwa maka Istio

Ebe ọ bụ na proxies ndị ozi na-agba n'ime akpa nke ha, enwere ike itinye Istio n'elu ụyọkọ GKE na-enweghị mgbanwe ọ bụla na koodu ngwa. Mana ịmeela ụfọdụ ọrụ iji kwado ngwa gị ka Istio ga-elekọta ya:

  • Ọrụ maka akpa niile. Iji mbugharị server и ibu ibu привязано по сервису Kubernetes. Даже у ibu ibu, к которому не поступают входящие запросы, есть сервис.
  • Ọdụ ụgbọ mmiri dị na ọrụ ga-enwerịrị aha. Ọ bụ ezie na enwere ike ịhapụ ọdụ ụgbọ mmiri na-enweghị aha na GKE, Istio chọrọ ka ị kọwapụta ya aha ọdụ ụgbọ mmiri dị ka ụkpụrụ ya siri dị. Na faịlụ YAML ọdụ ụgbọ mmiri maka server akpọ httpn'ihi na ihe nkesa na-eji protocol Http. Если бы ọrụ eji gRPC, ị ga-akpọ ọdụ ụgbọ mmiri ahụ grpc.
  • Развертывания помечаются. Поэтому вы можете использовать функции управления трафиком Istio, например разделять трафик между версиями одного сервиса.

Ịwụnye Istio

Enwere ụzọ abụọ iji wụnye Istio. Nwere ike mee Istio na ndọtị GKE ma ọ bụ установить опенсорс-версию Istio на кластере. С Istio on GKE можно легко управлять установкой и апгрейдом Istio в рамках жизненного цикла кластера GKE. Если вам нужна самая новая версия Istio или больше контроля над конфигурацией панели управления Istio, установите опенсорс-версию вместо расширения Istio on GKE. Чтобы определиться с подходом, читайте статью Achọrọ m Istio na GKE?.

Выберите вариант, изучите соответствующее руководство и следуйте инструкциям, чтобы установить Istio на кластере. Если вы хотите использовать Istio с только что развернутым приложением, включите внедрение sidecar’ов для пространства имен ndabara.

Nhicha

Iji zere ịbụ onye ebubo na akaụntụ Google Cloud Platform gị maka akụrụngwa ị jiri na nkuzi a, hichapụ ụyọkọ akpa ozugbo ị tinyechara Istio wee jiri ngwa nlele gwuo ya. Nke a ga-ewepụ akụrụngwa ụyọkọ niile, dị ka ịgbakọ oge, diski na akụrụngwa netwọkụ.

Kedu ihe ọzọ?

isi: www.habr.com

Tinye a comment