ProHoster > Օրագիր > Վարչակազմը > Kubernetes Web View-ի հայտարարություն (և Kubernetes-ի այլ վեբ միջերեսների համառոտ ակնարկ)
Kubernetes Web View-ի հայտարարություն (և Kubernetes-ի այլ վեբ միջերեսների համառոտ ակնարկ)
Նշում. թարգմ.Բնօրինակ նյութի հեղինակը Զալանդոյից Հենինգ Ջեյքոբսն է։ Նա ստեղծել է նոր վեբ ինտերֆեյս Kubernetes-ի հետ աշխատելու համար, որը դիրքավորվել է որպես «kubectl համացանցի համար»: Ինչու հայտնվեց բաց կոդով նոր նախագիծը և ինչ չափանիշներին չէին բավարարում գոյություն ունեցող լուծումները, կարդացեք նրա հոդվածը:
Այս գրառման մեջ ես վերանայում եմ տարբեր բաց կոդով Kubernetes վեբ ինտերֆեյսները, ներկայացնում եմ իմ պահանջները համընդհանուր UI-ի համար և բացատրում եմ, թե ինչու եմ մշակել Kubernetes WebView — ինտերֆեյս, որը նախատեսված է հեշտացնելու մի քանի կլաստերների միաժամանակյա աջակցությունն ու անսարքությունները:
Օգտագործման դեպքեր
Zalando-ում մենք սպասարկում ենք մեծ թվով Kubernetes օգտվողների (900+) և կլաստերների (100+): Կան մի քանի ընդհանուր օգտագործման դեպքեր, որոնք կշահեն հատուկ վեբ գործիքից.
աջակցության համար գործընկերների հետ շփում;
արձագանքել միջադեպերին և հետաքննել դրանց պատճառները:
Աջակցություն
Իմ փորձով, աջակցության հաղորդակցությունները հաճախ այսպիսին են թվում.
— Օգնեք, մեր XYZ ծառայությունն անհասանելի է:
-Ի՞նչ ես տեսնում, երբ ելույթ ես ունենում kubectl describe ingress ...?
Կամ նման բան CRD-ի համար.
— Ես նույնականացման ծառայության հետ որոշակի խնդիր ունեմ...
- Ի՞նչ է տալիս հրամանը: kubectl describe platformcredentialsset ...?
Նման հաղորդակցությունը սովորաբար հանգեցնում է հրամանի տարբեր տատանումների մուտքագրմանը kubectl խնդիրը բացահայտելու համար։ Արդյունքում, զրույցի երկու կողմերն էլ ստիպված են անընդհատ անցում կատարել տերմինալի և վեբ չաթի միջև, գումարած՝ նրանք դիտարկում են այլ իրավիճակ։
Հետևաբար, ես կցանկանայի, որ Kubernetes վեբ ճակատը թույլ տա հետևյալը.
օգտվողները կարող էին փոխանակել հղումներ և նայիր նույնը.
կօգներ խուսափել մարդկային սխալներից աջակցություն. օրինակ՝ հրամանի տողում սխալ կլաստեր մուտք գործելը, CLI հրամաններում տառասխալներ և այլն;
թույլ կտար ստեղծել ձեր սեփական տեսակետները ուղարկել գործընկերներին, այսինքն՝ ավելացնել պիտակների սյունակներ, ցուցադրել բազմաթիվ տեսակի ռեսուրսներ մեկ էջում.
Իդեալում, այս վեբ գործիքը պետք է թույլ տա ձեզ սահմանել «խորը» հղումներ YAML-ի հատուկ բաժիններին (օրինակ՝ մատնանշելով սխալ պարամետրը, որը խափանումներ է առաջացնում):
Միջադեպի արձագանք և վերլուծություն
Ենթակառուցվածքային միջադեպերին արձագանքելը պահանջում է իրավիճակի իրազեկում, ազդեցությունը գնահատելու և կլաստերներում օրինաչափություններ փնտրելու կարողություն: Որոշ իրական կյանքի օրինակներ.
Կրիտիկական արտադրական ծառայությունը խնդիրներ ունի, և դուք պետք է դա անեք գտեք Kubernetes-ի բոլոր ռեսուրսներն ըստ անունների բոլոր կլաստերներումանսարքությունները վերացնելու համար;
հանգույցները սկսում են ընկնել, երբ մասշտաբով, եւ դուք պետք է գտեք բոլոր կլաստերներում «Սպասող» կարգավիճակով բոլոր պատյաններըգնահատել խնդրի շրջանակը;
առանձին օգտատերերը հայտնում են DaemonSet-ի հետ կապված խնդրի մասին, որը տեղակայվել է բոլոր կլաստերներում և պետք է պարզեն Արդյո՞ք խնդիրը ամբողջական է:.
Նման դեպքերում իմ ստանդարտ լուծումը նման բան է for i in $clusters; do kubectl ...; done. Ակնհայտ է, որ կարող է մշակվել գործիք, որն ապահովում է նմանատիպ հնարավորություններ:
Գոյություն ունեցող Kubernetes վեբ ինտերֆեյսներ
Kubernetes-ի վեբ ինտերֆեյսների բաց կոդով աշխարհը շատ մեծ չէ*, ուստի ես փորձեցի ավելի շատ տեղեկություններ հավաքել՝ օգտագործելով Twitter:
*Իմ բացատրությունը Kubernetes-ի համար սահմանափակ թվով վեբ ինտերֆեյսների համար. ամպային ծառայությունները և Kubernetes վաճառողները սովորաբար առաջարկում են իրենց սեփական ճակատները, ուստի «լավ» անվճար Kubernetes UI-ի շուկան համեմատաբար փոքր է:
Թվիթի միջոցով ես իմացա K8Dash, Կուբերնատոր и Օկտանտ. Եկեք նայենք դրանց և առկա բաց կոդով այլ լուծումներին, փորձենք հասկանալ, թե որոնք են դրանք:
K8Dash Լավ տեսք ունի և արագ է զգում, բայց ունի մի շարք թերություններ վերը թվարկված օգտագործման դեպքերի համար.
Աշխատում է միայն մեկ կլաստերի սահմաններում։
Տեսակավորումը և զտումը հնարավոր են, բայց չունեն մշտական հղումներ:
Հատուկ ռեսուրսների սահմանումների (CRD) աջակցություն չկա:
Կուբերնատոր
«Kubernator-ը այլընտրանքային միջերես է Kubernetes-ի համար: Ի տարբերություն բարձր մակարդակի Kubernetes Dashboard-ի, այն ապահովում է ցածր մակարդակի կառավարում և հիանալի տեսանելիություն կլաստերի բոլոր օբյեկտների նկատմամբ՝ նորերը ստեղծելու, դրանք խմբագրելու և կոնֆլիկտները լուծելու ունակությամբ: Լինելով ամբողջովին հաճախորդի կողմի հավելված (ինչպես kubectl), այն չի պահանջում որևէ այլ հետին պլան, բացի Kubernetes API սերվերից, ինչպես նաև հարգում է կլաստերի մուտքի կանոնները»:
Սա բավականին ճշգրիտ նկարագրություն է Կուբերնատոր. Ցավոք, այն չունի որոշ առանձնահատկություններ.
Ծառայում է միայն մեկ կլաստեր:
Ցանկի դիտման ռեժիմ չկա (այսինքն, դուք չեք կարող ցուցադրել բոլոր բլոկները «Սպասող» կարգավիճակով):
Kubernetes վահանակ
«Kubernetes Dashboard-ը համընդհանուր վեբ ինտերֆեյս է Kubernetes կլաստերների համար: Այն թույլ է տալիս օգտվողներին կառավարել և վերացնել կլաստերի մեջ աշխատող հավելվածները, ինչպես նաև կառավարել հենց կլաստերը»:
Ցավոք սրտի, Kubernetes վահանակ իրականում չի օգնում իմ աջակցության և միջադեպերի արձագանքման գործողություններին, քանի որ դա.
մշտական հղումներ չկան, օրինակ, երբ ես զտում եմ ռեսուրսները կամ փոխում եմ տեսակավորման կարգը.
ըստ կարգավիճակի զտելու հեշտ միջոց չկա, օրինակ՝ տեսեք «Սպասող» կարգավիճակով բոլոր պատյանները.
աջակցվում է միայն մեկ կլաստեր;
CRD-ները չեն աջակցվում (այս հնարավորությունը մշակման փուլում է);
չկան հատուկ սյունակներ (օրինակ՝ ըստ տեսակի պիտակավորված սյունակներ kubectl -L).
Kubernetes գործառնական տեսք (kube-ops-view)
«System Dashboard Observer for K8s Cluster Space»:
У Kubernetes գործառնական տեսք Բոլորովին այլ մոտեցում. այս գործիքը ցույց է տալիս միայն կլաստերային հանգույցներ և պատիճներ՝ օգտագործելով WebGL՝ առանց որևէ տեքստային օբյեկտի մանրամասների: Այն հիանալի է կլաստերի առողջական վիճակի արագ ակնարկի համար (կապակները ընկնում են?)*, բայց այն հարմար չէ վերը նկարագրված աջակցության և միջադեպերի արձագանքման դեպքերի համար:
* Նշում. թարգմ.Այս առումով ձեզ կարող է հետաքրքրել նաև մեր հավելվածը grafana-statusmap, որի մասին մենք ավելի մանրամասն խոսել ենք այս հոդվածը.
«Հավաքեք pod և Kubernetes կլաստերի ռեսուրսների հարցումները, համեմատեք դրանք ռեսուրսների սպառման հետ և ստեղծեք ստատիկ HTML»:
Kubernetes ռեսուրսների հաշվետվություն ստեղծում է ստատիկ HTML հաշվետվություններ ռեսուրսների օգտագործման և ծախսերի բաշխման վերաբերյալ թիմերի/հավելվածների միջև կլաստերներում: Զեկույցը որոշ չափով օգտակար է աջակցության և միջադեպերի արձագանքման համար, քանի որ այն թույլ է տալիս արագ գտնել այն կլաստերը, որտեղ տեղակայված է հավելվածը:
Նշում. թարգմ.Ծառայությունը և գործիքը կարող են օգտակար լինել նաև ամպային մատակարարների միջև ռեսուրսների բաշխման և դրանց ծախսերի մասին տեղեկատվությունը դիտելու համար: Կուբեկոստ, որը մենք վերանայում ենք վերջերս հրապարակված.
Օկտանտ
«Ընդլայնվող վեբ հարթակ մշակողների համար, որը նախատեսված է Kubernetes կլաստերների բարդության ավելի մեծ պատկերացում ապահովելու համար»:
Օկտանտ, որը ստեղծվել է VMware-ի կողմից, նոր արտադրանք է, որի մասին ես համեմատաբար վերջերս եմ իմացել: Նրա օգնությամբ հարմար է ուսումնասիրել կլաստերը տեղական մեքենայի վրա (նույնիսկ վիզուալիզացիաներ կան), բայց այն լուծում է աջակցության և միջադեպերի արձագանքման խնդիրները միայն սահմանափակ չափով։ Octant-ի թերությունները.
Կլաստերային որոնում չկա:
Աշխատում է միայն տեղական մեքենայի վրա (չի տեղակայվում կլաստերի վրա):
Հնարավոր չէ տեսակավորել/զտել օբյեկտները (աջակցվում է միայն պիտակների ընտրիչը):
Դուք չեք կարող նշել հատուկ սյունակներ:
Դուք չեք կարող օբյեկտները թվարկել ըստ անվանատարածքի:
Ես նաև խնդիրներ ունեի Octant-ի կայունության հետ Zalando կլաստերների հետ. որոշ CRD-ների վրա նա ընկնում էր.
Ներկայացնում ենք Kubernetes Web View-ը
«kubectl համացանցի համար»:
Kubernetes-ի համար հասանելի ինտերֆեյսի տարբերակները վերլուծելուց հետո ես որոշեցի ստեղծել նորը. Kubernetes WebView. Ի վերջո, իրականում ինձ ուղղակի ողջ ուժն է պետք kubectl համացանցում, մասնավորապես՝
բոլոր (միայն կարդալու) գործողությունների առկայությունը, որոնց համար օգտվողները նախընտրում են օգտագործել kubectl;
բոլոր URL-ները պետք է լինեն մշտական և ներկայացնեն էջը իր սկզբնական տեսքով, որպեսզի գործընկերները կարողանան դրանք տարածել և օգտագործել այլ գործիքներում.
աջակցություն Kubernetes-ի բոլոր օբյեկտներին, ինչը թույլ կտա լուծել ցանկացած տեսակի խնդիր.
Ռեսուրսների ցուցակները պետք է ներբեռնելի լինեն հետագա աշխատանքի համար (աղյուսակներում, CLI գործիքներում, ինչպիսիք են grep) և պահեստավորում (օրինակ, հետմահուների համար);
աջակցություն՝ ըստ պիտակի ռեսուրսների ընտրության (նման kubectl get .. -l);
տարբեր տեսակի ռեսուրսների համակցված ցուցակներ ստեղծելու ունակություն (նման kubectl get all) գործընկերների միջև ընդհանուր գործառնական պատկեր ստանալու համար (օրինակ՝ միջադեպի արձագանքման ժամանակ).
հատուկ խելացի խորը հղումներ ավելացնելու ունակություն այլ գործիքների, ինչպիսիք են վահանակները, լոգերը, հավելվածների գրանցամատյանները և այլն: հեշտացնել անսարքությունների վերացումը/լուծել սխալները և արձագանքել միջադեպերին.
Frontend-ը պետք է լինի հնարավորինս պարզ (մաքուր HTML), որպեսզի խուսափի պատահական խնդիրներից, ինչպիսիք են սառեցված JavaScript-ը;
մի քանի կլաստերների աջակցություն՝ հեռավոր խորհրդատվության ընթացքում փոխգործակցությունը պարզեցնելու համար (օրինակ՝ միայն մեկ URL հիշելու համար);
Հնարավորության դեպքում իրավիճակային վերլուծությունը պետք է պարզեցվի (օրինակ՝ բոլոր կլաստերների/անունների տարածքների համար ռեսուրսները ներբեռնելու հղումներով);
լրացուցիչ հնարավորություններ՝ ստեղծելու ճկուն հղումներ և ընդգծելու տեքստային տեղեկատվությունը, օրինակ, որպեսզի կարողանաք գործընկերներին ուղղորդել ռեսուրսի նկարագրության որոշակի բաժին (տող YAML-ում);
որոշակի հաճախորդի պահանջներին հարմարեցնելու ունակություն, օրինակ՝ թույլ տալով ստեղծել հատուկ ցուցադրման ձևանմուշներ CRD-ների համար, ձեր սեփական սեղանի դիտումները և փոխել CSS ոճերը.
հրամանի տողում հետագա ուսումնասիրության գործիքներ (օրինակ՝ ամբողջական հրամանների ցուցադրում kubectl, պատրաստ է պատճենահանման);
Kubernetes Web View-ում լուծված առաջադրանքներից դուրս (ոչ գոլեր) մնաց:
Kubernetes օբյեկտների աբստրակցիա;
հավելվածների կառավարում (օրինակ՝ տեղակայման կառավարում, Ղեկի գծապատկերներ և այլն);
գրելու գործողություններ (պետք է կատարվեն անվտանգ CI/CD և/կամ GitOps գործիքների միջոցով);
Ինչպե՞ս է Kubernetes Web View-ն օգնում աջակցության և միջադեպերի արձագանքման հարցում:
Աջակցություն
Բոլոր հղումները մշտական են, ինչը հեշտացնում է գործընկերների հետ տեղեկատվության փոխանակումը:
Դուք կարող եք ստեղծել ձեր գաղափարները, օրինակ, ցուցադրեք բոլոր տեղակայումները և պոդիները հատուկ պիտակով երկու հատուկ կլաստերներում (կլաստերների մի քանի անուններ և ռեսուրսների տեսակներ կարելի է նշել հղման մեջ՝ բաժանված ստորակետերով):
Դուք կարող եք անդրադառնալ հատուկ տողեր YAML ֆայլում օբյեկտ՝ նշելով օբյեկտի ճշգրտման հնարավոր խնդիրները:
Որոնեք ըստ կլաստերների Kubernetes Web View-ում
Միջադեպի արձագանք
Համաշխարհային որոնում(գլոբալ որոնում) թույլ է տալիս որոնել օբյեկտներ բոլոր կլաստերներում:
Ցուցակի դիտումներ կարող է ցուցադրել որոշակի վիճակով/սյունակով բոլոր օբյեկտները բոլոր կլաստերներում (օրինակ, մենք պետք է գտնենք «Սպասող» կարգավիճակով բոլոր պատյանները):
Օբյեկտների ցուցակները կարելի է ներբեռնել ներդիրներով առանձնացված արժեքով (TSV) ձևաչափով՝ հետագա վերլուծության համար:
Իհարկե, ինտերֆեյսը կարող է ավելի լավ լինել, բայց առայժմ Kubernetes Web View-ը գործիք է «առաջադեմ օգտվողների» համար, ովքեր անհրաժեշտության դեպքում չեն խուսափում URL-ի ուղիները ձեռքով շահարկելուց: Եթե ունեք մեկնաբանություններ/հավելումներ/առաջարկություններ, խնդրում ենք կապ հաստատել ինձ հետ Twitter-ում!
Այս հոդվածը նախապատմության համառոտ պատմություն է, որը հանգեցրեց Kubernetes Web View-ի ստեղծմանը: Ավելի շատ կհետևեն: (Նշում. թարգմ.Նրանց պետք է սպասել հեղինակային բլոգ.)