Istio සඳහා අයදුම්පතක් සකස් කිරීම

Istio සඳහා අයදුම්පතක් සකස් කිරීම

Istio යනු බෙදා හරින ලද යෙදුම් සම්බන්ධ කිරීම, සුරක්ෂිත කිරීම සහ අධීක්ෂණය කිරීම සඳහා පහසු මෙවලමකි. යෙදුම් කේතය ඇසුරුම් කිරීමට බහාලුම් සහ යෙදවීම සඳහා යැපීම් ඇතුළුව මෘදුකාංග පරිමාණයෙන් ක්‍රියාත්මක කිරීමට සහ කළමනාකරණය කිරීමට Istio විවිධ තාක්ෂණයන් භාවිතා කරයි, සහ එම බහාලුම් කළමනාකරණය කිරීමට Kubernetes. එබැවින්, Istio සමඟ වැඩ කිරීමට ඔබ මෙම තාක්ෂණයන් මත පදනම් වූ බහු සේවා සහිත යෙදුමක් ක්‍රියා කරන ආකාරය දැන සිටිය යුතුය තොරව ඉස්තියෝ. මෙම මෙවලම් සහ සංකල්ප ඔබට දැනටමත් හුරුපුරුදු නම්, මෙම නිබන්ධනය මඟ හැර කෙලින්ම කොටස වෙත යන්න Google Kubernetes Engine (GKE) හි Istio ස්ථාපනය කිරීම හෝ දිගුවක් ස්ථාපනය කිරීම GKE මත ඉස්තියෝ.

මෙය පියවරෙන් පියවර මාර්ගෝපදේශනයක් වන අතර, අපි ඔබට මෙම තාක්ෂණයන් පිළිබඳ මූලික අවබෝධයක් උදාහරණයක් හරහා ලබා දීම සඳහා මූල කේතයේ සිට GKE බහාලුම් දක්වා සම්පූර්ණ ක්‍රියාවලිය හරහා ගමන් කරමු. මෙම තාක්ෂණයන්හි බලය ඉස්ටියෝ උපයෝගී කරගන්නා ආකාරය ද ඔබට පෙනෙනු ඇත. ඔබ බහාලුම්, Kubernetes, සේවා දැල්, හෝ Istio ගැන කිසිවක් නොදන්නා බව මෙයින් උපකල්පනය කරයි.

කාර්යයන්

මෙම නිබන්ධනයේදී, ඔබ පහත සඳහන් කාර්යයන් සම්පූර්ණ කරනු ඇත:

  1. බහු සේවා සහිත සරල හෙලෝ වර්ල්ඩ් යෙදුමක් ඉගෙනීම.
  2. මූල කේතයෙන් යෙදුම ධාවනය කරන්න.
  3. යෙදුම බහාලුම්වල ඇසුරුම් කිරීම.
  4. Kubernetes පොකුරක් නිර්මාණය කිරීම.
  5. පොකුරකට බහාලුම් යෙදවීම.

ඔබ ආරම්භ කිරීමට පෙර

Kubernetes Engine API සබල කිරීමට උපදෙස් අනුගමනය කරන්න:

  1. යන්න Kubernetes එන්ජින් පිටුව Google Cloud Platform කොන්සෝලය තුළ.
  2. ව්‍යාපෘතියක් සාදන්න හෝ තෝරන්න.
  3. API සහ අදාළ සේවාවන් සබල වන තෙක් රැඳී සිටින්න. මෙය මිනිත්තු කිහිපයක් ගත විය හැක.
  4. ඔබගේ Google Cloud Platform ව්‍යාපෘතිය සඳහා බිල්පත් සකස් කර ඇති බව සහතික කර ගන්න. බිල්පත් සබල කරන්නේ කෙසේදැයි ඉගෙන ගන්න.

