Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

Më 8 prill në konferencë Saint HighLoad++ 2019, në kuadër të seksionit "DevOps dhe operimi", u shpall referati "Zgjerimi dhe plotësimi i Kubernetes", në krijimin e të cilit morën pjesë tre punonjës të kompanisë "Flant". Në të tregojmë për situatat e shumta ku dëshironim të zgjeronim dhe plotësonim mundësitë e Kubernetes, por për të cilat nuk gjetëm një zgjidhje të gatshme dhe të thjeshtë. Zgjidhjet e nevojshme i gjetëm në formën e projekteve Open Source, të cilave u kushtohet ky performancë.

Sipas traditës, jemi të lumtur të paraqesim video me referatin (50 minuta, shumë më informuese se artikujt) dhe përmbledhjen kryesore në formë tekstual. Le të fillojmë!

Nuk dhe shtesat në K8s

Kubernetes po ndryshon industrinë dhe qasjet ndaj administratës, të cilat kanë qenë prej kohësh të konsoliduara:

  • FalĂ« abstraksioneve, ne nuk veprojmĂ« mĂ« me konceptet si konfigurimi i skedarĂ«ve apo ekzekutimi i komandave (Chef, Ansible
), por pĂ«rdorim grumbujt e kontejnerĂ«ve, shĂ«rbimet etj.
  • Ne mund tĂ« pĂ«rgatisim aplikacione, pa u shqetĂ«suar pĂ«r detajet e platformĂ«s specifike, nĂ« tĂ« cilĂ«n do tĂ« ekzekutohet: bare metal, cloud e njĂ«rit prej ofruesve etj.
  • Me Kubernetes Ă«shtĂ« bĂ«rĂ« mĂ« e lehtĂ« se kurrĂ« mĂ« parĂ« praktikat mĂ« tĂ« mira pĂ«r organizimin e infrastrukturĂ«s: teknikat e shkallĂ«zimit, rimĂ«kĂ«mbjes, qĂ«ndrueshmĂ«risĂ« etj.

Megjithatë, natyrisht, gjithçka nuk është aq e lehtë: me Kubernetes erdhën edhe sfida të reja.

Kubernetes nuk është një kombiner që zgjidh të gjitha problemet e përdoruesve. Nuk është Kubernetes i përgjigjet vetëm një grupi funksionesh minimalisht të nevojshme, që janë të pranishme në çdo klaster:

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

NĂ« themel tĂ« Kubernetes pĂ«rcaktohet grupi bazĂ« i primitivĂ«ve — pĂ«r grupimin e kontejnerĂ«ve, menaxhimin e trafikut etj. MĂ« shumĂ« rreth tyre kemi folur nĂ« raportin e dy vjetĂ«ve mĂ« parĂ«.

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

Nga ana tjetĂ«r, K8s ofron mundĂ«si tĂ« mrekullueshme pĂ«r zgjerimin e funksioneve nĂ« dispozicion, qĂ« ndihmojnĂ« nĂ« pĂ«rmbushjen e nevojave tĂ« tjera — specifike — tĂ« pĂ«rdoruesve. Shtesat nĂ« Kubernetes janĂ« pĂ«rgjegjĂ«si e administratorĂ«ve tĂ« klastereve, tĂ« cilĂ«t duhet tĂ« instalojnĂ« dhe konfiguroni gjithçka tĂ« nevojshme qĂ« klasteri i tyre "tĂ« marrĂ« formĂ«n e duhur" [pĂ«r zgjidhjen e detyrave tĂ« tyre specifike]. ÇfarĂ« janĂ« kĂ«to shtesa? Le tĂ« shqyrtojmĂ« disa shembuj.

Shembujt e shtesave

Pas instalimit tĂ« Kubernetes, mund tĂ« habitemi se rrjeti, i nevojshĂ«m pĂ«r tĂ« mundĂ«suar ndĂ«rveprimin e pod'ave brenda dhe mes nyjeve, vetĂ« nuk funksionon. Kernel-i i Kubernetes nuk garanton lidhjet e nevojshme — pĂ«rkundrazi, ai pĂ«rcakton rrjetin ndĂ«rfaqja (CNI) pĂ«r shtesa tĂ« jashtme. Ne duhet tĂ« instalojmĂ« njĂ« nga kĂ«to shtesa, e cila do tĂ« jetĂ« pĂ«rgjegjĂ«se pĂ«r konfigurimin e rrjetit.

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

Një shembull i ngjashëm janë zgjidhjet për ruajtjen e të dhënave (disku lokal, pajisja e rrjetit të bllokut, Ceph
). Në fillim ato ishin në bërthamë, por me ardhjen e CSI situata ndryshon në një analogji me atë të përshkruar: në Kubernetes, ndërfaqja është e definuar, ndërsa implementimi i saj është në modulet e jashtme.

Mes shembujve të tjerë:

  • Ingress-kontrollerĂ«t (pĂ«rmbledhjen e tyre shihni nĂ« artikullin tonĂ« tĂ« fundit).
  • cert-manager:

    Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

  • OperatorĂ«t — Ă«shtĂ« njĂ« klasĂ« e tĂ«rĂ« shtesash (midis tĂ« cilave Ă«shtĂ« edhe cert-manager), ato pĂ«rcaktojnĂ« primit(e) dhe kontrolluesit. Logjika e funksionimit tĂ« tyre Ă«shtĂ« e kufizuar vetĂ«m nga imagjinata jonĂ« dhe na lejon tĂ« kthejmĂ« komponentĂ«t e gatshĂ«m tĂ« infrastrukturĂ«s (p.sh., DBMS) nĂ« primitive, duke e bĂ«rĂ« mĂ« tĂ« lehtĂ« punĂ«n me to (se sa me njĂ« grup kontejnerĂ«sh dhe cilĂ«simeve tĂ« tyre). Ka shkruar njĂ« sasi tĂ« madhe operatorĂ«sh — megjithĂ«se shumĂ« prej tyre ende nuk janĂ« tĂ« gatshĂ«m pĂ«r prodhim, Ă«shtĂ« vetĂ«m njĂ« çështje kohe:

    Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

  • Metricat — njĂ« ilustrim tjetĂ«r se si nĂ« Kubernetes ndarĂ« ndĂ«rfaqen (Metrics API) nga realizimi (shtesa tĂ« jashtme, si Prometheus adapter, agjent klasteri Datadog
).
  • PĂ«r monitorimit dhe statistikave, ku nĂ« praktikĂ« janĂ« tĂ« nevojshme jo vetĂ«m Prometheus dhe Grafana, por edhe kube-state-metrics, node-exporter etj.

Dhe kjo nuk Ă«shtĂ« lista e plotĂ« e shtesave
 PĂ«r shembull, nĂ« kompaninĂ« «Flant» sot instalojmĂ« 29 shtesa (tĂ« gjitha sĂ« bashku krijojnĂ« 249 objekte Kubernetes). NĂ« mĂ«nyrĂ« tĂ« thjeshtĂ«, ne nuk e shohim jetĂ«n e klasterit pa shtesa.

Automatizimi

Operatorët janë krijuar për automatizimin e operacioneve të zakonshme me të cilat ndeshemi çdo ditë. Këtu janë disa shembuj nga jeta, për të cilat një zgjidhje e shkëlqyer do të ishte shkrimi i një operatori:

  1. Ekziston një registry privat (dmth, që kërkon log in) me imazhe për aplikacionin. Supozohet se çdo pod lidh një sekret të veçantë, duke lejuar autentifikimin në registry. Detyra jonë është të sigurojmë që ky sekret të gjendet në namespace, për të mundësuar që pod-të të shkarkojnë imazhet. Ekzistojnë shumë aplikacione (secili prej të cilave ka nevojë për një sekret), dhe vetë sekretet është e dobishme t'i përditësojmë rregullisht, kështu që opsioni i shpërndarjes fizike të sekreteve përmes duarve bie në këtë rast. Këtu vjen në ndihmë operatori: ne krijojmë një kontrollues që do të presë shfaqjen e namespace-it dhe, me këtë ngjarje, do të shtojë sekretin në namespace.
  2. Leja qĂ«, si parazgjedhje, qasja nga pod’ët nĂ« internet Ă«shtĂ« e ndaluar. Por ndonjĂ«herĂ« ajo mund tĂ« jetĂ« e nevojshme: Ă«shtĂ« logjike qĂ« mekanizmi i lejes sĂ« qasjes tĂ« funksionojĂ« thjesht, pa kĂ«rkuar aftĂ«si specifike — pĂ«r shembull, nĂ« bazĂ« tĂ« pranisĂ« sĂ« njĂ« etikete tĂ« caktuar nĂ« hapĂ«sirĂ«n emĂ«rtuese. Si do tĂ« na ndihmojĂ« kĂ«tu operatori? Krijohet njĂ« kontrollues qĂ« pret shfaqjen e njĂ« etikete nĂ« hapĂ«sirĂ«n emĂ«rtuese dhe shton politikĂ«n pĂ«r qasje nĂ« internet.
  3. Një situatë e ngjashme: le të supozojmë se na nevojitet të shtojmë një taint, nëse ka një etiketë të ngjashme (me ndonjë prefiks). Veprimet me operatorin janë të qarta...

Në çdo klaster duhet të zgjidhen detyra rutinë, dhe duhet të bëhet nëpërmjet operatorëve.

Duke e përmbledhur të gjitha historitë e përshkruara, ne arritëm në përfundimin se për një punë komode në Kubernetes nevojitet: a) të instalohen shtesa, b) të zhvillohen operatorë (për zgjidhjen e detyrave të përditshme administrative).

Si të shkruani një operator për Kubernetes?

Në përgjithësi skema është e thjeshtë:

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)


 por këtu zbulohet se:

  • API i Kubernetes Ă«shtĂ« njĂ« gjĂ« mjaft e ndĂ«rlikuar, e cila kĂ«rkon kohĂ« tĂ« konsiderueshme pĂ«r t'u mĂ«suar;
  • programimi nuk Ă«shtĂ« pĂ«r tĂ« gjithĂ« (gjuha Go Ă«shtĂ« zgjedhur si e preferuar, sepse ka njĂ« framework tĂ« veçantĂ« — Operator SDK);
  • situata Ă«shtĂ« e ngjashme me framework-un si tĂ« tillĂ«.

PĂ«rfundimi: pĂ«r tĂ« shkruar njĂ« kontrollues (operatori) Ă«shtĂ« e nevojshme tĂ« investosh burime tĂ« konsiderueshme pĂ«r tĂ« studiuar materien. Kjo do tĂ« ishte e arsyeshme pĂ«r "operatorĂ«t e mĂ«dhenj" — le tĂ« themi, pĂ«r DBMS MySQL. Por nĂ«se e kujtojmĂ« shembujt tuaj tĂ« pĂ«rmendur (shpĂ«rndarja e sekretĂ«ve, aksesin e pod-eve nĂ« internet...), tĂ« cilat duam gjithashtu t’i bĂ«jmĂ« siç duhet, do tĂ« kuptojmĂ« se pĂ«rpjekjet e shpenzuara do tĂ« tejkalojnĂ« rezultatin e nevojshĂ«m tani:

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

I gjithĂ« kjo krijon njĂ« dilemĂ«: tĂ« shpenzosh shumĂ« burime dhe tĂ« fitosh mjete tĂ« duhura pĂ«r tĂ« shkruar operatorĂ«t ose tĂ« veprosh "siç bĂ«hej mĂ« parĂ«" (por shpejt). PĂ«r ta zgjidhur kĂ«tĂ« — gjetjen e njĂ« kompromisi midis kĂ«tyre ekstremisht — ne krijuam projektin tonĂ«: shell-operator (shih gjithashtu njoftimin e tij tĂ« mĂ«parshĂ«m nĂ« habr).

Shell-operator

Si funksionon ai? NĂ« klaster ka njĂ« pod, nĂ« tĂ« cilĂ«n ndodhet bineri Go me shell-operator. PranĂ« tij ruhet njĂ« grup hook-esh (mĂ« shumĂ« rreth tyre — shih mĂ« poshtĂ«). VetĂ« shell-operatori abonon nĂ« disa ngjarje nĂ« API-nĂ« Kubernetes, kur ndodhin ato ai aktivizon thirrjet pĂ«rkatĂ«se.

Si e kupton shell-operatori se cilat thirrje të bëjë në cilat ngjarje? Këtë informacion e japin vetë thirrjet shell-operatorit dhe e bëjnë këtë shumë thjeshtë.

Një thirrje është një skenar në Bash ose një skedar tjetër ekzekutues që mbështet një argument të vetëm --config dhe në përgjigje të tij jep JSON. Ky i fundit përcakton cilët objekte e interesojnë dhe për cilat ngjarje (për këto objekte) duhet të reagojnë:

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

Do e ilustroj realizimin nĂ« shell-operator me njĂ« nga shembujt tanĂ« — shpĂ«rndarja e sekreteve pĂ«r qasje nĂ« njĂ« registry privat me imazhe aplikacionesh. Ajo pĂ«rbĂ«het nga dy etapa.

Praktika: 1. Shkruajmë thirrjen

SĂ« pari, nĂ« thirrje do tĂ« trajtojmĂ« --config, duke treguar se na interesojnĂ« namespace-t, nĂ« veçanti — momenti i krijimit tĂ« tyre:

[[ $1 == "--config" ]] ; pastaj
  cat << EOF
{
  "onKubernetesEvent": [
    {
      "kind": "namespace",
      "event": ["add"]
    }
  ]
}
EOF



Si do të duket logjika? Edhe kjo mjaft e thjeshtë:



ndryshe
  createdNamespace=$(jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH)
  kubectl create -n ${createdNamespace} -f - << EOF
Lloji: Sekret
...
EOF
fi

Hapi i parĂ« Ă«shtĂ« tĂ« kuptojmĂ« se cili namespace Ă«shtĂ« krijuar, dhe hapi i dytĂ« — krijojmĂ« pĂ«rmes kubectl sekretit pĂ«r kĂ«tĂ« hapĂ«sirĂ« emĂ«rtimi.

Praktika: 2. Krijimi i imazhit

Na mbetet tĂ« transferojmĂ« hook-un e krijuar te shell-operatori — si ta bĂ«jmĂ« kĂ«tĂ«? Shell-operatori ofrohet si njĂ« imazh Docker, kĂ«shtu qĂ« detyra jonĂ« Ă«shtĂ« tĂ« shtojmĂ« hook-un nĂ« njĂ« katalog tĂ« posaçëm nĂ« kĂ«tĂ« imazh:

FROM flant/shell-operator:v1.0.0-beta.1
ADD my-handler.sh /hooks

Tani duhet ta ndërtojmë dhe ta push-ojmë:

$ docker build -t registry.example.com/my-operator:v1 .
$ docker push registry.example.com/my-operator:v1

Prekja pĂ«rfundimtare — tĂ« deplojmĂ« imazhin nĂ« klasĂ«r. PĂ«r kĂ«tĂ« do tĂ« shkruajmĂ« Deployment:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-operator
spec:
  template:
    spec:
      containers:
      - name: my-operator
        image: registry.example.com/my-operator:v1 # 1
      serviceAccountName: my-operator              # 2

Në të nevojitet të kushtohet vëmendje dy pikave:

  1. përcaktimi i imazhit të sapokrijuar;
  2. ky është një komponent sistemik, i cili (të paktën) kërkon të ketë të drejta për të regjistruar ngjarje në Kubernetes dhe për të shpërndarë sekretet sipas namespace-ve, prandaj krijojmë për hook-un një ServiceAccount (dhe një set rregullash).

Rezultati — ne zgjidhĂ«m problemin tonĂ« nĂ« mĂ«nyrĂ«n e tij pĂ«r Kubernetes, duke krijuar njĂ« operator pĂ«r shpĂ«rndarjen e sekreteve.

Mundësitë e tjera të shell-operatorit

Për të kufizuar objektet e llojit tuaj të zgjedhur, me të cilat do të punojë hook-u, ato mund të filtrohen, duke përzgjedhur sipas etiketave të caktuara (ose me anë të matchExpressions):

"onKubernetesEvent": [
  {
    "selector": {
      "matchLabels": {
        "foo": "bar",
       },
       "matchExpressions": [
         {
           "key": "allow",
           "operation": "In",
           "values": ["wan", "warehouse"],
         },
       ],
     }
     

  }
]

Parashikuar mekanizmi i deduplikimit, i cili — me anĂ« tĂ« filtrit jq — lejon transformimin e JSON-eve tĂ« mĂ«dha nĂ« tĂ« vogla, ku mbeten vetĂ«m ato parametra pĂ«r ndryshimin e tĂ« cilĂ«ve dĂ«shirojmĂ« tĂ« ndjekim.

Kur thirret hook, shell-operator i kalon të dhënat për objektin, të cilat mund të përdoren për nevojat e ndryshme.

Ngjarjet gjatë të cilave thirren hook-et nuk janë të kufizuara në ngjarjet e Kubernetes: në shell-operator parashikohet mbështetje për thirrjen e hook-ve në kohë (sa njësoj si crontab në planifikuesin tradicional), si dhe ngjarje të veçanta onStartup. Të gjitha këto ngjarje mund të kombinohen dhe të caktohen për të njëjtin hook.

