A është e lehtë dhe e rehatshme të përgatisësh një klaster Kubernetes? Njoftojmë addon-operatorin

A është e lehtë dhe e rehatshme të përgatisësh një klaster Kubernetes? Njoftojmë addon-operatorin

Pas shfaqjes shell-operator ne prezantojmĂ« vĂ«llanĂ« e tij mĂ« tĂ« madh — addon-operator. Ky Ă«shtĂ« njĂ« projekt Open Source qĂ« pĂ«rdoret pĂ«r tĂ« instaluar nĂ« njĂ« kluster Kubernetes komponentĂ«t sistemorĂ«, tĂ« cilat mund tĂ« quhen me njĂ« fjalĂ« tĂ« pĂ«rbashkĂ«t — plotĂ«suese.

Përse na nevojiten plotësuese?

Nuk është sekret që Kubernetes nuk është një produkt përfundimtar gjith-in-një, dhe për të ndërtuar një kluster 'të rritur' do të nevojiten plotësuese të ndryshme. Adaptor-operator do të ndihmojë në instalimin, konfigurimin dhe mbajtjen përditësuar të këtyre plotësueseve.

Nevoja pĂ«r komponente shtesĂ« nĂ« kluster Ă«shtĂ« e zbuluar nĂ« raportin kolegu driusha. NĂ« pĂ«rmbledhje, situata me Kubernetes aktualisht Ă«shtĂ« e tillĂ« qĂ« pĂ«r njĂ« instalim tĂ« thjeshtĂ« 'pĂ«r tĂ« provuar' mund tĂ« mjaftohesh me komponentĂ«t e kutisĂ«, pĂ«r zhvilluesit dhe testimin mund tĂ« shtosh Ingress, por pĂ«r njĂ« instalim tĂ« plotĂ«, pĂ«r tĂ« cilin mund tĂ« thuash 'produkti yt Ă«shtĂ« gati', Ă«shtĂ« e nevojshme tĂ« shtosh rreth dhjetĂ« plotĂ«suese tĂ« ndryshme: diçka pĂ«r monitorimin, diçka pĂ«r log-et, mos harro ingress dhe cert-manager, ndaje grupe nodalesh, shto politikat e rrjetit, pĂ«rfundo me konfigurime sysctl dhe autoscaler pĂ«r pod


A është e lehtë dhe e rehatshme të përgatisësh një klaster Kubernetes? Njoftojmë addon-operatorin

Cila është specifika e punës me to?

Si në tregojnë praktikat, një instalim nuk mjafton. Për një funksionim komod me klasterin, do të nevojitet që shtesat të përditësohen, të çaktivizohen (të hiqen nga klasteri), dhe ndoshta do të dëshirohet të testohen para vendosjes në klasterin production.

Ndoshta, mjafton kĂ«tu edhe Ansible? Mund tĂ« jetĂ«. Por shtesat funksionale nĂ« pĂ«rgjithĂ«si nuk jetojnĂ« pa konfigurime. KĂ«to konfigurime mund tĂ« ndryshojnĂ« nĂ« varĂ«si tĂ« llojit tĂ« klasterit (aws, gce, azure, bare-metal, do, 
). Disa konfigurime nuk mund tĂ« vendosen paraprakisht — ato duhet tĂ« merren nga klasteri. Dhe klasteri nuk Ă«shtĂ« statik: pĂ«r disa konfigurime, do tĂ« duhet tĂ« ndjekim ndryshimet. Dhe kĂ«tu Ansible nuk Ă«shtĂ« e mjaftueshme: na nevojitet njĂ« program qĂ« jeton brenda klasterit, domethĂ«nĂ« njĂ« Kubernetes Operator.

Ata që e kanë provuar në praktikë shell-operator, do të thonë se detyrat e instalimit dhe përditësimit të shtesave dhe monitorimi i konfigurimeve mund të zgjidhen fare mirë me hook-esh për shell-operator. Mund të shkruhet një skript, i cili do të bëjë një kusht kubectl aplikoni dhe do të monitorojë, për shembull, ConfigMap, ku do të ruhen konfigurimet. Ajo, në të vërtetë, është realizuar në addon-operator.

Si është organizuar në addon-operator?

Kur krijuam një zgjidhje të re, u bazuam në parimet e mëposhtme:

  • Instaluesi i shtesave duhet tĂ« mbĂ«shtesĂ« shabllonizimin dhe konfigurimin deklarativ. Nuk bĂ«jmĂ« skripte magjike qĂ« instalojnĂ« shtesa. Addon-operator pĂ«rdor Helm pĂ«r tĂ« instalur shtesa. PĂ«r instalimin, duhet tĂ« krijoni njĂ« chart dhe tĂ« pĂ«rzgjidhni vlerat qĂ« do tĂ« pĂ«rdoren pĂ«r konfigurinĂ«.
  • CilĂ«simet mund tĂ« gjenerohen gjatĂ« instalimit, ato mund tĂ« merren nga klasteri, ose tĂ« marrin pĂ«rditĂ«sime, duke ndjekur burimet e klasterit. KĂ«to operacione mund tĂ« realizohen nĂ«pĂ«rmjet hooks.
  • CilĂ«simet mund tĂ« tĂ« ruhen nĂ« klaster. PĂ«r ruajtjen e cilĂ«simeve nĂ« klaster krijohet ConfigMap/addon-operator dhe Addon-operator ndjek ndryshimet e kĂ«tij ConfigMap. Addon-operator ofron qasje nĂ« cilĂ«sime pĂ«r hooks nĂ«pĂ«rmjet marrĂ«veshjeve tĂ« thjeshta.
  • Shtesa varet nga cilĂ«simet. NĂ«se cilĂ«simet ndryshojnĂ«, Addon-operator lĂ«shon Helm-chart me vlerat e reja. Bashkimi i Helm-chart, vlerat pĂ«r tĂ« dhe hooks ne e kemi quajtur modul (shih mĂ« poshtĂ«).
  • Stage-ing. Nuk ka skripte magjike pĂ«r lĂ«shimin. Mekanizmi i pĂ«rditĂ«simeve Ă«shtĂ« i ngjashĂ«m me njĂ« aplikacion normal — mbledhjen e shtesave dhe addon-operator nĂ« njĂ« imazh, etiketimin dhe lĂ«shimin.
  • Kontrolli i rezultatit. Addon-operator ka aftĂ«sinĂ« tĂ« japĂ« metrika pĂ«r Prometheus.

ÇfarĂ« Ă«shtĂ« njĂ« shtesĂ« nĂ« addon-operator?

NjĂ« shtesĂ« mund tĂ« quhet gjithçka qĂ« sjell funksionalitete tĂ« reja nĂ« grumbull. PĂ«r shembull, instalimi i Ingress-it Ă«shtĂ« njĂ« shembull i shkĂ«lqyer i njĂ« shtese. Mund tĂ« jetĂ« çdo operator ose kontrollues me CRD-tĂ« e tij: prometheus-operator, cert-manager, kube-controller-manager, etj. Ose diçka e vogĂ«l, por qĂ« lehtĂ«son operimin — pĂ«r shembull, njĂ« kopjues sekret, qĂ« kopjon sekretet e regjistrit nĂ« hapĂ«sira tĂ« reja emrash, ose njĂ« rregullues sysctl, qĂ« konfiguron parametrat sysctl nĂ« nyje tĂ« reja.

Për realizimin e shtesave, Addon-operator ofron disa koncepte:

  • Helm-chart pĂ«rdoret pĂ«r tĂ« instaluar software tĂ« ndryshĂ«m nĂ« grumbull — pĂ«r shembull, Prometheus, Grafana, nginx-ingress. NĂ«se komponenti i nevojshĂ«m ka njĂ« Helm-chart, atĂ«herĂ« ta instaloje atĂ« me Addon-operator do tĂ« jetĂ« shumĂ« e thjeshtĂ«.
  • Depoja e vlerave. Helm-chart-at zakonisht kanĂ« shumĂ« cilĂ«sime tĂ« ndryshme, tĂ« cilat mund tĂ« ndryshojnĂ« me kalimin e kohĂ«s. Addon-operator mbĂ«shtet ruajtjen e kĂ«tyre cilĂ«simeve dhe di tĂ« ndjekĂ« ndryshimet e tyre, pĂ«r tĂ« riparĂ« Helm-chart-in me vlera tĂ« reja.
  • Hukut — janĂ« skedarĂ« ekzekutivĂ« qĂ« Addon-operator i ekzekuton nĂ« ngjarje dhe qĂ« kanĂ« qasje nĂ« depon e values. Huku mund tĂ« ndjekĂ« ndryshimet nĂ« grup dhe tĂ« pĂ«rditĂ«sojĂ« vlerat nĂ« depon e values. KĂ«shtu, me ndihmĂ«n e hukeve mund tĂ« bĂ«het discovery pĂ«r mbledhjen e vlerave nga grupi nĂ« fillim ose sipas njĂ« programi, madje edhe discovery tĂ« vazhdueshĂ«m, duke mbledhur vlera nga grupi nĂ« pĂ«rputhje me ndryshimet nĂ« grup.
  • Moduli — Ă«shtĂ« njĂ« bashkim i Helm-chart, depo tĂ« values dhe hukeve. Modulet mund tĂ« aktivizohen dhe çaktivizohen. Çaktivizimi i modulit do tĂ« thotĂ« tĂ« fshihen tĂ« gjitha publikimet e Helm-chart. Modulet mund tĂ« pĂ«rfshijnĂ« veten dinamikisht, pĂ«r shembull, nĂ«se tĂ« gjithĂ« modulĂ«t e nevojshĂ«m janĂ« aktivizuar ose nĂ«se discovery nĂ« huke ka gjetur parametrat e nevojshĂ«m — kjo bĂ«het me ndihmĂ«n e njĂ« skripti tĂ« ndihmĂ«s enabled.
  • Huket globale. KĂ«to janĂ« huke "vetĂ«"; ato nuk pĂ«rfshihen nĂ« module dhe kanĂ« qasje nĂ« depo globale tĂ« values, vlerat e tĂ« cilave janĂ« tĂ« disponueshme pĂ«r tĂ« gjithĂ« huke nĂ« module.

Si funksionojnë këto pjesë së bashku? Le të shohim imazhin nga dokumentacioni:

A është e lehtë dhe e rehatshme të përgatisësh një klaster Kubernetes? Njoftojmë addon-operatorin

Ka dy skenarë të funksionimit:

  1. Hoku global aktivizohet nga njĂ« ngjarje — pĂ«r shembull, kur ndryshohet burimi nĂ« klasĂ«r. Ky hoku trajton ndryshimet dhe ruan vlerat e reja nĂ« magazinĂ«n globale tĂ« values. Addon-operator vĂ«ren se magazina globale Ă«shtĂ« ndryshuar dhe aktivizon tĂ« gjithĂ« modulĂ«t. Çdo modul, duke pĂ«rdorur hoku e tij, pĂ«rcakton nĂ«se duhet tĂ« aktivizohet dhe pĂ«rditĂ«son magazinĂ«n e tij tĂ« values. NĂ«se moduli Ă«shtĂ« aktivizuar, atĂ«herĂ« Addon-operatori fillon instalimin e Helm-chart. Helm-chart ka qasje nĂ« vlerat nga magazina e modulit dhe nga magazina globale.
  2. Skema e dytë është më e thjeshtë: hoku modular aktivizohet nga një ngjarje, ndryshon vlerat në magazinën e values të modulit. Addon-operator e vëren këtë dhe aktivizon Helm-chart me vlerat e përditësuara.

Shtesat mund tĂ« realizohen si njĂ« hoku i vetĂ«m ose si njĂ« Helm-chart, ose madje edhe si disa module tĂ« varura — kjo varet nga kompleksiteti i komponentit qĂ« instalohet nĂ« klasĂ«r dhe niveli i nevojshĂ«m i fleksibilitetit tĂ« konfigurimeve. PĂ«r shembull, nĂ« repozitor/examples) ka njĂ« shtesĂ« sysctl-tuner, e cila Ă«shtĂ« e implementuar si njĂ« modul i thjesht me njĂ« hook dhe Helm-chart, si dhe me pĂ«rdorimin e ruajtes sĂ« values, duke mundĂ«suar shtimin e konfigurimeve pĂ«rmes redaktimit tĂ« ConfigMap.

Dërgesa e azhurnimeve

Disa fjalë rreth organizimit të azhurnimeve të komponentëve, të cilat instalon Addon-operator.

Për të nisur Addon-operator në klaster, është e nevojshme të ndërtosh një imazh me shtesat në formë skedari hook dhe Helm-chart, të shtosh skedarin binar addon-operator dhe gjithçka tjetër që nevojitet për hooks: bash, kubectl, jq, python etj. Më pas, ky imazh mund të shpërndahet në klaster si një aplikacion i zakonshëm dhe me siguri do të dëshironit të organizoni një skemë të tillë të etiketimit. Nëse ka pak klasterë, mund të përshtatet të njëjtin qasje si me aplikacionet: lëshimi i ri, versioni i ri, të shkohet në të gjitha klasterët dhe të rregullohet imazhi në Pod'et. Megjithatë, në rastin e shpërndarjes në një numër të konsiderueshëm klasterësh, koncepti i vetë-azhurimit nga kanali është më i përshtatshëm për ne.

Këtu është si është organizuar:

  • Kanali — Ă«shtĂ« nĂ« thelb njĂ« identifikues qĂ« mund tĂ« caktosh çfarĂ«do (pĂ«r shembull, dev/stage/ea/stable).
  • Emri i kanalit Ă«shtĂ« etiketa e imazhit. Kur Ă«shtĂ« e nevojshme tĂ« zhvillohen pĂ«rditĂ«sime nĂ« kanal, krijohet njĂ« imazh i ri dhe etiketuar me emrin e kanalit.
  • Kur nĂ« registry shfaqet njĂ« imazh i ri, Addon-operatori rinis dhe aktivizohet me imazhin e ri.

Kjo nuk është praktika më e mirë, për të cilën është shkruar në dokumentacionin e Kubernetes. Kjo nuk rekomandohet, por bëhet fjalë për një aplikacion të zakonshëm që jeton në një kllaster. Në rastin e Addon-operatorit, aplikacioni është një grup Deployments, të shpërndara nëpër kllastere, dhe vetë-rinovimi ndihmon shumë dhe thjeshton jetën.

Kanalet ndihmojnĂ« gjithashtu nĂ« testim: nĂ«se ka njĂ« kllaster ndihmĂ«s, mund ta konfiguroni atĂ« nĂ« kanal stage dhe tĂ« zhvilloni pĂ«rditĂ«sime nĂ« tĂ« pĂ«rpara se tĂ« lindin nĂ« kanalet ea dhe stable. NĂ«se me kllasterin nĂ« kanal ea ndodh njĂ« gabim, mund ta kaloni atĂ« nĂ« stable, derisa tĂ« hetohet problemi me kĂ«tĂ« kllaster. NĂ«se kllasteri Ă«shtĂ« nxjerrĂ« nga mbĂ«shtetja aktive, ai kalon nĂ« kanalin e tij "tĂ« ngrirĂ«" — pĂ«r shembull, freeze-2019-03-20.

. Përveç përditësimeve të hook-ëve dhe Helm-chart-ëve, mund të jetë e nevojshme të përditësohet edhe një komponent i jashtëm. Për shembull, ju keni vënë re një gabim në node-exporter dhe madje keni menduar se si ta rregulloni atë. Më pas hapni një PR dhe prisni një version të ri për të kaluar nëpër të gjitha klasterët dhe për të rritur versionin e imazhit. Për të mos pritur një kohë të pacaktuar, mund të ndërtosh node-exporter-in tuaj dhe të kalosh te ai derisa PR të miratohet.

Në përgjithësi, kjo mund të bëhet edhe pa Addon-operator, por me Addon-operator moduli për instalimin e node-exporter do të jetë i dukshëm në një depo, Dockerfile për ndërtimin e imazhit tuaj mund të ruhet atje, është më e lehtë për të gjithë pjesëmarrësit që të kuptojnë se çfarë po ndodh... Dhe nëse ka disa klasterë, bëhet më e lehtë si për të testuar PR tuaj, ashtu edhe për të instaluar versionin e ri!

Kjo organizatĂ« e azhurnimeve tĂ« komponentĂ«ve funksionon me sukses pĂ«r ne, por gjithashtu mund tĂ« realizohet çdo skemĂ« tjetĂ«r e pĂ«rshtatshme — sepse nĂ« kĂ«tĂ« rast, Addon-operator Ă«shtĂ« njĂ« skedar i thjeshtĂ« binar.

Përfundimi

Parimet e realizuara në Addon-operator lejojnë që të ndërtohet një proces i qartë për krijimin, testimin, instalimin dhe azhurnimin e plotësimeve në klaster, i ngjashëm me proceset e zhvillimit të aplikacioneve të zakonshme.

Shtesat për Addon-operator në format module (Helm-chart + hooks) mund të publikohen për përdorim të gjerë. Ne, kompania Flant, planifikojmë të publikojmë gjatë verës arritjet tona në formën e këtyre shtesave. Bashkohuni me zhvillimin në GitHub (shell-operator, addon-operator), provoni të krijoni shtesën tuaj mbi shembujt dhe dokumentacion, prisni lajme në Habrë dhe në kanalin tonë në YouTube!

P.S.

Lexoni gjithashtu në blogun tonë:

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