د اسټیو لپاره غوښتنلیک چمتو کول

د اسټیو لپاره غوښتنلیک چمتو کول

اسټیو د توزیع شوي غوښتنلیکونو سره وصل کولو ، خوندي کولو او نظارت کولو لپاره اسانه وسیله ده. اسټیو په پیمانه د سافټویر چلولو او اداره کولو لپاره مختلف ټیکنالوژي کاروي ، پشمول د غوښتنلیک کوډ بسته کولو لپاره کانټینرونه او د ځای پرځای کولو لپاره انحصاري ، او کوبرنیټس د دې کانټینرونو اداره کولو لپاره. له همدې امله ، د اسټیو سره کار کولو لپاره تاسو باید پوه شئ چې د دې ټیکنالوژیو پراساس د ډیری خدماتو سره غوښتنلیک څنګه کار کوي پرته Istio. که دا وسیلې او مفکورې تاسو ته دمخه پیژندل شوي وي ، نو وړیا احساس وکړئ چې دا ټیوټوریل پریږدئ او مستقیم برخې ته لاړشئ په ګوګل Kubernetes انجن (GKE) کې د اسټیو نصب کول یا د توسیع نصب کول Istio په GKE کې.

دا یو ګام په ګام لارښود دی چیرې چې موږ به د سرچینې کوډ څخه تر GKE کانټینر پورې ټولې پروسې ته لاړ شو ترڅو تاسو ته د مثال له لارې د دې ټیکنالوژیو لومړني پوهه درکړو. تاسو به دا هم وګورئ چې اسټیو څنګه د دې ټیکنالوژیو ځواک ګټه پورته کوي. دا ګومان کوي ​​چې تاسو د کانټینرونو، کبرنیټس، خدماتو میشونو، یا اسټیو په اړه هیڅ نه پوهیږئ.

دندې

په دې ټیوټوریل کې به تاسو لاندې دندې بشپړې کړئ:

  1. د ډیری خدماتو سره د ساده هیلو نړۍ غوښتنلیک زده کول.
  2. د سرچینې کوډ څخه غوښتنلیک چل کړئ.
  3. په کانتینرونو کې د غوښتنلیک بسته کول.
  4. د Kubernetes کلستر جوړول.
  5. په کلستر کې د کانتینرونو ځای په ځای کول.

مخکې لدې چې تاسو پیل کړئ

د Kubernetes Engine API فعالولو لپاره لارښوونې تعقیب کړئ:

  1. ورتګ د کوبرنیټس انجن پاڼه د ګوګل کلاوډ پلیټ فارم کنسول کې.
  2. یوه پروژه جوړه کړئ یا غوره کړئ.
  3. تر هغه وخته پورې انتظار وکړئ چې API او اړوند خدمات فعال شوي وي. دا کیدای شي څو دقیقې وخت ونیسي.
  4. ډاډ ترلاسه کړئ چې ستاسو د ګوګل کلاوډ پلیټ فارم پروژې لپاره بلینګ تنظیم شوی. د بلینګ فعالولو څرنګوالی زده کړئ.

پدې ټیوټوریل کې ، تاسو کولی شئ د کلاوډ شیل وکاروئ ، کوم چې مجازی ماشین چمتو کوي g1-د ګوګل کمپیوټ انجن کې کوچنی د Debian-based Linux سره، یا د لینکس یا macOS کمپیوټر سره.

اختیار A: د کلاوډ شیل کارول

د کلاوډ شیل کارولو ګټې:

  • Python 2 او Python 3 پرمختیایي چاپیریالونه (په شمول virtualenv) په بشپړه توګه ترتیب شوي دي.
  • د کمانډ لاین وسیلې gCloud, ډاکر, لاړ شه и kubectl، کوم چې موږ به یې وکاروو لا دمخه نصب شوي.
  • تاسو د انتخاب کولو لپاره ډیری لرئ د متن مدیران:
    1. د کوډ مدیر، کوم چې د کلاوډ شیل کړکۍ په سر کې د ترمیم آیکون سره خلاصیږي.
    2. ایماکس، ویم یا نانو، کوم چې په کلاوډ شیل کې د کمانډ لاین څخه خلاصیږي.

د کارولو لپاره د بادار شیل:

  1. د GCP کنسول ته لاړ شئ.
  2. مطبوعاتي د کلاوډ شیل فعال کړئ (د کلاوډ شیل فعال کړئ) د GCP کنسول کړکۍ په سر کې.

د اسټیو لپاره غوښتنلیک چمتو کول

په ښکته برخه کې د GCP کنسول د کمانډ لاین سره د کلاوډ شیل سیشن به په نوې کړکۍ کې خلاص شي.

د اسټیو لپاره غوښتنلیک چمتو کول

اختیار ب: په ځایی توګه د کمانډ لاین وسیلو کارول

که تاسو په لینوکس یا macOS چلولو کمپیوټر کې کار کوئ، نو تاسو به اړتیا ولرئ لاندې برخې تنظیم او نصب کړئ:

  1. حسب ضرورت Python 3 او Python 2 پراختیایی چاپیریال.

  2. کلاوډ SDK نصب کړئ د کمانډ لاین وسیلې سره gCloud.

  3. سیټ kubectl - د کار کولو لپاره د کمانډ لاین وسیله کوبنیټس.

    gcloud components install kubectl

  4. سیټ د ډاکر ټولنې نسخه (CE). تاسو به د کمانډ لاین وسیله وکاروئ ډاکرد نمونې غوښتنلیک لپاره د کانټینر عکسونو رامینځته کولو لپاره.

  5. وسیله نصب کړئ د Git نسخه کنټرولد GitHub څخه د نمونې غوښتنلیک ترلاسه کولو لپاره.

د نمونې کوډ ډاونلوډ کړئ

  1. د سرچینې کوډ ډاونلوډ کړئ سلام سرور:

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

  2. د مثال کوډ لارښود ته لاړ شئ:

    cd istio-samples/sample-apps/helloserver

د ډیری خدماتو سره د غوښتنلیک سپړنه

د نمونې غوښتنلیک په Python کې لیکل شوی او دوه برخې لري چې د کارولو سره اړیکه لري پاتې:

  • سرور: ساده سرور د یوې پای ټکی سره ترلاسه کړئ، /، کوم چې کنسول ته "هیلو ورلډ" چاپ کوي.
  • بار: سکریپټ چې ټرافيک لیږي سرورپه هر ثانیه کې د ترتیب وړ شمیر غوښتنو سره.

د اسټیو لپاره غوښتنلیک چمتو کول

د سرچینې کوډ څخه د غوښتنلیک چلول

د نمونې غوښتنلیک سپړلو لپاره، دا په کلاوډ شیل یا ستاسو په کمپیوټر کې چل کړئ.
1) په کتلاګ کې istio-samples/sample-apps/helloserver منډې سرور:

python3 server/server.py

په پیل کې سرور لاندې ښودل کیږي:

INFO:root:Starting server...

2) د غوښتنې لیږلو لپاره بله ټرمینل کړکۍ پرانیزئ سرور. که تاسو د کلاوډ شیل کاروئ ، د بلې ناستې د خلاصولو لپاره د اضافه آیکون کلیک وکړئ.
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: */*

د شبکې له لید څخه، ټول غوښتنلیک په یو واحد کوربه (ځایی کمپیوټر یا کلاوډ شیل مجازی ماشین) پرمخ ځي. نو تاسو کولی شئ وکاروئ ځایی لوسټد غوښتنې لیږلو لپاره سرور.
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" ]

  • ټیم د python څخه: 3-د بنسټ په توګه پتلی ډاکر ته وايي چې وروستي وکاروئ د Python 3 انځور د یوې اډې په توګه.
  • ټیم کاپي. . د سرچینې فایلونه اوسني کاري لارښود ته کاپي کوي (یوازې زموږ په قضیه کې server.py) د کانټینر فایل سیسټم ته.
  • ENTRYPOINT هغه کمانډ تعریفوي چې د کانټینر پیل کولو لپاره کارول کیږي. زموږ په قضیه کې، دا کمانډ تقریبا ورته دی لکه څنګه چې تاسو یې کاروئ server.py د سرچینې کوډ څخه.
  • ټیم EXPOSE دا په ګوته کوي سرور د بندر له لارې د معلوماتو لپاره انتظار کوي 8080. دا ټیم نه دی بندرونه چمتو کوي. دا یو ډول اسناد دي چې د بندر خلاصولو لپاره اړین دي 8080 کله چې کانټینر پیل کړئ.

ستاسو د غوښتنلیک کانټینر کولو لپاره چمتو کول

1) لاندې چاپیریال تغیرات تنظیم کړئ. پر ځای PROJECT_ID ستاسو د GCP پروژې ID ته.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

د ارزښتونو کارول PROJECT_ID и GCR_REPO تاسو د ډاکر عکس ټګ کړئ کله چې تاسو یې جوړ کړئ او شخصي کانټینر راجسټری ته یې فشار ورکړئ.

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 د ډاکر ټګ استازیتوب کوي. دا د هغه عکس نوم دی چې تاسو یې د کانټینر ځای په ځای کولو کې کاروئ.

  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 کلستر جوړول.

دا کانټینرونه د کلاوډ شیل مجازی ماشین یا په کمپیوټر کې د کمانډ سره پرمخ وړل کیدی شي ډاکر چل. مګر د تولید په چاپیریال کې، تاسو د مرکزي کانتینرونو آرکیسټریټ لپاره یوې لارې ته اړتیا لرئ. د مثال په توګه، تاسو داسې سیسټم ته اړتیا لرئ چې ډاډ ترلاسه کړي چې کانټینرونه تل روان وي، او تاسو د ټرافیک زیاتوالي په صورت کې د اضافي کانټینر مثالونو اندازه کولو او سپن کولو لپاره یوې لارې ته اړتیا لرئ.

د کانټینر شوي غوښتنلیکونو چلولو لپاره تاسو کولی شئ وکاروئ د ‏‎GKE. 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 کلستر رامینځته کوي. د اسټیو چلولو لپاره، موږ وړاندیز کوو چې لږترلږه 4 نوډونه او یو مجازی ماشین ولرئ n1-معیاري-2.

ټیم په څو دقیقو کې کلستر جوړوي. کله چې کلستر چمتو وي، کمانډ یو څه داسې تولیدوي پیغام.

2) د کمانډ لاین وسیلې کې اسناد چمتو کړئ kubectlد کلستر اداره کولو لپاره د دې کارولو لپاره:

gcloud container clusters get-credentials istioready

3) اوس تاسو کولی شئ د کوبرنیټس سره له لارې اړیکه ونیسئ kubectl. د مثال په توګه، لاندې کمانډ کولی شي د نوډونو حالت ومومي:

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 کې کانټینرونه ځای په ځای کړئ ، د کوبرنیټس کلیدي مفکورې زده کړئ. په پای کې لینکونه شتون لري که تاسو غواړئ نور زده کړئ.

  • نوډونه او کلسترونه. په GKE کې، نوډ یو مجازی ماشین دی. په نورو Kubernetes پلیټ فارمونو کې، نوډ کولی شي کمپیوټر یا یو مجازی ماشین وي. کلستر د نوډونو ټولګه ده چې د یو واحد واحد په توګه ګڼل کیدی شي چیرې چې تاسو د کانټینر شوي غوښتنلیک ځای په ځای کوئ.
  • پوزې. په Kubernetes کې، کانتینرونه په پوډونو کې ځي. په کبرنیټس کې پوډ یو نه جلا کیدونکی واحد دی. یو پوډ یو یا څو کانتینرونه لري. تاسو د سرور کانتینرونه ځای په ځای کړئ او بار په جلا کڅوړو کې. کله چې په پوډ کې ډیری کانټینرونه شتون ولري (د مثال په توګه ، د غوښتنلیک سرور او پراکسي سرور)، کانټینرونه د واحد واحد په توګه اداره کیږي او د پوډ سرچینې شریکوي.
  • ګمارنې. په Kubernetes کې، یو ځای پرځای کول یو څیز دی چې د ورته پوډونو ټولګه ده. ګمارنه د پوډونو ډیری نقلونه په کلستر نوډونو کې توزیع کوي. ګمارنه په اوتومات ډول هغه پوډونه بدلوي چې ناکام شوي یا غیر ځواب ویونکي دي.
  • د Kubernetes خدمت. کله چې په GKE کې د غوښتنلیک کوډ چلول، تر منځ اړیکه بار и سرور. کله چې تاسو په کلاوډ شیل مجازی ماشین یا ډیسټاپ کې خدمتونه پیل کړل ، نو تاسو ورته غوښتنې واستولې سرور په ځايي کوربه: 8080. یوځل چې GKE ته ځای په ځای شي ، پوډونه په شته نوډونو کې اجرا کیږي. په ډیفالټ ، تاسو هیڅ کنټرول نلرئ په کوم نوډ چې پوډ روان دی ، نو تاسو پوزې دايمي IP پتې نشته.
    د IP پته ترلاسه کولو لپاره سرور، تاسو اړتیا لرئ د پوډونو په سر کې د شبکې خلاصون تعریف کړئ. دا هغه څه دي چې دا دي د Kubernetes خدمت. د Kubernetes خدمت د پوډونو سیټ لپاره دوامداره پای ټکی چمتو کوي. یو څو شتون لري د خدماتو ډولونه. سرور کاروي LoadBlancer، کوم چې د تماس لپاره بهرنۍ IP پته چمتو کوي سرور د کلستر څخه بهر.
    Kubernetes یو جوړ شوی DNS سیسټم هم لري چې د DNS نومونه ورکوي (د مثال په توګه، helloserver.default.cluster.local) خدمتونه. د دې څخه مننه، په کلستر کې پوډونه په کلستر کې د نورو پوډونو سره په دایمي پته اړیکه نیسي. د DNS نوم د کلستر څخه بهر نشي کارول کیدی، لکه په کلاوډ شیل کې یا په کمپیوټر کې.

Kubernetes ښکاره کوي

کله چې تاسو له سرچینې څخه غوښتنلیک پرمخ وړئ ، تاسو لازمي کمانډ وکاروئ python3

server.py

لازمي یو فعل معنی لري: "دا وکړئ."

Kubernetes کاروي اعلاناتي ماډل. دا پدې مانا ده چې موږ Kubernetes ته په سمه توګه نه وایو چې څه وکړي، بلکه د مطلوب حالت بیانوي. د مثال په توګه، Kubernetes د اړتیا سره سم پوډونه پیل او ودروي ترڅو ډاډ ترلاسه کړي چې د سیسټم اصلي حالت د غوښتل شوي حالت سره سمون لري.

تاسو په منشور یا فایلونو کې مطلوب حالت په ګوته کوئ YAML. د YAML فایل د یو یا ډیرو Kubernetes شیانو لپاره مشخصات لري.

مثال د دې لپاره د YAML فایل لري سرور и بار. هر YAML فایل د پلي کولو څیز او کوبرنیټس خدمت مطلوب حالت مشخص کوي.

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

  • LoadBlancer: پیرودونکي د بار توازن کونکي IP پتې ته غوښتنې لیږي ، کوم چې دوامداره IP پته لري او د کلستر څخه بهر د لاسرسي وړ دی.
  • هدف پورټ: لکه څنګه چې تاسو په یاد ولرئ، ټیم 8080 افشا کړئ в ډکولر بندرونه ندي چمتو کړي. تاسو بندر چمتو کوئ 8080نو تاسو کولی شئ د کانټینر سره اړیکه ونیسئ سرور له کلستر بهر. زموږ په قضیه کې hellosvc.default.cluster.local:80 (لنډ نوم: سلامونه) د بندر سره مطابقت لري 8080 د پوډ 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) نوم په ساحه کې بدل کړئ انځور ستاسو د ډاکر عکس نوم ته.

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) نوم په ساحه کې بدل کړئ انځور ستاسو د ډاکر عکس نوم ته.

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 پتې ترلاسه کړئ سلامونه:

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) ته یوه غوښتنه واستوئ سلامونه: بدلول EXTERNAL_IP بهرنۍ IP پتې ته سلامونه.

curl http://EXTERNAL_IP

راځئ چې اسټیو ته ورسوو

تاسو دمخه یو غوښتنلیک GKE ته ځای په ځای کړی دی. بار کولی شي د Kubernetes DNS (hellosvc:80) ته د غوښتنې لیږلو لپاره سروراو تاسو کولی شئ غوښتنې واستوئ سرور د بهرني IP پتې لخوا. که څه هم Kubernetes ډیری ځانګړتیاوې لري، د خدماتو په اړه ځینې معلومات شتون لري:

  • خدمات څنګه متقابل عمل کوي؟ د خدماتو ترمنځ اړیکې څه دي؟ د خدماتو تر مینځ ترافیک څنګه تیریږي؟ ایا تاسو پدې خبر یاست بار ته غوښتنې لیږي سرور، مګر تصور وکړئ چې تاسو د غوښتنلیک په اړه هیڅ نه پوهیږئ. د دې پوښتنو ځوابونو لپاره، راځئ چې په GKE کې د چلولو پوډونو لیست وګورو.
  • میټریکونه. څونه وخت سرور راتلونکی غوښتنې ته ځواب ووایی؟ په هره ثانیه کې څومره غوښتنې د سرور لخوا ترلاسه کیږي؟ ایا دا د خطا پیغامونه ورکوي؟
  • امنیتي معلومات. تر منځ ترافیک بار и سرور یوازې تیریږي HTTP یا له خوا mTLS?

Istio دې ټولو پوښتنو ته ځوابونه ورکوي. د دې کولو لپاره، اسټیو د سایډ کار پراکسي ځای په ځای کوي استازي په هر پوډ کې. د استازي پراکسي د غوښتنلیک کانټینرونو ته ټول راتلوونکي او وتلو ترافیک مخه نیسي. دا پدې مانا ده چې سرور и بار د sidecar پراکسي استازي له لارې ترلاسه کړئ، او ټول ټرافیک له دې څخه بار к سرور د سفیر پراکسي له لارې تیریږي.

د سفیر پراکسي ترمنځ اړیکې د خدماتو میش جوړوي. د خدماتو میش جوړښت د کوبرنیټس په سر کې د کنټرول پرت چمتو کوي.

د اسټیو لپاره غوښتنلیک چمتو کول

څرنګه چې د انوی پراکسي په خپلو کانټینرونو کې چلیږي، اسټیو د GKE کلستر په سر کې نصب کیدی شي پرته له دې چې د غوښتنلیک کوډ کې تقریبا هیڅ بدلون نه وي. مګر تاسو یو څه کار کړی ترڅو ستاسو غوښتنلیک د Istio لخوا اداره کولو لپاره چمتو شي:

  • د ټولو کانتینرونو لپاره خدمتونه. ګمارنې ته سرور и بار د Kubernetes خدمت پورې تړلی. حتی بار، کوم چې راتلونکی غوښتنې نه ترلاسه کوي، یو خدمت شتون لري.
  • په خدماتو کې بندرونه باید نومونه ولري. که څه هم د خدماتو بندرونه په GKE کې بې نوم پریښودل کیدی شي، Istio تاسو ته اړتیا لري چې مشخص کړئ د بندر نوم د هغه د پروتوکول سره سم. په YAML کې د دې لپاره پورټ فایل کړئ سرور ويل کيږي httpځکه چې سرور پروتوکول کاروي HTTP. که خدمت کارول gRPC، تاسو به د بندر نوم ورکړئ grpc.
  • ګمارنې بیرغ دی. له همدې امله، تاسو کولی شئ د اسټیو د ټرافیک مدیریت ځانګړتیاوې وکاروئ، لکه د ورته خدماتو نسخو ترمنځ ټرافيکي ویشل.

د اسټیو نصب کول

د اسټیو نصبولو لپاره دوه لارې شتون لري. کولی شي د GKE توسیع کې اسټیو فعال کړئ او یا د اسټیو د خلاصې سرچینې نسخه نصب کړئ په کلستر کې. په GKE کې د اسټیو سره ، تاسو کولی شئ په اسانۍ سره د GKE کلستر ژوند دورې په اوږدو کې د اسټیو تاسیسات او اپ گریڈونه اداره کړئ. که تاسو د اسټیو وروستۍ نسخه یا ستاسو د اسټیو کنټرول پینل ترتیب باندې ډیر کنټرول غواړئ ، د GKE توسیع کې د اسټیو پرځای د خلاصې سرچینې نسخه نصب کړئ. د چلند په اړه پریکړه کولو لپاره، مقاله ولولئ ایا زه په GKE کې اسټیو ته اړتیا لرم؟.

یو اختیار غوره کړئ، مناسب لارښود بیاکتنه وکړئ، او په خپل کلستر کې د اسټیو نصبولو لپاره لارښوونې تعقیب کړئ. که تاسو غواړئ د خپل نوي ګمارل شوي غوښتنلیک سره اسټیو وکاروئ، د سایډ کار پلي کول فعال کړئ د نوم ځای لپاره تلواله.

انځور

د دې لپاره چې ستاسو د ګوګل کلاوډ پلیټ فارم حساب ته د هغه سرچینو لپاره چې تاسو پدې ټیوټوریل کې کارولی د چارج کیدو مخه ونیسئ ، یوځل چې تاسو اسټیو نصب کړئ او د نمونې غوښتنلیک سره لوبې وکړئ د کانټینر کلستر حذف کړئ. دا به د کلستر ټولې سرچینې لرې کړي، لکه د محاسبې مثالونه، ډیسکونه، او د شبکې سرچینې.

څه راتلونکو؟

سرچینه: www.habr.com

Add a comment