මෙම නිබන්ධනයේදී, ඔබට අථත්‍ය යන්ත්‍රය සකස් කරන Cloud Shell භාවිතා කළ හැක g1-Google Compute Engine හි කුඩා Debian මත පදනම් වූ Linux, හෝ Linux හෝ macOS පරිගණකයක් සමඟ.

විකල්ප A: Cloud Shell භාවිතා කිරීම

Cloud Shell භාවිතා කිරීමේ ප්‍රතිලාභ:

  • Python 2 සහ Python 3 සංවර්ධන පරිසරයන් (ඇතුළුව virtualenv) සම්පූර්ණයෙන්ම වින්‍යාස කර ඇත.
  • විධාන රේඛා මෙවලම් gCloud, ඩෝකර්, යන්න и kubectl, අපි භාවිතා කරන ඒවා දැනටමත් ස්ථාපනය කර ඇත.
  • ඔබට තෝරා ගැනීමට කිහිපයක් තිබේ පෙළ සංස්කාරකවරුන්:
    1. කේත සංස්කාරකය, Cloud Shell කවුළුවේ ඉහළින් ඇති සංස්කරණ නිරූපකය සමඟ විවෘත වේ.
    2. Cloud Shell හි විධාන රේඛාවෙන් විවෘත වන Emacs, Vim හෝ Nano.

භාවිතා කිරීමට වලාකුළු කවචය:

  1. GCP කොන්සෝලය වෙත යන්න.
  2. මාධ්ය Cloud Shell සක්රිය කරන්න (ක්ලවුඩ් ෂෙල් සක්‍රිය කරන්න) GCP කොන්සෝල කවුළුවේ මුදුනේ.

Istio සඳහා අයදුම්පතක් සකස් කිරීම

පහළ කොටසෙහි GCP කොන්සෝලය විධාන රේඛාවක් සහිත Cloud Shell සැසියක් නව කවුළුවකින් විවෘත වේ.

Istio සඳහා අයදුම්පතක් සකස් කිරීම

විකල්ප B: විධාන රේඛා මෙවලම් දේශීයව භාවිතා කිරීම

ඔබ Linux හෝ macOS ධාවනය වන පරිගණකයක වැඩ කරන්නේ නම්, ඔබට පහත සංරචක වින්‍යාස කර ස්ථාපනය කිරීමට අවශ්‍ය වනු ඇත:

  1. අභිරුචිකරණය කරන්න Python 3 සහ Python 2 සංවර්ධන පරිසරය.

  2. Cloud SDK ස්ථාපනය කරන්න විධාන රේඛා මෙවලම සමඟ gCloud.

  3. සකසන්න kubectl - සමඟ වැඩ කිරීම සඳහා විධාන රේඛා මෙවලම කුබර්නෙට්ස්.

    gcloud components install kubectl

  4. සකසන්න Docker Community Edition (CE). ඔබ විධාන රේඛා මෙවලම භාවිතා කරනු ඇත ඩෝකර්නියැදි යෙදුම සඳහා බහාලුම් රූප නිර්මාණය කිරීමට.

  5. මෙවලම ස්ථාපනය කරන්න Git අනුවාද පාලනයGitHub වෙතින් නියැදි යෙදුම ලබා ගැනීමට.

සාම්පල කේතය බාගන්න

  1. මූලාශ්ර කේතය බාගත කරන්න helloserver:

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

  2. උදාහරණ කේත නාමාවලිය වෙත යන්න:

    cd istio-samples/sample-apps/helloserver

බහු සේවා සහිත යෙදුමක් ගවේෂණය කිරීම

නියැදි යෙදුම Python හි ලියා ඇති අතර එය භාවිතා කරමින් අන්තර්ක්‍රියා කරන සංරචක දෙකකින් සමන්විත වේ රෙස්ට්:

  • සේවාදායකය: එක් අන්ත ලක්ෂ්‍යයක් සහිත සරල සේවාදායකය ලබා ගන්න, /, එය කොන්සෝලයට "හෙලෝ වර්ල්ඩ්" මුද්‍රණය කරයි.
  • loadgen: ගමනාගමනය යවන ස්ක්‍රිප්ට් සේවාදායකය, තත්පරයකට වින්‍යාසගත කළ හැකි ඉල්ලීම් සංඛ්‍යාවක් සමඟ.

