Իստիո Սերվիս Մեշի գրառումների շարքը

Մենք սկսում ենք գրառումների շարքը, որտեղ ցույց կտանք Իստիո Սերվիս Մեշի բազմաթիվ հնարավորություններ, համատեղված 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 կոնտեյներում, որոնք տեղակայվում են միաժամանակ Kubernetes-pod-ի հետ վերահսկվող ծառայության և ներմուծում (inject) և արտահանում (extract) ֆունկցիոնալություն և տեղեկատվություն ըստ սահմանված կոնֆիգուրացիայի։ Ստորեւ մեկ անգամ նշենք, որ սա ձեր սեփական կոնֆիգուրացիան է, և այն ապրում է ձեր կոդից դուրս։ Այնպես որ, կոդը դառնում է շատ ավելի պարզ և կարճ։

Ի՞նչն է կարևոր, միկրոտ ծառայությունների գործառնական բաղադրիչը ոչ մի կապ չունի հենց կոդի հետ, այնպես որ նրանց շահագործումը կարելի է հանգիստ փոխանցել IT մասնագետներին։ Իրապես, ինչու՞ ծրագիր պետք է պատասխանատու լինի circuit breaker-ների և fault injection-ի համար։ Պատասխանել՝ այո, բայց մշակել և ստեղծել դրանք։ Եթե նայել այս ամենը կոդից դուրս, ծրագրավորողները կկարողանան ամբողջությամբ կենտրոնանալ կիրառական գործունեության վրա։ Ի վերջո, թե ինչքան կոդը կկարճանա և հեշտանա։

սերվիսային ցանց

Istio-ն, որը իրականացնում է միկրոտ ծառայությունների կառավարման գործառույթները նրանց կոդից դուրս՝ դա հենց Service Mesh կոնցեպտն է։ Այլ խոսքով, սա համախմբված խմբաքանակների կամ մի քանի բինարների համակազմ, որը ձևավորում է ցանցային գործառույթների ցանց։

Ինչպե՞ս է Istio-ն աշխատում միկրոտ ծառայությունների հետ

Սա երկանկարոմի sidecar կոնտեյների աշխատանքն է կապված Kubernetes և Minishift Օվկիանոսի հավի թռիչքից: գործում եք Minishift-ի օրինակ, ստեղծում եք Istio-ի նախագիծ (կոչենք այն «istio-system»), տեղադրում և գործարկում եք բոլոր անելիքները կապված Istio-ի հետ: Después, երբ ստեղծում եք նախագծեր և pod-եր, ավելացնում եք конфигурационные տեղեկություններ ձեր deployment-ներին, և ձեր pod-երը սկսում են օգտագործել Istio: Սովորաբար օրակարգի տեսքը նման է այսպես:

Իստիո Սերվիս Մեշի գրառումների շարքը

Հիմա կարելի է փոփոխել Istio-ի կարգավորումները, որպեսզի, օրինակ, իրականացնել fault injection, աջակցություն Canary Deployment կամ այլ Istio հնարավորություններ – և ամեն ինչ ընդհանրապես առանց կոդի խանութների: Assuming, դուք ցանկանում եք խմբագրել ամբողջ վեբ-տրաֆիկը ձեր առավել մեծ հաճախորդի (Foo Corporation) կողմից նոր տարբերակի կայքին: Դա արվելու համար բավական է ստեղծել Istio-ի ռաստր, որը կսպասի @foocorporation.com օգտատիրոջ նույնականացման և կիրականացնի համապատասխան խմբագրում: Մնացած օգտագործողների համար ոչինչ չի փոխվի: Իսկ դուք այդ ընթացքում հանգիստ կմեկնաբանեք նոր տարբերակի կայքը: Եվ մի huomեք, որ դրա համար ընդհանրապես չեն պահանջվում մշակողներ.

Կարելի է շատ վճարել դրա համար?

Դեպր պատճառովը: Istio-ն գործում է բավական արագ, այն գրել է Go և ստեղծում է բավական մինիմալ ավելահարկ: Բացի այդ, հնարավոր խափանումը օնլայն արտադրողականության մեջ վերականգնվում է մշակողների աշխատանքի արտադրողականության աճով: Ամենայն դեպս, տեսությունում: Մի մոռացեք, որ մշակողների ժամանակը թանկ է: Ինչ վերաբերում է ծրագրային ապահովման ծախսերին, ապա 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-ի ուսումնասիրության համար, այն է: Red Hat Developer OpenShift Container Platform, մեր Istio-ի ուղեցույցը և մեր Service Mesh-ի միկրա-վեբհայթում. Մի վարանեք, սկսեք հենց այսօր!

Istio-ի հրամանագրերը. ծառայությունների հարցումները ուղղեք ճիշտ ուղղությամբ

OpenShift և Kubernetes շատ լավ են ստանում դիմումնեը դեպի միկրոծառայություններ ուղղված լինել ճիշտ 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-ն ուսումնասիրելը մեկ բան է, բայց ինչու չփորձել ամենը ձեռքով անել։ Կարողությունը Red Hat Developer Program պատրաստել է մանրամասն ուղեցույց (անգլերենում), որը կօգնի ձեզ այս տեխնոլոգիաները որքան հնարավորինս արագ հասկանալ։ Ուղեցույցը նաեւ 100% բաց աղբյուր է, հետեւաբար այն հասանելի է հանրության համար։ Ֆայլը աշխատում է macOS-ում, Linux-ում և Windows-ում, իսկ աղբյուրային կոդը հասանելի է Java և node.js տարբերակներով (շուտով կլինեն նաեւ այլ լեզուների տարբերակներ)։ Պարզապես բացեք ձեր բրաուզերում համապատասխան git-репозիտորիը Red Hat Developer Demo.

Հաջորդ հրապարակմանը. խնդիրները կարգավորում ենք գեղեցիկ

Այսօր դուք տեսաք, թե ինչ կարող են անել Istio-ի երթուղավորման կանոնները։ Իսկ հիմա պատկերացրեք նույնը, բայց արդեն սխալների վերամշակման համար։ Ո precisely about this we'll discuss in the next post.

Ընտանիք: habr.com

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster