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

ජාත්‍යන්තර අභිරහස් මිනිසෙකු වන ඔස්ටින් පවර්ස් පැවසුවේ “අනතුර යනු මගේ මැද නමයි. නමුත් සුපිරි නියෝජිතයින් සහ බුද්ධි අංශ විසින් ඉහළ ගෞරවයට පාත්‍ර වන දෙය පරිගණක සේවා සඳහා කිසිසේත්ම සුදුසු නොවේ, එහිදී කම්මැලිකම අනතුරට වඩා බෙහෙවින් හොඳය.

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

සහ Istio, OpenShift සහ Kubernetes සමඟ එක්ව, ක්ෂුද්‍ර සේවා යෙදවීම සැබවින්ම නීරස සහ අනාවැකි කිව හැකි කරයි - එය විශිෂ්ටයි. අපි මේ ගැන සහ තවත් බොහෝ දේ ඉස්තියෝ කතා මාලාවේ සිව්වන සහ අවසාන පෝස්ට් එකෙන් කතා කරමු.

කම්මැලිකම නිවැරදි වූ විට

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

ඔබගේ මෘදුකාංගයේ නව අනුවාදයක් යෙදවීමේදී, අවදානම් අවම කිරීම සඳහා සියලු විකල්ප සලකා බැලීම වටී. සමාන්තරව ධාවනය කිරීම පරීක්ෂා කිරීම සඳහා ඉතා ප්රබල සහ ඔප්පු කරන ලද ක්රමයක් වන අතර, නිෂ්පාදන පද්ධතියට මැදිහත් නොවී මෙය සිදු කිරීම සඳහා "රහස් සේවාවක්" (ඔබේ ක්ෂුද්ර සේවාවේ සැඟවුණු අනුවාදයක්) භාවිතා කිරීමට Istio ඔබට ඉඩ සලසයි. මේ සඳහා විශේෂ යෙදුමක් පවා ඇත - “අඳුරු දියත් කිරීම”, එය “රථවාහන දර්පණය” සමාන ඔත්තු නාමයක් සහිත ශ්‍රිතයක් මඟින් සක්‍රීය වේ.

පෙර ඡේදයේ පළමු වාක්‍යයේ "නිදහස් කිරීම" වෙනුවට " යෙදවීම" යන යෙදුම භාවිතා කරන බව කරුණාවෙන් සලකන්න. ඔබට අවශ්‍ය පරිදි ඔබේ ක්ෂුද්‍ර සේවාව යෙදවීමට සහ ඇත්තෙන්ම භාවිතා කිරීමට ඔබට සැබවින්ම හැකි විය යුතුය. මෙම සේවාවට ගමනාගමනය ලබා ගැනීමට සහ සැකසීමට, ප්‍රතිඵල නිපදවීමට, සහ ලඝු-සටහන් වෙත ලිවීමට සහ අධීක්ෂණය කිරීමට හැකි විය යුතුය. නමුත් ඒ සමගම, මෙම සේවාවම නිෂ්පාදනයට මුදා හැරීමට අවශ්ය නොවේ. මෘදුකාංග යෙදවීම සහ මුදා හැරීම සැමවිටම එකම දෙයක් නොවේ. ඔබට අවශ්‍ය විටෙක යෙදවිය හැක, නමුත් ඔබ සූදානම් වූ විට පමණක් මුදා හරින්න.

කම්මැලිකම සංවිධානය කිරීම සිත්ගන්නා සුළුය

සියලුම HTTP ඉල්ලීම් ක්ෂුද්‍ර සේවා නිර්දේශය v1 වෙත යොමු කරන පහත Istio මාර්ගගත කිරීමේ රීතිය දෙස බලන්න (සියලු උදාහරණ උපුටා ගන්නා ලදී Istio Tutorial GitHub repo), සමගාමීව නිර්දේශ v2 microservice වෙත ඒවා පිළිබිඹු කරමින්:

Istio හි අඳුරු දියත් කිරීම: රහස් සේවා
ලේබලය කෙරෙහි අවධානය යොමු කරන්න mirror: තිරයේ පතුලේ - රථවාහන දර්පණය සකසන්නේ මෙයයි. ඔව්, එය ඉතා සරලයි!

මෙම රීතියේ ප්‍රතිඵලය වනුයේ ඔබේ නිෂ්පාදන පද්ධතිය (v1) පැමිණෙන ඉල්ලීම් දිගටම ක්‍රියාවට නංවනු ඇත, නමුත් ඉල්ලීම් අසමමුහුර්තව v2 වෙත පිළිබිඹු වේ, එනම් ඒවායේ සම්පූර්ණ අනුපිටපත් එහි යයි. මේ ආකාරයෙන්, ඔබට නිෂ්පාදන පද්ධතියේ ක්‍රියාකාරිත්වයට කිසිදු ආකාරයකින් මැදිහත් නොවී සැබෑ තත්වයන් තුළ - සැබෑ දත්ත සහ ගමනාගමනය මත - v2 පරීක්ෂා කළ හැකිය. මෙය පරීක්ෂණ සංවිධානය කිරීම නීරස කරයිද? ඔව් අනිවාර්යෙන්ම. නමුත් එය රසවත් ආකාරයෙන් සිදු කර ඇත.

අපි නාට්‍ය එකතු කරමු

එන ඉල්ලීම් දත්ත වෙනස් කිරීමට හේතු විය හැකි අවස්ථා සඳහා v2 කේතය තුළ සැපයීම අවශ්‍ය බව කරුණාවෙන් සලකන්න. ඉල්ලීම් පහසුවෙන් සහ විනිවිද පෙනෙන ලෙස පිළිබිඹු වේ, නමුත් පරීක්ෂණයේ සැකසුම් ක්‍රමය තෝරා ගැනීම ඔබට භාරයි - මෙය ටිකක් කනස්සල්ලට කරුණකි.

වැදගත් කරුණක් නැවත කියමු

රථවාහන දර්පණය සමඟ රහස් දියත් කිරීම (අඳුරු දියත් කිරීම / ඉල්ලීම දර්පණය) කේතයට කිසිදු ආකාරයකින් බල නොපාමින් සිදු කළ හැකිය.

සිතීමට ආහාර

ඉල්ලීම් පිළිබිඹු කරන ස්ථානය ඒවායින් සමහරක් v1 වෙත නොව v2 වෙත යවන්නේ නම් කුමක් කළ යුතුද? උදාහරණයක් ලෙස, සියලු ඉල්ලීම් වලින් සියයට එකක් හෝ යම් පරිශීලක කණ්ඩායමකින් පමණක් ඉල්ලීම්. ඉන්පසු, දැනටමත් v2 ක්‍රියා කරන ආකාරය දෙස බලා, ක්‍රමයෙන් සියලුම ඉල්ලීම් නව අනුවාදයට මාරු කරන්න. නැතහොත් අනෙක් අතට, v1 සමඟ යමක් වැරදී ගියහොත් සියල්ල v2 වෙත ආපසු දෙන්න. මම හිතන්නේ ඒකට කියන්නේ Canary Deployment කියලා. නැවත පතල් කැණීමට යයි, සහ එය රුසියානු සම්භවයක් නම්, එය බොහෝ විට සඳහනක් අඩංගු වනු ඇත බළලුන්), දැන් අපි මෙය වඩාත් විස්තරාත්මකව බලමු.

ඉස්ටියෝ හි කැනරි යෙදවීම: කොමිස් කිරීම සරල කිරීම

ප්රවේශමෙන් හා ක්රමයෙන්

Canary Deployment deployment ආකෘතියේ සාරය අතිශයින්ම සරල ය: ඔබ ඔබේ මෘදුකාංගයේ නව අනුවාදයක් දියත් කරන විට (අපගේ නඩුවේදී, microservice), ඔබ ප්‍රථමයෙන් එයට ප්‍රවේශය ලබා දෙන්නේ කුඩා පරිශීලකයින් පිරිසකටය. සෑම දෙයක්ම හොඳින් සිදුවුවහොත්, නව අනුවාදය ක්‍රියාත්මක වීමට පටන් ගන්නා තෙක් ඔබ මෙම කණ්ඩායම සෙමෙන් වැඩි කරයි, නැතහොත් - එය එසේ නොවේ නම් - අවසානයේ සියලුම පරිශීලකයින් එයට සංක්‍රමණය කරන්න. කල්පනාකාරීව සහ ක්‍රමානුකූලව නව අනුවාදයක් හඳුන්වා දීමෙන් සහ පරිශීලකයන් පාලනය කළ ආකාරයෙන් එයට මාරු කිරීමෙන්, ඔබට අවදානම් අවම කර ගැනීමට සහ ප්‍රතිපෝෂණ උපරිම කිරීමට හැකිය.

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

බ්රවුසරය පෙරීම

සරලම මාර්ගගත කිරීමේ නිර්ණායකයක් වන්නේ බ්‍රවුසරය මත පදනම් වූ යළි-යොමුවීම් ය. ඔබට v2 වෙත යාමට Safari බ්‍රව්සර් වෙතින් ඉල්ලීම් පමණක් අවශ්‍ය යැයි සිතමු. එය සිදු කරන ආකාරය මෙන්න:

Istio හි අඳුරු දියත් කිරීම: රහස් සේවා
අපි මේ routing rule එක ක්‍රියාත්මක කරලා command එක පාවිච්චි කරමු curl අපි ක්ෂුද්‍ර සේවා වෙත සැබෑ ඉල්ලීම් ලූපයකින් අනුකරණය කරන්නෙමු. ඔබට තිර පිටපතේ දැකිය හැකි පරිදි, ඒවා සියල්ලම v1 වෙත යයි:

Istio හි අඳුරු දියත් කිරීම: රහස් සේවා
V2 හි තදබදය කොහෙද? අපගේ උදාහරණයේ සියලුම ඉල්ලීම් පැමිණියේ අපගේම විධාන රේඛාවෙන් පමණක් බැවින්, එය සරලව නොපවතී. නමුත් ඉහත තිරයේ ඇති පහළ රේඛා කෙරෙහි අවධානය යොමු කරන්න: මෙය අපි සෆාරි බ්‍රව්සරයෙන් ඉල්ලීමක් ක්‍රියාත්මක කළ බවට ප්‍රතික්‍රියාවකි, එය මෙය නිෂ්පාදනය කළේය:

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

අසීමිත බලය

සාමාන්‍ය ප්‍රකාශන මඟින් ඉල්ලීම් යොමු කිරීම සඳහා ඉතා ප්‍රබල හැකියාවන් සපයන බව අපි දැනටමත් ලියා ඇත. පහත උදාහරණය දෙස බලන්න (එය කරන්නේ කුමක්දැයි ඔබට වැටහෙනු ඇතැයි අපි සිතමු):

Istio හි අඳුරු දියත් කිරීම: රහස් සේවා
නිත්‍ය ප්‍රකාශනවලට කළ හැකි දේ ගැන මේ වන විට ඔබට අදහසක් ඇති.

බුද්ධිමත්ව ක්‍රියා කරන්න

සාමාන්‍ය ප්‍රකාශන භාවිතා කරමින් ස්මාර්ට් මාර්ගගත කිරීම, විශේෂයෙන් පැකට් ශීර්ෂ සැකසීම, ඔබට අවශ්‍ය ආකාරයට ගමනාගමනය මෙහෙයවීමට ඔබට ඉඩ සලසයි. මෙය නව කේතය ක්‍රියාත්මක කිරීම බෙහෙවින් සරල කරයි - එය සරලයි, එයට කේතය වෙනස් කිරීම අවශ්‍ය නොවේ, අවශ්‍ය නම්, සියල්ල ඉක්මනින් ආපසු ලබා දිය හැකිය.

උනන්දුද?

ඔබේ පරිගණකයේ Istio, Kubernetes සහ OpenShift සමඟ අත්හදා බැලීමට ඔබ උනන්දුද? කණ්ඩායම Red Hat සංවර්ධක කණ්ඩායම විශිෂ්ට එකක් සූදානම් කළා පෙළ පොත මෙම මාතෘකාව මත සහ ඒ සමග ඇති සියලුම ගොනු ප්‍රසිද්ධියේ ලබා ගත හැක. එබැවින් ඔබ කිසිවක් ප්රතික්ෂේප නොකරන්න ඉදිරියට යන්න.

ඉස්තියෝ එග්‍රස්: සිහිවටන සාප්පුවෙන් පිටවීම

Red Hat OpenShift සහ Kubernetes සමඟ එක්ව Istio භාවිතා කිරීමෙන්, ඔබට microservices සමඟින් ඔබේ ජීවිතය වඩාත් පහසු කර ගත හැක. ඉස්ටියෝගේ සේවා දැල Kubernetes කරල් තුළ සඟවා ඇති අතර, ඔබේ කේතය (බොහෝ විට) හුදකලාව ක්‍රියාත්මක වේ. කාර්ය සාධනය, වෙනස් කිරීමේ පහසුව, ලුහුබැඳීම, ආදිය - මේ සියල්ල සයිඩ්කාර් බහාලුම් භාවිතා කිරීම සඳහා ස්තුති භාවිතා කිරීමට පහසුය. නමුත් ඔබේ ක්ෂුද්‍ර සේවාවට ඔබේ OpenShift-Kubernetes පද්ධතියෙන් පිටත පිහිටා ඇති වෙනත් සේවාවන් සමඟ සන්නිවේදනය කිරීමට අවශ්‍ය නම් කුමක් කළ යුතුද?

ඉස්තියෝ එග්‍රස් ගලවා ගැනීමට පැමිණෙන්නේ මෙහිදීය. කෙටියෙන් කිවහොත්, එය ඔබගේ Kubernetes කරල් පද්ධතියේ කොටසක් නොවන සම්පත් (කියවීම: "සේවා") වෙත ප්‍රවේශ වීමට ඔබට ඉඩ සලසයි. ඔබ අමතර වින්‍යාස කිරීමක් සිදු නොකරන්නේ නම්, Istio Egress පරිසරය තුළ ගමනාගමනය යොමු කරනු ලබන්නේ කරල් පොකුරක් තුළ සහ අභ්‍යන්තර IP වගු මත පදනම්ව එවැනි පොකුරු අතර පමණි. ඔබට පිටතින් සේවා සඳහා ප්‍රවේශය අවශ්‍ය නොවන තාක් කල් එවැනි pupation විශිෂ්ට ලෙස ක්‍රියා කරයි.

Egress ඔබට ඉහත IP වගු මඟ හැරීමට ඉඩ සලසයි, එක්කෝ Egress රීති මත පදනම්ව හෝ IP ලිපින පරාසයක් මත.

අපි හිතමු අපිට httpbin.org/headers වෙත GET ඉල්ලීමක් කරන Java වැඩසටහනක් තියෙනවා කියලා.

(httpbin.org යනු පිටතට යන සේවා ඉල්ලීම් පරීක්ෂා කිරීම සඳහා පහසු සම්පතක් පමණි.)

ඔබ විධාන රේඛාවට ඇතුල් කළහොත් curl http://httpbin.org/headers, අපි පහත දේ දකිමු:

Istio හි අඳුරු දියත් කිරීම: රහස් සේවා
නැතහොත් ඔබට බ්‍රවුසරයේ එකම ලිපිනය විවෘත කළ හැකිය:

Istio හි අඳුරු දියත් කිරීම: රහස් සේවා
ඔබට පෙනෙන පරිදි, එහි පිහිටා ඇති සේවාව සරලවම එයට යවන ලද ශීර්ෂයන් ආපසු ලබා දෙයි.

අපි ආනයනය ප්‍රතිස්ථාපනය කරනවා

දැන් අපි මෙම සේවාවේ ජාවා කේතය අපගේ පද්ධතියට පිටතින් ගෙන එය තනිවම ක්‍රියාත්මක කරමු, එහිදී, මතක තබා ගන්න, Istio ස්ථාපනය කර ඇත. (ඇමතීමෙන් ඔබට මෙය කළ හැකිය අපගේ Istio නිබන්ධනය.) සුදුසු රූපය ගොඩනඟා එය OpenShift වේදිකාවේ දියත් කිරීමෙන් පසුව, අපි මෙම සේවාව විධානය සමඟ අමතන්නෙමු curl egresshttpbin-istioegress.$(minishift ip).nip.io, ඉන්පසු අපි මෙය තිරය මත දකිමු:

Istio හි අඳුරු දියත් කිරීම: රහස් සේවා
අපොයි, මොකද වුණේ? හැම දෙයක්ම හරියට වැඩ කළා. සොයාගත නොහැකි වීම යන්නෙන් අදහස් කරන්නේ කුමක්ද? අපි එය කළේ ඔහු වෙනුවෙන් පමණයි curl.

IP වගු මුළු අන්තර්ජාලයටම දිගු කිරීම

මේ සඳහා ඉස්තියෝට දොස් පැවරිය යුතුය (හෝ ස්තුති කළ යුතුය). සියල්ලට පසු, Istio යනු හඳුනා ගැනීම සහ මාර්ගගත කිරීම සඳහා වගකිව යුතු පැති කාර් බහාලුම් පමණි (සහ අපි කලින් කතා කළ තවත් බොහෝ දේ). මෙම හේතුව නිසා, IP වගු දන්නේ ඔබේ පොකුරු පද්ධතිය තුළ ඇති දේ පමණි. සහ httpbin.org පිටත පිහිටා ඇති අතර එම නිසා ප්‍රවේශ විය නොහැක. ඔබේ මූලාශ්‍ර කේතයේ සුළු වෙනසක් නොමැතිව - Istio Egress ගලවා ගැනීමට පැමිණෙන්නේ මෙහිදීය.

පහත Egress රීතිය මඟින් අවශ්‍ය සේවාව සඳහා (අවශ්‍ය නම්, සම්පූර්ණ අන්තර්ජාලය පුරා) සෙවීමට Istio හට බල කරයි, මෙම අවස්ථාවේදී, httpbin.org. ඔබට මෙම ගොනුවෙන් (egress_httpbin.yml) දැකිය හැකි පරිදි, මෙහි ක්‍රියාකාරීත්වය ඉතා සරල ය:

Istio හි අඳුරු දියත් කිරීම: රහස් සේවා
ඉතිරිව ඇත්තේ මෙම රීතිය යෙදීම පමණි:

istioctl create -f egress_httpbin.yml -n istioegress

ඔබට විධානය සමඟ Egress නීති නැරඹිය හැකිය istioctl get egressrules:

Istio හි අඳුරු දියත් කිරීම: රහස් සේවා
අවසාන වශයෙන්, අපි නැවතත් විධානය ක්රියාත්මක කරමු හැඬලී ය - සහ සෑම දෙයක්ම ක්‍රියාත්මක වන බව අපට පෙනේ:

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

අපි විවෘතව හිතනවා

ඔබට පෙනෙන පරිදි, බාහිර ලෝකය සමඟ අන්තර්ක්‍රියා සංවිධානය කිරීමට ඉස්ටියෝ ඔබට ඉඩ සලසයි. වෙනත් වචන වලින් කිවහොත්, ඔබට තවමත් OpenShift සේවා සාදා ඒවා Kubernetes හරහා කළමනාකරණය කළ හැකිය, අවශ්‍ය පරිදි ඉහළට සහ පහළට පරිමාණය කරන සෑම දෙයක්ම කරල්වල තබා ගන්න. ඒ සමඟම, ඔබට ඔබේ පරිසරයෙන් පිටත සේවාවන්ට ආරක්ෂිතව ප්‍රවේශ විය හැකිය. ඔව්, අපි නැවත වරක් පුනරුච්චාරණය කරන්නේ ඔබේ කේතය කිසිඳු ආකාරයකින් ස්පර්ශ නොකර මේ සියල්ල කළ හැකි බවයි.

මෙය Istio හි ලිපි මාලාවේ අවසාන පෝස්ට් එක විය. රැඳී සිටින්න - ඉදිරියේදී රසවත් දේවල් ගොඩක් තිබේ!

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

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