Istio සඳහා අයදුම්පතක් සකස් කිරීම

මූල කේතයෙන් යෙදුමක් ධාවනය කිරීම

නියැදි යෙදුම ගවේෂණය කිරීමට, එය Cloud Shell හෝ ඔබේ පරිගණකයේ ධාවනය කරන්න.
1) නාමාවලියෙහි istio-නියැදි/නියැදි-යෙදුම්/helloserver දුවනවා සේවාදායකය:

python3 server/server.py

ආරම්භයේදී සේවාදායකය පහත දැක්වෙන පරිදි දර්ශනය වේ:

INFO:root:Starting server...

2) ඉල්ලීම් යැවීමට වෙනත් පර්යන්ත කවුළුවක් විවෘත කරන්න සේවාදායකය. ඔබ Cloud Shell භාවිතා කරන්නේ නම්, වෙනත් සැසියක් විවෘත කිරීමට add අයිකනය ක්ලික් කරන්න.
3) ඉල්ලීමක් යවන්න සේවාදායකය:

curl http://localhost:8080

සේවාදායකය පිළිතුරු:

Hello World!

4) ඔබ නියැදි කේතය බාගත කළ නාමාවලියෙන්, අඩංගු බහලුම වෙත යන්න loadgen:

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) සඳහා අවශ්‍යතා සකසන්න loadgen:

pip3 install -r requirements.txt

9) දියත් කිරීම loadgen:

python3 loadgen.py

ආරම්භයේදී loadgen පහත පණිවිඩය වැනි දෙයක් පෙන්වයි:

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) නැවැත්වීමට loadgen и සේවාදායකය, ඇතුල් කරන්න Ctrl-c සෑම පර්යන්ත කවුළුවකම.
11) ටර්මිනල් කවුළුව තුළ loadgen අතථ්‍ය පරිසරය අක්‍රිය කරන්න:

deactivate

බහාලුම්වල යෙදුමක් ඇසුරුම් කිරීම

GKE හි යෙදුම ධාවනය කිරීමට, ඔබ උදාහරණ යෙදුම ඇසුරුම් කළ යුතුය - සේවාදායකය и loadgen - හිදී බහාලුම්. බහාලුමක් යනු යෙදුමක් එහි පරිසරයෙන් හුදකලා කිරීම සඳහා ඇසුරුම් කිරීමේ ක්‍රමයකි.

යෙදුමක් කන්ටේනරයකට ඇසුරුම් කිරීමට, ඔබට අවශ්‍ය වේ ඩොකර්ෆයිල්. ඩොකර්ෆයිල් යෙදුමේ ප්‍රභව කේතය සහ එහි පරායත්තතා ගොඩනැගීම සඳහා විධාන නිර්වචනය කරන පෙළ ගොනුවකි ඩොකර් රූපය. ගොඩනඟා ගත් පසු, ඔබ ඩොකර් හබ් හෝ වැනි බහාලුම් රෙජිස්ට්‍රියකට රූපය උඩුගත කරයි බහාලුම් රෙජිස්ට්රි.

උදාහරණය දැනටමත් ඇත ඩොකර්ෆයිල් සඳහා සේවාදායකය и loadgen පින්තූර එකතු කිරීමට අවශ්‍ය සියලුම විධාන සමඟ. පහත - ඩොකර්ෆයිල් සඳහා සේවාදායකය:

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-slim පදනම ලෙස නවතම දේ භාවිතා කරන ලෙස ඩොකර්ට පවසයි පයිතන් 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 ඔබ එය ගොඩනඟන විට ඩොකර් රූපය ටැග් කර එය පුද්ගලික බහාලුම් රෙජිස්ට්‍රියකට තල්ලු කරයි.

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) උදාහරණය පිහිටා ඇති නාමාවලිය වෙත යන්න loadgen:

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) විධාන රේඛා මෙවලමෙහි අක්තපත්‍ර ලබා දෙන්න kubectlපොකුර කළමනාකරණය කිරීමට එය භාවිතා කිරීමට:

