Մենք սկսում ենք գրառումների շարքը, որտեղ ցույց կտանք Իստիո Սերվիս Մեշի բազմաթիվ հնարավորություններ, համատեղված Red Hat OpenShift-ի և Kubernetes-ի հետ:

Առաջին մասը, այսօր:
- Կփորձենք նկարագրել Kubernetes-ի sidecar կոնտեյներների գաղափարը և ձևակերպենք այս գրառումների շարքի տրամադրությունը: «դուք պետք չէ ոչինչ փոխել Ձեր կոդում».
- Ներկայացնենք Իստիոյի հիմնարար սկզբունքը՝ ուղղորդման կանոնները: Դրանք հիմք են հանդիսանում Իստիոյի բոլոր մյուս հնարավորությունների համար, քանի որ հենց կանոններն են, որոնք թույլ են տալիս ուղղորդել երթևեկությունը միկրոսերվիսներին՝ օգտագործելով YAML ֆայլեր, որոնք արտասովոր են կոդի մասում: Դիտարկում ենք նաև Canary Deployment-ի թափանցիկությունը: Ամանորի բոնուս՝ 10 փոխդասընթաց Իստիոյի վերաբերյալ
Երկրորդ մասը, որը շուտով կհրապարակվի, ձեզ կհետաքրքրի:
- Ինչպես Իստիոն իրագործում է Pool Ejection-ը՝ համատեղCircuit Breaker-ի հետ, և ցույց կտանք, ինչպես Իստիոն հնարավորություն է տալիս հեռացնել ոչ ակտիվ կամ վատ գործող pod-ը բաշխման սխեմայից:
- Եթե ավելի շուտ անդրադառնանք Circuit Breaker թեմային առաջին գրառքից, ապա կտեսնենք, թե ինչպես կարելի է այստեղ օգտագործել Իստիոն: Ցույց կտասնք, թե ինչպես առանց որևէ փոփոխության դեպի սերվիսների կոդ ուղղորդել երթևեկությունը և մշակել ցանցային սխալները YAML կոնֆիգուրացիոն ֆայլերի և հրամանների միջոցով:
Երրորդ մասը:
- Կպատմենք Աղբյուրը և մոնիթորինգի մասին, որոնք արդեն ներառված են կամ հեշտությամբ ավելացվում են Իստիոյում: Ցույց կտանք, թե ինչպես օգտագործել Prometheus, Jaeger և Grafana գործիքները՝ համատեղավորված OpenShift-ի ընդարձակմամբ, որպեսզի հեշտությամբ կառավարենք միկրոսերվիսների ճարտարապետությունը:
- Մոնիթորինգից և սխալների մշակմամբ շարժվում ենք դեպի նրանց համակարգի մտցնելու գործընթացը: Մյուս խոսքով, սովորում ենք անել fault injection առանց սկզբնական կոդի փոփոխության, ինչը շատ կարևոր է թեսթավորման տեսանկյունից՝ քանի որ եթե փոխեք ինքնուրույն կոդն, կա ռիսկեր, որ կմտցնեք լրացուցիչ սխալներ:
Վերջապես, Իստիո Սերվիս Մեշի վերջին գրառումը:
- Փոխվում ենք Մութ Գիտակցությանը: Եվս մեկ անգամ՝ սովորենք օգտագործել Dark Launch մոդելը, երբ կոդը տեղադրվում է և փորձարկվում է ուղղակի արտադրական տվյալների վրա, բայց չի ազդում համակարգի աշխատանքի վրա: Այստեղ շատ օգտակար են Իստիոյի երթևեկության բաժանումն ունենալու ունակությունը: Ունենալով հնարավորությունը կատարել փորձարկում կենդանի արտադրական տվյալների վրա, առանց ազդելու մարտական համակարգի աշխատանքի վրա՝ դա համոզիչ միջոց է ստուգման:
- Այն բանից հետո, երբ ուսումնասիրել ենք Dark Launch-ը, ցույց կտանք, թե ինչպես օգտագործել Canary Deployment մոդելը՝ ռիսկերը նվազեցնելու և նոր կոդի ներդրման գործընթացը պարզացնելու համար: Որը ինքնին Canary Deployment-ը՝ շատ նորություն չէ, բայց Իստիոն հնարավորություն է տալիս իրականացնել այդ մոդելը ընդամենը պարզ YAML ֆայլերով:
- Վերջում ցույց կտանք, թե ինչպես Իստիո Egress-ի միջոցով հասանելիություն տալ ծառայություններին նրանց համար, ովքեր գտնվում են ձեր կլաստերներից դուրս, որպեսզի օգտագործեն Իստիոյի հնարավորությունները, աշխատելիս ինտերնետում:
Այդպիսով, սկսվեց...
Istio-ի մոնիտորինգի և կառավարիչի գործիքակազմը՝ ամեն ինչը, ինչ պետք է միկրոտ қызметների համակարգում համակարգելու համար .
Ինչ է Istio սերվիսային ցանցը
Սերվիսային ցանցը իրականացնում է ծառայությունների խմբի համար՝ տրաֆիկի մոնիտորինգ, մուտքագրո կարգավորում, հայտնաբերում, անվտանգություն, անհաջողության դիմակայություն և այլ օգտակար գործառույթներ։ Istio-ն թույլ է տալիս իրականացնել դա առանց ծառայությունների ինքնակոդում փոփոխությունների։ Ո՞րն է հրաշքի գաղտնիքը։ Istio-ն կցում է յուրաքանչյուր ծառայությանը իր պրոքսին՝ sidecar-կոնտեյներով, որից հետո ամբողջ տրաֆիկը այս ծառայությանը անցնում է պրոքսիով, որն առաջնորդվում է սահմանված քաղաքականություններով, որոշելով, թե ինչպես, երբ և արդյոք պետք է այդ տրաֆիկը հասնի ծառայությանը։ Istio-ն նաև հնարավորություն է տալիս իրականացնել առաջադեմ DevOps տեխնիկաներ, գոնե canary deployments, circuit breakers, fault injection և շատ ուրիշներ։
Ինչպե՞ս է Istio-ն աշխատում կոնտեյներների և Kubernetes-ի հետ
Istio սերվիսային ցանցը՝ դա sidecar-ի իրականացման օրինակ է այն ամենի, ինչ անհրաժեշտ է միկրոտ ծառայությունների ստեղծման և կառավարման համար՝ մոնիտորինգ, տեսակցություն, circuit breakers, ուղղորդում, բեռի հավասարակշռում, fault injection, կրկնումներ, ժամանակային ելքայիններ, զարկերակային Միացնել, մուտքի վերահսկում, արագության սահմանափակում և շատ ավելին։ Եվ չնայած այսօր կան բազմաթիվ գրադարաններ, որպեսզի իրականացնել այս գործառույթները անմիջապես կոդի մեջ, Istio-ի միջոցով դուք կարող եք ունենալ բոլոր այս գործառույթները, ոչինչ չփոխելով ձեր կոդում։
Sidecar մոդելի համաձայն, Istio-ն գործում է Linux կոնտեյներում, որոնք տեղակայվում են միաժամանակ -pod-ի հետ վերահսկվող ծառայության և ներմուծում (inject) և արտահանում (extract) ֆունկցիոնալություն և տեղեկատվություն ըստ սահմանված կոնֆիգուրացիայի։ Ստորեւ մեկ անգամ նշենք, որ սա ձեր սեփական կոնֆիգուրացիան է, և այն ապրում է ձեր կոդից դուրս։ Այնպես որ, կոդը դառնում է շատ ավելի պարզ և կարճ։
Ի՞նչն է կարևոր, միկրոտ ծառայությունների գործառնական բաղադրիչը ոչ մի կապ չունի հենց կոդի հետ, այնպես որ նրանց շահագործումը կարելի է հանգիստ փոխանցել IT մասնագետներին։ Իրապես, ինչու՞ ծրագիր պետք է պատասխանատու լինի circuit breaker-ների և fault injection-ի համար։ Պատասխանել՝ այո, բայց մշակել և ստեղծել դրանք։ Եթե նայել այս ամենը կոդից դուրս, ծրագրավորողները կկարողանան ամբողջությամբ կենտրոնանալ կիրառական գործունեության վրա։ Ի վերջո, թե ինչքան կոդը կկարճանա և հեշտանա։
սերվիսային ցանց
Istio-ն, որը իրականացնում է միկրոտ ծառայությունների կառավարման գործառույթները նրանց կոդից դուրս՝ դա հենց Service Mesh կոնցեպտն է։ Այլ խոսքով, սա համախմբված խմբաքանակների կամ մի քանի բինարների համակազմ, որը ձևավորում է ցանցային գործառույթների ցանց։
Ինչպե՞ս է Istio-ն աշխատում միկրոտ ծառայությունների հետ
Սա երկանկարոմի sidecar կոնտեյների աշխատանքն է կապված և Օվկիանոսի հավի թռիչքից: գործում եք Minishift-ի օրինակ, ստեղծում եք Istio-ի նախագիծ (կոչենք այն «istio-system»), տեղադրում և գործարկում եք բոլոր անելիքները կապված Istio-ի հետ: Después, երբ ստեղծում եք նախագծեր և pod-եր, ավելացնում եք конфигурационные տեղեկություններ ձեր deployment-ներին, և ձեր pod-երը սկսում են օգտագործել Istio: Սովորաբար օրակարգի տեսքը նման է այսպես:

Հիմա կարելի է փոփոխել Istio-ի կարգավորումները, որպեսզի, օրինակ, իրականացնել fault injection, աջակցություն կամ այլ Istio հնարավորություններ – և ամեն ինչ ընդհանրապես առանց կոդի խանութների: Assuming, դուք ցանկանում եք խմբագրել ամբողջ վեբ-տրաֆիկը ձեր առավել մեծ հաճախորդի (Foo Corporation) կողմից նոր տարբերակի կայքին: Դա արվելու համար բավական է ստեղծել Istio-ի ռաստր, որը կսպասի @foocorporation.com օգտատիրոջ նույնականացման և կիրականացնի համապատասխան խմբագրում: Մնացած օգտագործողների համար ոչինչ չի փոխվի: Իսկ դուք այդ ընթացքում հանգիստ կմեկնաբանեք նոր տարբերակի կայքը: Եվ մի huomեք, որ դրա համար ընդհանրապես չեն պահանջվում մշակողներ.
Կարելի է շատ վճարել դրա համար?
Դեպր պատճառովը: Istio-ն գործում է բավական արագ, այն գրել է և ստեղծում է բավական մինիմալ ավելահարկ: Բացի այդ, հնարավոր խափանումը օնլայն արտադրողականության մեջ վերականգնվում է մշակողների աշխատանքի արտադրողականության աճով: Ամենայն դեպս, տեսությունում: Մի մոռացեք, որ մշակողների ժամանակը թանկ է: Ինչ վերաբերում է ծրագրային ապահովման ծախսերին, ապա Istio-ն բաց աղբյուրով ծրագրային ապահովում է, ուստի ստանալը և օգտագործելը կարող եք անվճար.
Ուսումնասիրեք ինքնուրույն
Red Hat Developer Experience Team թիմը մշակել է խորացված պրակտիկ ոգի Istio-ի (անգլերեն): Այն գործում է Linux, MacOS և Windows-ում, իսկ կոդը ներկայացված է Java և Node.js տարբերակներում.
10 ինտերակտիվ դասընթացներ по Istio
Բլոկ 1 — Սկզբնակներ
Istio-ի մասին ծանոթություն
30 րոպե
ծանոթանում ենք Service Mesh-ին, սովորում ենք տեղադրել Istio OpenShift Kubernetes կլաստրում.
Միկրոհծումների տեղադրումը Istio-ին
30 րոպե
Օգտագործում ենք Istio כדי տեղադրել երեք միկրոհծում Spring Boot և Vert.x-ի հետ.
Բլոկ 2 – միջին մակարդակ
Հայտնի գործընթացներն ու трасասարումը Istio-ում
60 րոպե
Սովորում ենք Istio-ի ներմուծված վերահսկման գործիքները, կարգավորվող չափեր, և նաև OpenTracing-ը Prometheus-ի և Grafana-ի միջոցով.
Զորահանումը Istio-ում
60 րոպե
Сպասում ենք Istio-ում կառավարել маршрутизацияը պարզ օրենքների օգնությամբ.
Ընդլայնված օրենքներ маршрутизацияը
60 րոպե
Ծանոթանում ենք իմաստային маршруտավորման Istio-ում, մուտքի կառավարման, լիցքավորումը բաշխելու և արագության սահմանափակման.
Բլոկ 3 – փորձագետ
Fault Injection в Istio
60 րոպե
Ընդունում ենք բաժանման դեպքեր распределенных приложений, ստեղծելով HTTP և ցանցային ուշացումներ, սովորում ենք կիրառել խենթացնող մեթոդաբանությունը այրվածք կարգավիճակի համար.
Circuit Breaker в Istio
30 րոպե
Մենք Siege ծրագրային ապահովումը տեղադրում ենք կայքերի սթրեսային թեստավորման համար և սովորում ենք ապահովել բեքենդի կոփվածությունը կրկնությունների, circuit breaker-ի և pool ejection-ի միջոցով:
Egress և Istio
10 րոպե
Օգտագործում ենք Egress մուտքերը՝ ներքին ծառայությունների և արտաքին API-ների և ծառայությունների միջև փոխգործակցության կանոններ ստեղծելու համար:
Istio և Kiali
15 րոպե
Սովորում ենք օգտագործել Kiali՝ ծառայությունների ցանցի ընդհանուր պատկերն elde փոքրացման համար և հարցումների և տվյալների հոսքերի ուսումնասիրության համար:
Mutual TLS-ի կիրառումը Istio-ում
15 րոպե
Ստեղծում ենք Istio Gateway և VirtualService, հետո մանրամասն ուսումնասիրում ենք mutual TLS (mTLS) և դրա կարգավորումները:
Բլոկ 3.1 — Դիտարկում. Istio ծառայությունների ցանցը միկրոծառայությունների համար

کتեփի մասին:
- Ինչ է ծառայությունների ցանցը (service mesh)
- Istio համակարգը և դրա դերը միկրոծառայությունների ճարտարապետությունում:
- Istio-ի օգտագործումը հետևյալ խնդիրները լուծելու համար:
- Հայտարարագրված դիմադրություն։
- Մատակարարում;
- Հատուկ փորձարկում;
- Անվտանգություն;
- Տարածվածություն հավաքագրելու համար օգտագործենք սատկացում, մատիչներ և Grafana:
Ծառայությունների ցանցերի և Istio-ի թեմայով հոդվածների շարք
Փորձуйте ինքներդ
Այս հոդվածների շարքը չի նպատակաուղղում իրապես խորությամբ ուսումնասիրելու համար Istio-ի աշխարհը: Մենք պարզապես ցանկանում ենք ձեզ ծանոթացնել այս գաղափարի հետ և, հնարավոր է, ոգեշնչեն ձեզ փորձել Istio ինքներդ: Սա կարելի է անել լրիվ անվճար, և Red Hat-ը տրամադրում է բոլոր անհրաժեշտ գործիքները OpenShift, Kubernetes, Linux-խողովակների և Istio-ի ուսումնասիրության համար, այն է: , և մեր . Մի վարանեք, սկսեք հենց այսօր!
Istio-ի հրամանագրերը. ծառայությունների հարցումները ուղղեք ճիշտ ուղղությամբ
և շատ լավ են ստանում դիմումնեը դեպի ուղղված լինել ճիշտ pod-երին: Սա նույնպես Kubernetes-ի գոյության մեկ նպատակներից մեկն է՝ մատակարարում և բեռի հավասարակշռում: Իսկ ի՞նչ կլինի, եթե ձեզ անհրաժեշտ լինի ավելի նրբաստիճան և արհեստական մատակարարում: Օրինակ, վերցրած երկու տարբերակերը նույն ժամանակում օգտագործելու համար: Ինչպես կարող ենք այստեղ ասել Istio Route Rules հրամաններ:
Մատակարարման կանոնները, որոնք, ըստ էության, մատնանշում են ուղի ընտրելու: Հնարավորության ցանկացած մակարդակի համակարգում, այս կանոնների ընդհանուր սկզբունքն անփոփոխ մնում է. հարցումները տարածվում են որոշակի պարամետրերի և HTTP վարկանիշների մակնշման հիման վրա:
Նայենք օրինակներին:
Kubernetes-ի բուն տեսակ. 50%-ի «պարզ» հարցում
Մեր օրինակներում մենք ցույց կտանք, թե ինչպես միաժամանակ օգտագործել OpenShift-ում երկու տարբերակ միկրոսերվիսի, որոնք անվանենք v1 և v2: Յուրաքանչյուր տարբերակը գործարկվում է իր սեփական Kubernetes pod-ում, և սկզբունքորեն այստեղ գործում է հավասարաչափ բալանսավորված շրջանային маршруտացում (evenly balanced round robin routing): Յուրաքանչյուր pod ստանում է իր բաժինը հարցումների առվի մեջ, ըստ միկրոսերվիսի օրինակների քանակի կամ, այլապես ասած, ռեպլիկների: Istio-ն, սակայն, թույլ է տալիս փոխել այդ բալանսը ձեռքով:
Հ assumption, մենք բաց թողեցինք OpenShift-ում մեր առաջարկության ծառայության երկու տարբերակներ, recommendation-v1 և recommendation-v2:
Նկար 1-ում երևում է, որ, երբ յուրաքանչյուր ծառայությունը ներկայացված է մեկ օրինակով, հարցումները հավասարաչափ փոխհամաձայնվում են միջև նրանց: 1-2-1-2-… Ահա թե ինչպես է Kubernetes-ի маршруտացումը գործում սկզբունքորեն:

Քաշային բաշխում տարբերակների միջև
Նկար 2-ում ցուցադրված է, ինչ կլինի, եթե ավելացնենք v2 ծառայության ռեպլիկների քանակը մեկից երկուսին (это делается командой oc scale —replicas=2 deployment/recommendation-v2). Ինչպես տեսնում ենք, հարցումները v1 և v2 միջև այժմ բաժանվում են «մեկից երեք» հարաբերակցությամբ: 1-2-2-1-2-2-…:

Վարկածը դնում Istio-ի մոներ
Istio-ն թույլ է տալիս հեշտությամբ փոխել հարցումների բաշխումը անհրաժեշտ ձևով: Օրինակ, ուղարկել ողջ մամուլը միայն recommendation-v1-ի մեջ հետևյալ yaml-ֆայլով Istio:

Այստեղ հարկավոր է ուշադրություն դարձնել, որ pod-ները ընտրվում են ըստ պիտակների: Մեր օրինակն օգտագործում է v1 պիտակը: «weight: 100» պարամետրը նշանակում է, որ 100%-ը մամուլի պետք է маршрутизացիայի բոլոր pod-ներին, որոնց մոտ կա v1 պիտակը:
Ինքավաճառ բաշխում տարբերակների միջև (Canary Deployment)
Հաջորդը, օգտագործելով weight պարամետրը, կարելի է ուղղորդել մամուլը երկու pod-ների միջև, անտեսելով միկրոսերվիսի յուրաքանչյուրում գործարկված օրինակների քանակը: Օրինակ, այստեղ մենք կթելադրենք 90%-ը v1-ի, իսկ 10%-ը v2-ի վրա.

Անձնական маршруտացում նավարկող օգտատերերի համար
Վերջում, ցույց կտամ, թե ինչպես խափանված маршруտացնել իջեցնող օգտատերերի մամուլը v2 ծառայությանը, իսկ մյուսներին՝ v1-ին: Մասնավորապես, դրա համար օգտագործում ենք կանոնավոր արտահայտություններ՝ վերլուծելու հարցման գլխի user-agent արժեքը:

Հիմա ձեր հերթը
Կանոնավոր արտահայտությունների օգտագործմամբ գլխերի վերլուծություն օրինակները պետք է ստիպեն ձեզ փնտրել ձեր սեփական տարբերակները Istio-ի маршруտացման կանոնների կիրառման համար: Մանավանդ, որ այստեղ բացվում են բավականին լայն հնարավորություններ, քանի որ գլխերի արժեքները կարելի է կազմել դիմումների սկզբնական կոդում:
Եվ հիշեք, որ Ops, այլ ոչ թե Dev
Ոչինչ, ինչ մենք ցույց տվեցինք վերոնշյալ օրինակներում, չի կատարվում փոքրիկ փոփոխություններով սկզբնական կոդում, իհարկե բացառությամբ այն դեպքերի, երբ հարկավոր է ձևավորել հատուկ հարցումների գլուխներ: Istio-ն շատ օգտակար կլինի ինչպես ծրագրավորողների համար, որոնք, օրինակ, կարող են կիրառել այն փորձնական մակարդակում, այնպես էլ ՏՏ համակարգերի շահագործման մասնագետների համար, որոնց համար դա մեծ օգնություն կլինի արտադրությունում:
Հետեւաբար, կրկնենք այս շարքի հրապարակումների առանցքը: Ձեզ չի պետք ձեր կոդում որևէ բան փոխել. Նոր պատկերներ հավաքելու կամ նոր կոնտեյներներ գործարկելու անհրաժեշտություն չկա։ Սա ամեն ինչ հնարավոր է անել առանց կոդի.
Միացնելու երևակայությունը
Հրաշալի պատկերացրեք, թե ինչ հնարավորություններ է բացում վերնագրերի վերլուծությունը կանոնավոր արտահայտությունների միջոցով։ Ցանկանում եք ձերLargest client-ին ուղղել հատուկ տարբերակ ձեր ? Легко! Нужна отдельная версия для браузера Chrome? Не проблема! Вы можете маршрутизировать трафик практически по любой его характеристике.
Փորձуйте ինքներդ
Ձեռք բերել Istio, Kubernetes և OpenShift-ն ուսումնասիրելը մեկ բան է, բայց ինչու չփորձել ամենը ձեռքով անել։ Կարողությունը պատրաստել է մանրամասն ուղեցույց (անգլերենում), որը կօգնի ձեզ այս տեխնոլոգիաները որքան հնարավորինս արագ հասկանալ։ Ուղեցույցը նաեւ 100% բաց աղբյուր է, հետեւաբար այն հասանելի է հանրության համար։ Ֆայլը աշխատում է macOS-ում, Linux-ում և Windows-ում, իսկ աղբյուրային կոդը հասանելի է Java և node.js տարբերակներով (շուտով կլինեն նաեւ այլ լեզուների տարբերակներ)։ Պարզապես բացեք ձեր բրաուզերում համապատասխան git-репозիտորիը .
Հաջորդ հրապարակմանը. խնդիրները կարգավորում ենք գեղեցիկ
Այսօր դուք տեսաք, թե ինչ կարող են անել Istio-ի երթուղավորման կանոնները։ Իսկ հիմա պատկերացրեք նույնը, բայց արդեն սխալների վերամշակման համար։ Ո precisely about this we'll discuss in the next post.
Ընտանիք: habr.com
