Istio бол тархсан програмуудыг холбох, хамгаалах, хянах тохиромжтой хэрэгсэл юм. Istio нь программ хангамжийг өргөн цар хүрээтэй ажиллуулж, удирдахын тулд төрөл бүрийн технологиудыг ашигладаг бөгөөд үүнд програмын кодыг багцлах, байршуулах хамаарлыг багтаасан контейнерууд, тэдгээр контейнеруудыг удирдахад Kubernetes ашигладаг. Тиймээс, Istio-тэй ажиллахын тулд эдгээр технологид суурилсан олон үйлчилгээтэй програм хэрхэн ажилладагийг мэдэх ёстой ямар ч Istio. Хэрэв эдгээр хэрэгсэл, ойлголтууд танд аль хэдийн танил болсон бол энэ зааварчилгааг алгасаад шууд хэсэг рүү очоорой.
Энэ бол алхам алхмаар зааварчилгаа бөгөөд бид эх кодоос эхлээд GKE контейнер хүртэлх бүх үйл явцыг авч үзэх бөгөөд ингэснээр та жишээн дээр эдгээр технологийн талаар үндсэн ойлголттой болно. Istio эдгээр технологийн хүчийг хэрхэн ашиглаж байгааг та бас харах болно. Энэ нь та контейнер, Кубернетес, үйлчилгээний тор, Istio-ийн талаар юу ч мэдэхгүй гэж үздэг.
үүрэг
Энэ зааварт та дараах ажлуудыг гүйцэтгэх болно.
- Олон үйлчилгээ бүхий энгийн сайн уу дэлхийн програмыг сурах.
- Програмыг эх кодоос ажиллуулна уу.
- Програмыг саванд хийх.
- Kubernetes кластер үүсгэх.
- Контейнерүүдийг кластерт байрлуулж байна.
Эхлэхээсээ өмнө
Kubernetes Engine API-г идэвхжүүлэхийн тулд зааврыг дагана уу:
- Явна уу
Kubernetes Engine хуудас Google Cloud Platform консол дээр. - Төсөл үүсгэх эсвэл сонгох.
- API болон холбогдох үйлчилгээг идэвхжүүлэх хүртэл хүлээнэ үү. Үүнд хэдэн минут зарцуулагдаж магадгүй.
- Таны Google Cloud Platform төсөлд төлбөр тооцоог тохируулсан эсэхийг шалгана уу.
Төлбөр тооцоог хэрхэн идэвхжүүлэх талаар мэдэж аваарай .
Энэ зааварт та виртуал машиныг бэлтгэдэг Cloud Shell-г ашиглаж болно
Сонголт А: Cloud Shell ашиглах
Cloud Shell ашиглахын давуу талууд:
- Python 2 ба Python 3 хөгжүүлэлтийн орчин (үүнд виртуалв) бүрэн тохируулагдсан байна.
- Тушаалын мөрийн хэрэгслүүд gcloud, боомт, Go и кубектлБидний ашиглах , аль хэдийн суулгасан байна.
- Танд хэд хэдэн сонголт хийх боломжтой
текст засварлагчид :Код засварлагч , Cloud Shell цонхны дээд хэсэгт байрлах засварлах дүрсээр нээгдэнэ.- Cloud Shell дахь командын мөрөөс нээгддэг Emacs, Vim эсвэл Nano.
Хэрэглэх
- GCP консол руу очно уу.
- хэвлэл мэдээллийн Cloud Shell-ийг идэвхжүүлнэ үү (Үүлэн бүрхүүлийг идэвхжүүлэх) GCP консолын цонхны дээд талд.
Доод хэсэгт
Сонголт В: Орон нутгийн командын мөрийн хэрэгслийг ашиглах
Хэрэв та Linux эсвэл macOS үйлдлийн системтэй компьютер дээр ажиллах бол дараах бүрэлдэхүүн хэсгүүдийг тохируулж суулгах шаардлагатай.
-
Тохируулах
Python 3 ба Python 2 хөгжүүлэлтийн орчин . -
Cloud SDK суулгана уу тушаалын мөрийн хэрэгслээр gcloud. -
Тогто кубектл - ажиллах командын мөрийн хэрэгсэл
Kubernetes .gcloud components install kubectl
-
Тогто
Docker Community Edition (CE) . Та тушаалын мөрийн хэрэгслийг ашиглах болно боомтдээж програмд зориулсан контейнер дүрсийг үүсгэх. -
Хэрэгслийг суулгана уу
Git хувилбарын хяналт GitHub-аас жишээ програм авах.
Жишээ кодыг татаж авах
-
Эх кодыг татаж авах сайн уу сервер:
git clone https://github.com/GoogleCloudPlatform/istio-samples
-
Жишээ кодын лавлах руу очно уу:
cd istio-samples/sample-apps/helloserver
Олон үйлчилгээ бүхий програмыг судлах
Програмын жишээ нь Python хэл дээр бичигдсэн бөгөөд ашиглан харилцан үйлчилдэг хоёр бүрэлдэхүүн хэсгээс бүрдэнэ
- сервер: нэг төгсгөлтэй энгийн сервер GET, /, энэ нь "Сайн уу ертөнц" гэж консол дээр хэвлэдэг.
- ачаалах: урсгалыг илгээдэг скрипт сервер, секундэд тохируулж болох тооны хүсэлттэй.
Эх кодоос програм ажиллуулж байна
Жишээ програмыг судлахын тулд үүнийг 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 --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 дээр ажиллуулахын тулд та жишээ програмыг багцлах хэрэгтэй − сервер и ачаалах - үед
Програмыг контейнерт багцлахын тулд танд хэрэгтэй Докер файл. Докер файл нь програмын эх код болон түүний хамаарлыг бий болгох командуудыг тодорхойлдог текст файл юм
Жишээ нь аль хэдийн байна Докер файл нь сервер и ачаалах зураг цуглуулахад шаардлагатай бүх командуудтай. Доор - Докер файл нь сервер:
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-slim as base Docker-д хамгийн сүүлийн үеийн хувилбарыг ашиглахыг хэлдэг
Python 3 зураг суурь болгон. - баг ХУУЛАХ. . эх файлуудыг одоогийн ажиллаж байгаа лавлах руу хуулдаг (зөвхөн манай тохиолдолд server.py) контейнерийн файлын систем рүү.
- ОРОХ ЦЭГ савыг эхлүүлэх командыг тодорхойлно. Манай тохиолдолд энэ команд нь таны ажиллуулдаг байсантай бараг ижил байна server.py эх кодоос.
- баг НЭМЭХ гэдгийг харуулж байна сервер портоор дамжуулан өгөгдөл хүлээж байна 8080. Энэ баг биш
портуудыг хангадаг . Энэ нь портыг нээхэд шаардлагатай зарим төрлийн баримт бичиг юм 8080 савыг эхлүүлэх үед.
Өргөдлийг тань хадгалахаар бэлдэж байна
1) Дараах орчны хувьсагчдыг тохируулна уу. Солих PROJECT_ID таны GCP төслийн ID руу.
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
Контейнержуулах сервер
-
Жишээ байрладаг лавлах руу очно уу сервер:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
-
Зургийг ашиглан угсарна Докер файл болон таны өмнө тодорхойлсон орчны хувьсагч:
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .
Үзүүлэлт -t Docker тагийг төлөөлдөг. Энэ бол савыг байрлуулахдаа ашигладаг зургийн нэр юм.
- Контейнерийн бүртгэлд зургийг байршуулна уу:
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 кластер үүсгэх:
1) Кластер үүсгэх:
gcloud container clusters create istioready
--cluster-version latest
--machine-type=n1-standard-2
--num-nodes 4
баг gcloud GCP төсөл болон таны заасан өгөгдмөл бүсэд istioready кластер үүсгэдэг. Istio-г ажиллуулахын тулд бид дор хаяж 4 зангилаа болон виртуал машинтай байхыг зөвлөж байна
Баг хэдхэн минутын дотор кластер үүсгэдэг. Кластер бэлэн болсон үед тушаал нь иймэрхүү зүйлийг гаргана
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 дээрх програмыг харуулж байна:
GKE-д контейнер байрлуулахаасаа өмнө Kubernetes-ийн үндсэн ойлголтуудыг мэдэж аваарай. Хэрэв та илүү ихийг мэдэхийг хүсвэл төгсгөлд нь холбоосууд байгаа.
- Зангилаа ба кластерууд. GKE-д зангилаа нь виртуал машин юм. Бусад Kubernetes платформ дээр зангилаа нь компьютер эсвэл виртуал машин байж болно. Кластер нь контейнержүүлсэн програмыг байршуулах нэг нэгж гэж үзэж болох зангилааны цуглуулга юм.
- Pods. Кубернетес хотод савнууд нь хонхорцог хэлбэрээр ажилладаг. Kubernetes дахь Pod нь хуваагдашгүй нэгж юм. Pod нь нэг буюу хэд хэдэн савыг агуулна. Та серверийн контейнеруудыг байрлуулж, ачаалах тусдаа саванд. Дотор нь хэд хэдэн контейнер байгаа үед (жишээлбэл, програмын сервер болон
прокси сервер ), чингэлэгүүдийг нэг аж ахуйн нэгж байдлаар удирдаж, pod нөөцийг хуваалцдаг. - Байрлуулалт. Kubernetes-д deployment нь ижил подволуудын цуглуулга болох объект юм. Байршлуулалт нь кластерийн зангилаануудаар тархсан подын олон хуулбарыг эхлүүлдэг. Байрлуулалт нь бүтэлгүйтсэн эсвэл хариу өгөхгүй байгаа pod-уудыг автоматаар сольдог.
- Kubernetes үйлчилгээ. GKE-д програмын кодыг ажиллуулах үед хоорондын холболт ачаалах и сервер. Та Cloud Shell виртуал машин эсвэл ширээний компьютер дээр үйлчилгээгээ эхлүүлэхдээ хүсэлт илгээсэн сервер хаягаар localhost: 8080. GKE-д байршуулсны дараа pods боломжтой зангилаанууд дээр ажиллана. Өгөгдмөл байдлаар, та аль зангилаа дээр подвол дээр ажиллаж байгааг хянах боломжгүй тул та
хонхорцог байнгын IP хаяг байхгүй.
IP хаяг авахын тулд сервер, та pods дээр сүлжээний хийсвэрлэлийг тодорхойлох хэрэгтэй. Ийм л байнаKubernetes үйлчилгээ . Kubernetes үйлчилгээ нь багцын багцад байнгын төгсгөлийн цэгээр хангадаг. Цөөн хэдэн байнаүйлчилгээний төрөл . сервер ашигладаг LoadBalancer, энэ нь холбоо барих гадаад IP хаягийг өгдөг сервер кластерын гаднаас.
Kubernetes нь DNS нэрийг хуваарилдаг суурилуулсан DNS системтэй (жишээлбэл, helloserver.default.cluster.local) үйлчилгээ. Үүний ачаар кластер доторх pods нь кластерын бусад pods-той тогтмол хаягаар холбогддог. DNS нэрийг Cloud Shell эсвэл компьютер гэх мэт кластераас гадуур ашиглах боломжгүй.
Кубернетес илэрдэг
Та програмыг эх сурвалжаас ажиллуулахдаа зайлшгүй тушаалыг ашигласан python3
server.py
Захиалга нь "үүнийг хий" гэсэн үйл үгийг илэрхийлдэг.
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
- төрөл объектын төрлийг заана.
- мета өгөгдөл.нэр байршуулах нэрийг зааж өгдөг.
- Эхний талбар SPEC хүссэн төлөвийн тайлбарыг агуулна.
- spec.replicas Хүссэн тооны хонхорцог заана.
- Хэсэг spec.загвар pod загварыг тодорхойлдог. Pod-ийн тодорхойлолтод талбар бий зураг, энэ нь Контейнерийн бүртгэлээс гаргаж авах шаардлагатай зургийн нэрийг зааж өгдөг.
Үйлчилгээг дараахь байдлаар тодорхойлно.
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 төслийн ID руу.
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 төслийн ID руу.
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: солих ГАДААД_IP гадаад IP хаяг руу hellovc.
curl http://EXTERNAL_IP
Istio-г авч үзье
Танд GKE-д байршуулсан програм байна. ачаалах Kubernetes DNS ашиглаж болно (Hellovc: 80) хүсэлт илгээх серверхаягаар хүсэлт илгээх боломжтой сервер гадаад IP хаягаар. Хэдийгээр Kubernetes олон функцтэй боловч үйлчилгээний талаар зарим мэдээлэл дутуу байна:
- Үйлчилгээнүүд хэрхэн харилцан үйлчилдэг вэ? Үйлчилгээний хооронд ямар харилцаа холбоо байдаг вэ? Үйлчилгээ хоорондын замын хөдөлгөөний урсгал хэрхэн явагддаг вэ? Та үүнийг мэдэж байна уу ачаалах руу хүсэлт илгээдэг сервер, гэхдээ та програмын талаар юу ч мэдэхгүй байна гэж төсөөлөөд үз дээ. Эдгээр асуултад хариулахын тулд GKE-д ажиллаж байгаа pods-ийн жагсаалтыг харцгаая.
- Хэмжигдэхүүн. Хэр удаан сервер ирж буй хүсэлтэд хариу өгөх үү? Сервер секундэд хэдэн хүсэлт хүлээн авдаг вэ? Энэ нь алдааны мессеж өгдөг үү?
- Аюулгүй байдлын мэдээлэл. Замын хөдөлгөөн ачаалах и сервер зүгээр л дамждаг HTTP эсвэл өөр
mTLS ?
Истио эдгээр бүх асуултад хариулдаг. Үүнийг хийхийн тулд Istio нь хажуугийн прокси байрлуулдаг
Envoy прокси хоорондын холболтууд нь үйлчилгээний сүлжээг бүрдүүлдэг. Үйлчилгээний торон архитектур нь Kubernetes дээр хяналтын давхаргыг хангадаг.
Envoy прокси нь өөрийн саванд ажилладаг тул Istio-г GKE кластер дээр суулгаж, програмын кодыг бараг өөрчлөхгүйгээр суулгаж болно. Гэхдээ та програмаа Istio удирдахад бэлэн болгохын тулд зарим ажил хийсэн:
- Бүх чингэлэгт зориулсан үйлчилгээ. Байрлуулалт руу сервер и ачаалах Kubernetes үйлчилгээтэй холбоотой. Тэр ч байтугай ачаалах, ирж буй хүсэлтийг хүлээн авдаггүй, үйлчилгээ байдаг.
- Үйлчилгээний портууд заавал нэртэй байх ёстой. Хэдийгээр үйлчилгээний портуудыг GKE-д нэргүй үлдээж болох ч Istio танаас зааж өгөхийг шаарддаг
портын нэр түүний протоколын дагуу. YAML файлд портыг оруулна уу сервер дуудаж байна HTTPУчир нь сервер протокол ашигладаг HTTP... Хэрэв үйлчилгээ ашигласан gRPC, та портыг нэрлэх болно grpc. - Байрлуулалтыг дарцагласан байна. Тиймээс, та нэг үйлчилгээний хувилбаруудын хооронд урсгалыг хуваах гэх мэт Istio-ийн замын хөдөлгөөний удирдлагын функцуудыг ашиглаж болно.
Istio суулгаж байна
Istio-г суулгах хоёр арга бий. Чадах
Сонголтыг сонгоод, тохирох гарын авлагыг уншаад, кластер дээрээ Istio суулгах зааврыг дагана уу. Хэрэв та шинээр байршуулсан программдаа Istio-г ашиглахыг хүсвэл,
Цэвэрлэгээ
Энэ зааварт ашигласан нөөцийн төлбөрийг өөрийн Google Cloud Platform акаунтаас авахгүйн тулд Istio-г суулгаж, жишээ программ дээр тоглуулсны дараа контейнер кластерыг устгана уу. Энэ нь тооцоолох тохиолдлууд, дискүүд болон сүлжээний нөөцүүд гэх мэт кластерийн бүх нөөцийг устгах болно.
Дараа нь юу юм бэ?
-
Дараах технологиудыг судал.
-
Дараах хэрэгслүүдтэй танилцана уу:
-
Kubernetes-ийн ойлголтуудыг сур:
Эх сурвалж: www.habr.com