gcloud container clusters get-credentials istioready

3) දැන් ඔබට Kubernetes සමඟ සන්නිවේදනය කළ හැකිය 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 හි යෙදුමක් පෙන්වයි:

Istio සඳහා අයදුම්පතක් සකස් කිරීම

ඔබ GKE හි බහාලුම් යෙදවීමට පෙර, Kubernetes හි ප්රධාන සංකල්ප ඉගෙන ගන්න. ඔබට වැඩිදුර ඉගෙන ගැනීමට අවශ්‍ය නම් අවසානයේ සබැඳි ඇත.

  • නෝඩ් සහ පොකුරු. GKE හි, නෝඩයක් යනු අතථ්‍ය යන්ත්‍රයකි. අනෙකුත් Kubernetes වේදිකාවල, node එකක් පරිගණකයක් හෝ අතථ්‍ය යන්ත්‍රයක් විය හැක. පොකුරක් යනු ඔබ බහාලන යෙදුමක් යොදවන තනි ඒකකයක් ලෙස සැලකිය හැකි නෝඩ් එකතුවකි.
  • කරල්. Kubernetes හි, බහාලුම් කරල්වල ධාවනය වේ. Kubernetes හි Pod යනු වෙන් කළ නොහැකි ඒකකයකි. Pod එකක් බහාලුම් එකක් හෝ කිහිපයක් රඳවා තබා ගනී. ඔබ සේවාදායක බහාලුම් යෙදවීම සහ loadgen වෙනම කරල් වල. පෝඩ් එකක බහාලුම් කිහිපයක් ඇති විට (උදාහරණයක් ලෙස, යෙදුම් සේවාදායකයක් සහ ප්රොක්සි සේවාදායකය), බහාලුම් තනි ආයතනයක් ලෙස කළමනාකරණය කර පොඩ් සම්පත් බෙදා ගනී.
  • යෙදවීම්. Kubernetes හි, යෙදවීම යනු සමාන කරල් එකතුවක් වන වස්තුවකි. යෙදවීම පොකුරු නෝඩ් හරහා බෙදා හරින ලද කරල්වල බහු අනුරූ දියත් කරයි. යෙදවීම අසාර්ථක වූ හෝ ප්‍රතිචාර නොදක්වන කරල් ස්වයංක්‍රීයව ප්‍රතිස්ථාපනය කරයි.
  • කුබර්නෙට්ස් සේවාව. GKE හි යෙදුම් කේතය ධාවනය කරන විට, අතර සම්බන්ධතාවය loadgen и සේවාදායකය. ඔබ ක්ලවුඩ් ෂෙල් අථත්‍ය යන්ත්‍රයක හෝ ඩෙස්ක්ටොප් එකක සේවා ආරම්භ කළ විට, ඔබ වෙත ඉල්ලීම් යැවීය සේවාදායකය දී localhost: 8080. GKE වෙත යෙදවූ පසු, ලබා ගත හැකි නෝඩ් මත කරල් ක්‍රියාත්මක වේ. පෙරනිමියෙන්, පොඩ් එක ක්‍රියාත්මක වන්නේ කුමන නෝඩය මතද යන්න ඔබට පාලනයක් නැත, එබැවින් ඔබට කරල් ස්ථිර IP ලිපින නැත.
    සඳහා IP ලිපිනයක් ලබා ගැනීමට සේවාදායකය, ඔබ කරල් මුදුනේ ජාල සාරාංශයක් අර්ථ දැක්විය යුතුය. ඒක තමයි ඒක කුබර්නෙට්ස් සේවාව. Kubernetes සේවාව කරල් කට්ටලයක් සඳහා ස්ථීර අන්ත ලක්ෂ්‍යයක් සපයයි. කිහිපයක් ඇත සේවා වර්ග. සේවාදායකය භාවිතා කරයි LoadBalancer, සම්බන්ධ වීමට බාහිර IP ලිපිනයක් සපයයි සේවාදායකය පොකුරෙන් පිටත සිට.
    Kubernetes සතුව DNS නම් පවරන DNS පද්ධතියක් ද ඇත (උදාහරණයක් ලෙස, helloserver.default.cluster.local) සේවා. මෙයට ස්තූතිවන්ත වන්නට, පොකුරේ ඇති කරල් පොකුරේ අනෙකුත් කරල් සමඟ ස්ථිර ලිපිනයකින් සන්නිවේදනය කරයි. Cloud Shell හෝ පරිගණකයක වැනි DNS නම පොකුරෙන් පිටත භාවිතා කළ නොහැක.

කුබර්නෙටස් ප්‍රකාශ කරයි

ඔබ ප්‍රභවයෙන් යෙදුම ධාවනය කළ විට, ඔබ අත්‍යවශ්‍ය විධානය භාවිතා කළේය පයිතන්එන්එන්එක්ස්

server.py

Imperative යන්නෙන් ක්‍රියා පදයක් අදහස් වේ: "මෙය කරන්න."

Kubernetes භාවිතා කරයි ප්රකාශන ආකෘතිය. මෙයින් අදහස් කරන්නේ අපි කුබර්නෙටස්ට කුමක් කළ යුතු දැයි හරියටම නොකියන නමුත් අපේක්ෂිත තත්වය විස්තර කරන බවයි. උදාහරණයක් ලෙස, පද්ධතියේ සැබෑ තත්වය අපේක්ෂිත තත්වයට ගැලපෙන බව සහතික කිරීම සඳහා Kubernetes අවශ්ය පරිදි කරල් ආරම්භ කර නවත්වයි.

ඔබ මැනිෆෙස්ටයේ හෝ ගොනුවල අපේක්ෂිත තත්ත්වය සඳහන් කරයි යම්ල්. YAML ගොනුවක Kubernetes වස්තූන් එකක් හෝ කිහිපයක් සඳහා පිරිවිතර අඩංගු වේ.

උදාහරණයක් සඳහා YAML ගොනුවක් අඩංගු වේ සේවාදායකය и loadgen. සෑම 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.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 ලිපිනයක් ඇති සහ පොකුරෙන් පිටත සිට ප්‍රවේශ විය හැකි, load balancer හි IP ලිපිනය වෙත සේවාලාභීන් ඉල්ලීම් යවයි.
  • ඉලක්ක වරාය: ඔබට මතක ඇති පරිදි, කණ්ඩායම EXPOSE 8080 в ඩොකර්ෆයිල් වරායවල් දුන්නේ නැහැ. ඔබ වරාය සපයන්න 8080එවිට ඔබට කන්ටේනරය සම්බන්ධ කර ගත හැකිය සේවාදායකය පොකුරෙන් පිටත. අපේ නඩුවේ hellosvc.default.cluster.local:80 (කෙටි නම: hellosvc) වරායට අනුරූප වේ 8080 Pod IP ලිපින helloserver.
  • වරාය: පොකුරේ අනෙකුත් සේවාවන් ඉල්ලීම් එවන වරාය අංකය මෙයයි.

loadgen.yaml

යෙදවීමේ වස්තුව loadgen.yaml වගේ පේනවා server.yaml. වෙනස වන්නේ යෙදවුම් වස්තුවේ කොටසක් අඩංගු වීමයි දළ වශයෙන්. එය අවශ්‍ය පරිසර විචල්‍යයන් නිර්වචනය කරයි loadgen සහ මූලාශ්‍රයෙන් යෙදුම ක්‍රියාත්මක කරන විට ඔබ ස්ථාපනය කර ඇත.

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