Dhe dy veçori të tjera të shell-operator:

  1. Ai punon asinhron. Nga momenti i marrjes së ngjarjes Kubernetes (p.sh., krijimi i një objekti) në klaster, mund të ndodhin edhe ngjarje të tjera (p.sh., fshirja e të njëjtit objekt), dhe kjo duhet të merret parasysh në hooks. Nëse hook-u përfundon me gabim, atëherë për default ai do të ri-thirret deri në përfundim të suksesshëm (kjo sjellje mund të ndryshohet).
  2. Ai eksporton metrika për Prometheus, me të cilat mund të kuptohet nëse shell-operatori funksionon, të dihet numri i gabimeve për çdo hook dhe madhësia aktuale e radhës.

Duke përmbledhur këtë pjesë të raportit:

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

Instalimi i shtesave

Për një punë të rehatshme me Kubernetes, u përmend gjithashtu nevoja për instalimin e shtesave. Për këtë do të flas në shembullin e rrugës së kompanisë tonë për mënyrën si e bëjmë këtë tani.

PunĂ«n me Kubernetes e filluam me disa klasterĂ«, me shtesĂ«n e vetme qĂ« ishte Ingress. NĂ« çdo klaster, ai duhej tĂ« instalohej ndryshe, dhe ne bĂ«mĂ« disa konfigurime YAML pĂ«r mjedise tĂ« ndryshme: bare metal, AWS


KlasterĂ«t po bĂ«heshin mĂ« shumĂ« — mĂ« shumĂ« po rriteshin edhe konfigurimet. PĂ«r mĂ« tepĂ«r, ne pĂ«rmirĂ«suam kĂ«to konfigurime, duke bĂ«rĂ« qĂ« ato tĂ« bĂ«heshin mjaft tĂ« ndryshme:

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

Për të vendosur gjithçka në rregull, ne filluam me skriptin (install-ingress.sh), i cili merrte si argument tipin e klasterit në të cilin do të shpërndaheshim, gjeneronte konfigurimin YAML të nevojshëm dhe e hapte atë në Kubernetes.

Në përmbledhje, rruga jonë e mëtejshme dhe mendimet që lidhen ishin si më poshtë:

  • pĂ«r tĂ« punuar me konfigurimet YAML nevoja pĂ«r njĂ« modelues (nĂ« fazat e para ky ishte njĂ« sed i thjeshtĂ«);
  • me rritjen e numrit tĂ« klasterĂ«ve erdhi nevoja pĂ«r pĂ«rditĂ«sim automatik (zgjidhja mĂ« e hershme — e vendosĂ«m skriptin nĂ« Git, e pĂ«rditĂ«sojmĂ« dhe e ekzekutojmĂ« me cron);
  • njĂ« skript i ngjashĂ«m ishte i domosdoshĂ«m pĂ«r Prometheus (install-prometheus.sh), megjithatĂ« ai Ă«shtĂ« i njohur pĂ«r faktin se kĂ«rkon shumĂ« mĂ« shumĂ« tĂ« dhĂ«na hyrĂ«se, si dhe ruajtjen e tyre (duke qenĂ« nĂ« mĂ«nyrĂ«n e duhur — tĂ« centralizuara dhe nĂ« klaster), pĂ«r mĂ« tepĂ«r disa tĂ« dhĂ«na (fjalĂ«kalimet) mund tĂ« gjeneroheshin automatikisht:

    Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

  • rreziku pĂ«r tĂ« shpĂ«rndarĂ« diçka tĂ« gabuar nĂ« njĂ« numĂ«r nĂ« rritje klasterĂ«sh po rritej vazhdimisht, prandaj e kuptuam se instalueseve (dmth. dy skripteve: pĂ«r Ingress dhe Prometheus) iu nevojitet njĂ« skenĂ« (disa degĂ« nĂ« Git, disa cron pĂ«r pĂ«rditĂ«simin e tyre nĂ« pĂ«rkatĂ«sitĂ«: stabile ose testuese — nĂ« klasterĂ«);
  • me kubectl aplikoni u bĂ« e vĂ«shtirĂ« tĂ« punosh, sepse ai nuk Ă«shtĂ« deklarativ dhe di vetĂ«m tĂ« krijojĂ« objekte, por jo tĂ« marrĂ« vendime pĂ«r statusin e tyre / t'i fshijĂ« ato;
  • na kanĂ« munguar disa funksione qĂ« ne nĂ« atĂ« kohĂ« nuk i kishim realizuar fare:
    • kontroll tĂ« plotĂ« tĂ« rezultatit tĂ« pĂ«rditĂ«simit tĂ« klasterĂ«ve,
    • pĂ«rkufizimin automatik tĂ« disa parametrave (input pĂ«r skriptet e instalimit) duke u bazuar nĂ« tĂ« dhĂ«nat qĂ« mund tĂ« merren nga klasteri (discovery),
    • nĂ« zhvillimin e tij logjik nĂ« formĂ«n e zbulimit tĂ« vazhdueshĂ«m.

E gjithĂ« kjo pĂ«rvojĂ« e akumuluar e kemi zbatuar nĂ« kuadĂ«r tĂ« njĂ« projekti tjetĂ«r tonin — addon-operator.

Addon-operator

Në themel të tij është shell-operatori, i përmendur më parë. E gjithë sistemi duket si më poshtë:

Ngjiten me shell-operatorin:

  • depoja e vlerave,
  • Helm-chart,
  • komponenti, i cili monitoron depozitat e vlerave dhe — nĂ« rast tĂ« çdo ndryshimi — kĂ«rkon nga Helm tĂ« ri-deploy çartin.

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

KĂ«shtu, mund tĂ« reagojmĂ« ndaj njĂ« ngjarjeje nĂ« Kubernetes, tĂ« aktivizojmĂ« njĂ« hook, dhe nga ky hook — tĂ« bĂ«jmĂ« ndryshime nĂ« depozitĂ«, pas tĂ« cilave do tĂ« ri-deploy çarti. NĂ« skemĂ«n e rezultuar kemi ndarĂ« njĂ« grup hooks dhe çart nĂ« njĂ« komponent, tĂ« cilin e quajmĂ« modul:

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

Mundësi të shumta modulash janë të mundshme, dhe për to ne shtojmë hooks globale, një depo globale values dhe një komponent që e monitoron këtë depo globale.

Tani, kur diçka ndodh në Kubernetes, ne mund të reagojmë përmes një hook-u global dhe të ndryshojmë diçka në depo globale. Ky ndryshim do të vërehet dhe do të sjellë përditësimin e të gjithë moduleve në klaster:

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

Ky skemë i përmbush të gjitha kërkesat për instalimin e shtesave që u përmendën më lart:

  • PĂ«r templating dhe deklarativitetin Ă«shtĂ« pĂ«rgjegjĂ«s Helm.
  • Problemi i auto-update Ă«shtĂ« zgjidhur falĂ« njĂ« hook-u global, i cili sipas njĂ« grafiku kontrollon registry-nĂ« dhe, nĂ«se sheh njĂ« imazh tĂ« ri sistemi atje, e ri-instalon atĂ« (dmth. "vetveten").
  • Ruajtja e cilĂ«simeve nĂ« klaster Ă«shtĂ« realizuar me anĂ« tĂ« ConfigMap, nĂ« tĂ« cilin janĂ« shkruar tĂ« dhĂ«nat fillestare pĂ«r depozitat (nĂ« fillim ato ngarkohen nĂ« depo).
  • Problemet e gjenerimit tĂ« fjalĂ«kalimeve, discovery dhe continuous discovery janĂ« zgjidhur me anĂ« tĂ« hook-Ă«ve.
  • Stage-imi Ă«shtĂ« arritur falĂ« etiketave qĂ« Docker i mbĂ«shtet nga kutia.
  • Kontrolli i rezultatit bĂ«het pĂ«rmes metrikave, me tĂ« cilat mund tĂ« kuptojmĂ« statusin.

E gjithë kjo sistem është realizuar në formën e një binar të vetëm në Go, i cili mori emrin addon-operator. Falë kësaj, struktura duket më e thjeshtë:

Zgjerimi dhe plotësimi i Kubernetes (përmbledhje dhe video e referatit)

Komponenti kryesor në këtë strukturë është një grup modulash (të shënuar me ngjyrë gri në fund). Tani mund të shkruajmë një modul për shtesën e nevojshme me pak përpjekje dhe të jemi të sigurt se do të instalohet në çdo klaster, do të përditësohet dhe do të reagojë ndaj ngjarjeve që i nevojiten në klaster.

«Flant» përdor addon-operator në 70+ klasterë Kubernetes. Statusi aktual është version alfa. Tani po përgatisim dokumentacionin për të lëshuar betën, ndërsa në depo janë në dispozicion shembuj, mbi bazën e të cilëve mund të krijoni addon-in tuaj.

Ku mund të marr modulat e vetë addon-operator? Publikimi i bibliotekës tonë është faza tjetër për ne, ne planifikojmë ta bëjmë këtë verë.

Video dhe prezentime

Video nga prezantimi (~50 minuta):

Luaj videon

Prezantimi i referatit:

P.S.

Referate të tjera në blogun tonë:

Mund t'ju interesojnë edhe këto publikime:

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster