Istio යනු බෙදා හරින ලද යෙදුම් සම්බන්ධ කිරීම, සුරක්ෂිත කිරීම සහ අධීක්ෂණය කිරීම සඳහා පහසු මෙවලමකි. යෙදුම් කේතය ඇසුරුම් කිරීමට බහාලුම් සහ යෙදවීම සඳහා යැපීම් ඇතුළුව මෘදුකාංග පරිමාණයෙන් ක්රියාත්මක කිරීමට සහ කළමනාකරණය කිරීමට Istio විවිධ තාක්ෂණයන් භාවිතා කරයි, සහ එම බහාලුම් කළමනාකරණය කිරීමට Kubernetes. එබැවින්, Istio සමඟ වැඩ කිරීමට ඔබ මෙම තාක්ෂණයන් මත පදනම් වූ බහු සේවා සහිත යෙදුමක් ක්රියා කරන ආකාරය දැන සිටිය යුතුය තොරව ඉස්තියෝ. මෙම මෙවලම් සහ සංකල්ප ඔබට දැනටමත් හුරුපුරුදු නම්, මෙම නිබන්ධනය මඟ හැර කෙලින්ම කොටස වෙත යන්න
මෙය පියවරෙන් පියවර මාර්ගෝපදේශනයක් වන අතර, අපි ඔබට මෙම තාක්ෂණයන් පිළිබඳ මූලික අවබෝධයක් උදාහරණයක් හරහා ලබා දීම සඳහා මූල කේතයේ සිට GKE බහාලුම් දක්වා සම්පූර්ණ ක්රියාවලිය හරහා ගමන් කරමු. මෙම තාක්ෂණයන්හි බලය ඉස්ටියෝ උපයෝගී කරගන්නා ආකාරය ද ඔබට පෙනෙනු ඇත. ඔබ බහාලුම්, Kubernetes, සේවා දැල්, හෝ Istio ගැන කිසිවක් නොදන්නා බව මෙයින් උපකල්පනය කරයි.
කාර්යයන්
මෙම නිබන්ධනයේදී, ඔබ පහත සඳහන් කාර්යයන් සම්පූර්ණ කරනු ඇත:
- බහු සේවා සහිත සරල හෙලෝ වර්ල්ඩ් යෙදුමක් ඉගෙනීම.
- මූල කේතයෙන් යෙදුම ධාවනය කරන්න.
- යෙදුම බහාලුම්වල ඇසුරුම් කිරීම.
- Kubernetes පොකුරක් නිර්මාණය කිරීම.
- පොකුරකට බහාලුම් යෙදවීම.
ඔබ ආරම්භ කිරීමට පෙර
Kubernetes Engine API සබල කිරීමට උපදෙස් අනුගමනය කරන්න:
- යන්න
Kubernetes එන්ජින් පිටුව Google Cloud Platform කොන්සෝලය තුළ. - ව්යාපෘතියක් සාදන්න හෝ තෝරන්න.
- API සහ අදාළ සේවාවන් සබල වන තෙක් රැඳී සිටින්න. මෙය මිනිත්තු කිහිපයක් ගත විය හැක.
- ඔබගේ Google Cloud Platform ව්යාපෘතිය සඳහා බිල්පත් සකස් කර ඇති බව සහතික කර ගන්න.
බිල්පත් සබල කරන්නේ කෙසේදැයි ඉගෙන ගන්න .
මෙම නිබන්ධනයේදී, ඔබට අථත්ය යන්ත්රය සකස් කරන Cloud Shell භාවිතා කළ හැක
විකල්ප A: Cloud Shell භාවිතා කිරීම
Cloud Shell භාවිතා කිරීමේ ප්රතිලාභ:
- Python 2 සහ Python 3 සංවර්ධන පරිසරයන් (ඇතුළුව virtualenv) සම්පූර්ණයෙන්ම වින්යාස කර ඇත.
- විධාන රේඛා මෙවලම් gCloud, ඩෝකර්, යන්න и kubectl, අපි භාවිතා කරන ඒවා දැනටමත් ස්ථාපනය කර ඇත.
- ඔබට තෝරා ගැනීමට කිහිපයක් තිබේ
පෙළ සංස්කාරකවරුන් :කේත සංස්කාරකය , Cloud Shell කවුළුවේ ඉහළින් ඇති සංස්කරණ නිරූපකය සමඟ විවෘත වේ.- Cloud Shell හි විධාන රේඛාවෙන් විවෘත වන Emacs, Vim හෝ Nano.
භාවිතා කිරීමට
- GCP කොන්සෝලය වෙත යන්න.
- මාධ්ය Cloud Shell සක්රිය කරන්න (ක්ලවුඩ් ෂෙල් සක්රිය කරන්න) GCP කොන්සෝල කවුළුවේ මුදුනේ.
පහළ කොටසෙහි
විකල්ප B: විධාන රේඛා මෙවලම් දේශීයව භාවිතා කිරීම
ඔබ Linux හෝ macOS ධාවනය වන පරිගණකයක වැඩ කරන්නේ නම්, ඔබට පහත සංරචක වින්යාස කර ස්ථාපනය කිරීමට අවශ්ය වනු ඇත:
-
අභිරුචිකරණය කරන්න
Python 3 සහ Python 2 සංවර්ධන පරිසරය . -
Cloud SDK ස්ථාපනය කරන්න විධාන රේඛා මෙවලම සමඟ gCloud. -
සකසන්න kubectl - සමඟ වැඩ කිරීම සඳහා විධාන රේඛා මෙවලම
කුබර්නෙට්ස් .gcloud components install kubectl
-
සකසන්න
Docker Community Edition (CE) . ඔබ විධාන රේඛා මෙවලම භාවිතා කරනු ඇත ඩෝකර්නියැදි යෙදුම සඳහා බහාලුම් රූප නිර්මාණය කිරීමට. -
මෙවලම ස්ථාපනය කරන්න
Git අනුවාද පාලනය GitHub වෙතින් නියැදි යෙදුම ලබා ගැනීමට.
සාම්පල කේතය බාගන්න
-
මූලාශ්ර කේතය බාගත කරන්න helloserver:
git clone https://github.com/GoogleCloudPlatform/istio-samples
-
උදාහරණ කේත නාමාවලිය වෙත යන්න:
cd istio-samples/sample-apps/helloserver
බහු සේවා සහිත යෙදුමක් ගවේෂණය කිරීම
නියැදි යෙදුම Python හි ලියා ඇති අතර එය භාවිතා කරමින් අන්තර්ක්රියා කරන සංරචක දෙකකින් සමන්විත වේ
- සේවාදායකය: එක් අන්ත ලක්ෂ්යයක් සහිත සරල සේවාදායකය ලබා ගන්න, /, එය කොන්සෝලයට "හෙලෝ වර්ල්ඩ්" මුද්රණය කරයි.
- loadgen: ගමනාගමනය යවන ස්ක්රිප්ට් සේවාදායකය, තත්පරයකට වින්යාසගත කළ හැකි ඉල්ලීම් සංඛ්යාවක් සමඟ.
මූල කේතයෙන් යෙදුමක් ධාවනය කිරීම
නියැදි යෙදුම ගවේෂණය කිරීමට, එය 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
බහාලුම් සේවාදායකය
-
උදාහරණය පිහිටා ඇති නාමාවලිය වෙත යන්න සේවාදායකය:
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) උදාහරණය පිහිටා ඇති නාමාවලිය වෙත යන්න 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 පොකුරක් නිර්මාණය කිරීම:
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. උදාහරණයක් ලෙස, පහත විධානය මඟින් නෝඩ් වල තත්ත්වය සොයා ගත හැක:
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 වේදිකාවල, 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 භාවිතා කරයි
ඔබ මැනිෆෙස්ටයේ හෝ ගොනුවල අපේක්ෂිත තත්ත්වය සඳහන් කරයි
උදාහරණයක් සඳහා 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 ?
ඉස්තියෝ මේ හැම ප්රශ්නයකටම උත්තර දෙනවා. මෙය සිදු කිරීම සඳහා, ඉස්ටියෝ සයිඩ්කාර් ප්රොක්සියක් තබයි
එන්වෝයි ප්රොක්සි අතර සම්බන්ධතා සේවා දැලක් සාදයි. සේවා දැල් ගෘහ නිර්මාණ ශිල්පය Kubernetes මුදුනේ පාලන ස්ථරයක් සපයයි.
එන්වෝයි ප්රොක්සි ඔවුන්ගේම බහාලුම්වල ධාවනය වන බැවින්, යෙදුම් කේතයට කිසිදු වෙනසක් නොමැතිව GKE පොකුරක් මත Istio ස්ථාපනය කළ හැකිය. නමුත් ඔබ ඔබේ යෙදුම Istio විසින් කළමනාකරණය කිරීමට සූදානම් කිරීමට යම් කාර්යයක් කර ඇත:
- සියලුම බහාලුම් සඳහා සේවා. යෙදවීම් වලට සේවාදායකය и loadgen Kubernetes සේවයට බැඳී ඇත. පවා loadgen, එන ඉල්ලීම් නොලැබෙන, සේවාවක් ඇත.
- සේවාවන්හි වරායන්ට නම් තිබිය යුතුය. GKE හි සේවා වරායන් නම් නොකළ හැකි වුවද, Istio හට ඔබ විසින් නියම කිරීමට අවශ්ය වේ
වරායේ නම ඔහුගේ ප්රොටෝකෝලය අනුව. YAML ගොනුවේ වරාය සඳහා සේවාදායකය කැඳවනු ලැබේ httpමන්ද සේවාදායකය ප්රොටෝකෝලය භාවිතා කරයි HTTP. නම් සේවාව භාවිතා කරන ලදී gRPC, ඔබ වරාය නම් කරනු ඇත grpc. - යෙදවීම් සලකුණු කර ඇත. එමනිසා, ඔබට එකම සේවාවේ අනුවාද අතර ගමනාගමනය බෙදීම වැනි Istio හි රථවාහන කළමනාකරණ විශේෂාංග භාවිතා කළ හැක.
Istio ස්ථාපනය කිරීම
Istio ස්ථාපනය කිරීමට ක්රම දෙකක් තිබේ. පුළුවන්
විකල්පයක් තෝරන්න, සුදුසු මාර්ගෝපදේශය සමාලෝචනය කරන්න, සහ ඔබේ පොකුරේ Istio ස්ථාපනය කිරීමට උපදෙස් අනුගමනය කරන්න. ඔබට ඔබගේ අලුතින් යොදවා ඇති යෙදුම සමඟ Istio භාවිතා කිරීමට අවශ්ය නම්,
පිරිසිදු කිරීම
ඔබ මෙම නිබන්ධනයේ භාවිතා කළ සම්පත් සඳහා ඔබගේ Google Cloud Platform ගිණුමට අයකිරීම වැලැක්වීමට, ඔබ Istio ස්ථාපනය කර නියැදි යෙදුම සමඟ ක්රීඩා කළ පසු බහාලුම් පොකුර මකන්න. මෙය ගණනය කිරීමේ අවස්ථා, තැටි සහ ජාල සම්පත් වැනි සියලුම පොකුරු සම්පත් ඉවත් කරනු ඇත.
ඊළඟට කුමක්ද?
-
පහත තාක්ෂණයන් ගවේෂණය කරන්න:
-
පහත මෙවලම් ගවේෂණය කරන්න:
-
Kubernetes සංකල්ප ඉගෙන ගන්න:
මූලාශ්රය: www.habr.com