ටයිම්ස් loadgen ක්ෂේත්‍රය සඳහා ලැබෙන ඉල්ලීම් පිළිගන්නේ නැත වර්ගය දක්වා ඇත 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) බහලුම වෙත යන්න loadgen:

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) පොඩ් එකෙන් යෙදුම් ලොග් උපුටා ගන්න loadgen. ආදේශ කරන්න POD_ID පෙර පිළිතුරෙන් හඳුනාගැනීම සඳහා.

kubectl logs loadgenerator-POD_ID

13) බාහිර IP ලිපින ලබා ගන්න hellosvc:

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) ඉල්ලීමක් යවන්න hellosvc: ආදේශ කරන්න EXTERNAL_IP බාහිර IP ලිපිනය වෙත hellosvc.

curl http://EXTERNAL_IP

අපි ඉස්තියෝ ගනිමු

ඔබට දැනටමත් GKE වෙත යෙදුමක් යොදවා ඇත. loadgen Kubernetes DNS භාවිතා කළ හැක (hellosvc:80) වෙත ඉල්ලීම් යැවීමට සේවාදායකයසහ ඔබට ඉල්ලීම් යැවිය හැක සේවාදායකය බාහිර IP ලිපිනය මගින්. Kubernetes හි බොහෝ විශේෂාංග ඇතත්, සේවාවන් පිළිබඳ සමහර තොරතුරු අස්ථානගත වී ඇත:

  • සේවා අන්තර්ක්‍රියා කරන්නේ කෙසේද? සේවා අතර සම්බන්ධතා මොනවාද? සේවා අතර ගමනාගමනය ගලා යන්නේ කෙසේද? ඔබ ඒ බව දන්නවාද loadgen වෙත ඉල්ලීම් යවයි සේවාදායකය, නමුත් ඔබ යෙදුම ගැන කිසිවක් නොදන්නා බව සිතන්න. මෙම ප්රශ්නවලට පිළිතුරු සැපයීම සඳහා, GKE හි ධාවනය වන කරල් ලැයිස්තුව දෙස බලමු.
  • මෙට්රික්ස්. කොපමණ කාලයක් ද සේවාදායකය එන ඉල්ලීමකට ප්‍රතිචාර දක්වයිද? සේවාදායකයට තත්පරයකට ඉල්ලීම් කීයක් ලැබේද? එය දෝෂ පණිවිඩ ලබා දෙනවාද?
  • ආරක්ෂක තොරතුරු. අතර ගමනාගමනය loadgen и සේවාදායකය හුදෙක් හරහා ගමන් කරයි HTTP හෝ විසින් mTLS?

ඉස්තියෝ මේ හැම ප්‍රශ්නයකටම උත්තර දෙනවා. මෙය සිදු කිරීම සඳහා, ඉස්ටියෝ සයිඩ්කාර් ප්‍රොක්සියක් තබයි නියෝජිතයා එක් එක් කරල් තුළ. එන්වෝයි ප්‍රොක්සිය යෙදුම් බහාලුම් වෙත පැමිණෙන සහ පිටතට යන ගමනාගමනයට බාධා කරයි. එහි තේරුම එයයි සේවාදායකය и loadgen සයිඩ්කාර් ප්‍රොක්සි එන්වෝයි හරහා ලබා ගන්න, සහ සියලුම ගමනාගමනය loadgen к සේවාදායකය එන්වෝයි ප්‍රොක්සි හරහා යයි.

එන්වෝයි ප්‍රොක්සි අතර සම්බන්ධතා සේවා දැලක් සාදයි. සේවා දැල් ගෘහ නිර්මාණ ශිල්පය Kubernetes මුදුනේ පාලන ස්ථරයක් සපයයි.

Istio සඳහා අයදුම්පතක් සකස් කිරීම

එන්වෝයි ප්‍රොක්සි ඔවුන්ගේම බහාලුම්වල ධාවනය වන බැවින්, යෙදුම් කේතයට කිසිදු වෙනසක් නොමැතිව GKE පොකුරක් මත Istio ස්ථාපනය කළ හැකිය. නමුත් ඔබ ඔබේ යෙදුම Istio විසින් කළමනාකරණය කිරීමට සූදානම් කිරීමට යම් කාර්යයක් කර ඇත:

  • සියලුම බහාලුම් සඳහා සේවා. යෙදවීම් වලට සේවාදායකය и loadgen Kubernetes සේවයට බැඳී ඇත. පවා loadgen, එන ඉල්ලීම් නොලැබෙන, සේවාවක් ඇත.
  • සේවාවන්හි වරායන්ට නම් තිබිය යුතුය. GKE හි සේවා වරායන් නම් නොකළ හැකි වුවද, Istio හට ඔබ විසින් නියම කිරීමට අවශ්‍ය වේ වරායේ නම ඔහුගේ ප්රොටෝකෝලය අනුව. YAML ගොනුවේ වරාය සඳහා සේවාදායකය කැඳවනු ලැබේ httpමන්ද සේවාදායකය ප්‍රොටෝකෝලය භාවිතා කරයි HTTP. නම් සේවාව භාවිතා කරන ලදී gRPC, ඔබ වරාය නම් කරනු ඇත grpc.
  • යෙදවීම් සලකුණු කර ඇත. එමනිසා, ඔබට එකම සේවාවේ අනුවාද අතර ගමනාගමනය බෙදීම වැනි Istio හි රථවාහන කළමනාකරණ විශේෂාංග භාවිතා කළ හැක.

Istio ස්ථාපනය කිරීම

Istio ස්ථාපනය කිරීමට ක්රම දෙකක් තිබේ. පුළුවන් GKE දිගුව මත Istio සබල කරන්න හෝ Istio හි විවෘත මූලාශ්‍ර අනුවාදය ස්ථාපනය කරන්න පොකුර මත. GKE හි Istio සමඟින්, ඔබට GKE පොකුරු ජීවන චක්‍රය පුරා Istio ස්ථාපනයන් සහ වැඩිදියුණු කිරීම් පහසුවෙන් කළමනාකරණය කළ හැක. ඔබට Istio හි නවතම අනුවාදය හෝ ඔබේ Istio පාලන පැනල වින්‍යාසය මත වැඩි පාලනයක් අවශ්‍ය නම්, GKE දිගුවේ Istio වෙනුවට විවෘත මූලාශ්‍ර අනුවාදය ස්ථාපනය කරන්න. ප්රවේශය තීරණය කිරීම සඳහා, ලිපිය කියවන්න මට GKE මත Istio අවශ්‍යද?.

විකල්පයක් තෝරන්න, සුදුසු මාර්ගෝපදේශය සමාලෝචනය කරන්න, සහ ඔබේ පොකුරේ Istio ස්ථාපනය කිරීමට උපදෙස් අනුගමනය කරන්න. ඔබට ඔබගේ අලුතින් යොදවා ඇති යෙදුම සමඟ Istio භාවිතා කිරීමට අවශ්‍ය නම්, සයිඩ්කාර් ක්‍රියාත්මක කිරීම සක්‍රීය කරන්න නාම අවකාශය සඳහා පැහැර හැරීමකි.

පිරිසිදු කිරීම

ඔබ මෙම නිබන්ධනයේ භාවිතා කළ සම්පත් සඳහා ඔබගේ Google Cloud Platform ගිණුමට අයකිරීම වැලැක්වීමට, ඔබ Istio ස්ථාපනය කර නියැදි යෙදුම සමඟ ක්‍රීඩා කළ පසු බහාලුම් පොකුර මකන්න. මෙය ගණනය කිරීමේ අවස්ථා, තැටි සහ ජාල සම්පත් වැනි සියලුම පොකුරු සම්පත් ඉවත් කරනු ඇත.

ඊළඟට කුමක්ද?

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න