Helmi turvalisus

Lugu kÔige populaarsema paketihalduri Kubernetes'e jaoks vÔiks kirjeldada emoji-de abil:

  • kast — see on Helm (see on kĂ”ige sobivam emoji viimasest vĂ€ljaandest);
  • lukk — turvalisus;
  • inimene — probleemide lahendamine.

Helmi turvalisus

Tegelikkuses on kĂ”ik natuke keerulisem, ning jutt on tĂ€is tehnilisi ĂŒksikasju sellest, kuidas teha Helm turvaliseks.

  • LĂŒhidalt, mis on Helm, kui te ei teadnud vĂ”i olete unustanud. Milliseid probleeme see lahendab ja kus see ekosĂŒsteemis asub.
  • Vaadakem Helmi arhitektuuri. Ükski vestlus turvalisusest ja sellest, kuidas muuta tööriist vĂ”i lahendus turvalisemaks, ei saa mööda minna komponendi arhitektuuri mĂ”istmisest.
  • Arutame Helmi komponente.
  • KĂ”ige pĂ”letavam kĂŒsimus — tulevik — uus versioon Helm 3. 

Kogu see artikkel puudutab Helm 2. See versioon on hetkel tootmises ja tÔenÀoliselt just seda te kasutate, ning just selles on turvariskid.

Vaata videot

Esinejast: Aleksandr Khayorov (allexx) on arendusega seotud olnud 10 aastat, aitab parandada sisu Moscow Python Conf++ ja liitus Helm Summit. Praegu töötab Chainstackis arenduse juhtimispositsioonil, mis on hĂŒbriid arendusjuhi ja final release delivery inimese vahel. See tĂ€hendab, et ollakse seal, kus toimub kĂ”ik toote loomise ja kĂ€itamise vahel.

Chainstack on vĂ€ike, kiiresti kasvav idufirma, mille eesmĂ€rk on anda klientidele vĂ”imalus unustada infrastruktuuri ja keerukused, mis on seotud detsentraliseeritud rakenduste haldamisega. Arendustiim asub Singapuris. Ärge paluge Chainstackil mĂŒĂŒa vĂ”i osta krĂŒptovaluutat, vaid pakkuge vĂ”imalust arutada ettevĂ”tte blockchain raamistikke, ja neile vastatakse rÔÔmuga.

Helm

See on pakihaldur (chart) Kubernetes jaoks. KÔige arusaadavam ja universaalsem viis rakenduste toomiseks Kubernetes klastrisse.

Helmi turvalisus

RÀÀgime selgelt struktureerituma ja tööstuslikuma lÀhenemise poole, mitte ainult oma YAML-manifestide loomise ja vÀikeste utiliitide kirjutamise suunas.

Helm on hetkel parim ja populaarne valik, mis on kergesti kÀttesaadav.

Miks Helm? Esiteks seetÔttu, et seda toetab CNCF. Cloud Native on suur organisatsioon, mis on Kubernetes, etcd, Fluentd ja teiste projektide emafirma.

Teine oluline fakt on see, et Helm on vÀga populaarne projekt. Kui ma jaanuaris 2019 alles mÔtlesin, kuidas Helm'i turvaliseks muuta, oli projektil GitHub'is tuhat tÀhte. Maiks oli neid juba 12 tuhat.

Paljud inimesed on huvitatud Helm'ist, seega, isegi kui te pole seda veel kasutanud, on teadmised selle turvalisusest kasulikud. Turvalisus on oluline.

Helm'i peamist meeskonda toetab Microsoft Azure, mistĂ”ttu on see ĂŒsna stabiilne projekt, erinevalt paljusid teistest. Helm 3 Alpha 2 vĂ€ljalaskmine juuli keskpaiku tĂ”endab, et projekti kallal töötab piisavalt palju inimesi, kes soovivad ja suudavad Helmi arendada ja tĂ€iustada.

Helmi turvalisus

Helm lahendab mitu pÔhihalduse probleemi Kubernetes'is rakenduste haldamisel.

  • Rakenduse paketiseerimine. I isegi "Hello, World" tĂŒĂŒp rakendus WordPressis koosneb mitmest teenusest, mida tahaks kokku pakendada.
  • Keskendumine keerukuse haldamisele, mis tuleneb nende rakenduste juhtimisest.
  • ElutsĂŒkli ei lĂ”ppe pĂ€rast rakenduse installimist vĂ”i juurutamist. See jĂ€tkab elu, vajab vĂ€rskendamist, ning selles aitab Helm, tuues Ă”igeid meetmeid ja poliitikaid.

Pakendamine on korraldatud arusaadavalt: metainformatsioon on tÀielikus kooskÔlas tavapÀraste Linuxi, Windowsi vÔi MacOSi pakendihaldurite tööl. See tÀhendab, et on olemas hoidla, sÔltuvused erinevatest pakettidest, rakenduste metainformatsioon, seadistused, konfiguratsiooni eripÀrad, informatsiooni indekseerimine jne. KÔik see on Helmiga saadaval ja rakenduste jaoks kasutatav.

Kasutusmugavuse juhtimine. Kui teil on palju sarnaseid rakendusi, on vajalik parameetriseerimine. Sellest tulenevad mallid, kuid et mitte leiutada omi mallide loomise meetodeid, saab kasutada seda, mida Helm pakub.

Rakenduste elutsĂŒkli haldamine — minu arvates on see kĂ”ige huvitavam ja lahendamatu kĂŒsimus. Just seetĂ”ttu tulin ma Helm’i juurde. Me peame jĂ€lgima rakenduse elutsĂŒklit, soovisime viia oma CI/CD ja rakenduste tsĂŒklid sellesse paradigmasse.

Helm vÔimaldab:

  • deploide hallata, toob sisse konfiguratsiooni ja revisjoni mĂ”isted;
  • edukalt teostada rollback;
  • kasutada erinevate sĂŒndmuste jaoks hook'e;
  • lisada rakendustele tĂ€iendavaid kontrollpunkte ja reageerida nende tulemustele.

Lisaks on Helm'il "aku" — tohutu hulk maitsvaid asju, mida saab pluginatena sisse lĂŒlitada, muutes elu lihtsamaks. Pluginaid on vĂ”imalik iseseisvalt kirjutada, need on piisavalt isoleeritud ega nĂ”ua keerulist arhitektuuri. Kui soovite midagi ellu viia, soovitan teha seda pluginana ja seejĂ€rel vĂ”imalusel lisada upstream'i.

Helm pÔhineb kolmel peamisel kontseptsioonil:

  • Chart Repo — kirjeldus ja parameetrite massiiv, mis on teie manifestile vĂ”imalikud. 
  • Konfiguratsioon — see tĂ€hendab vÀÀrtusi, mis rakendatakse (tekst, numbrilised vÀÀrtused jne).
  • Release koondab kaks ĂŒlemist komponenti, ning koos need muutuvad Release'iks. VĂ€ljalaskeid saab versioonida, saavutades seelĂ€bi elutsĂŒkli korralduse: vĂ€ike paigaldamise hetkel ja suur vĂ€rskendamise, allapoole viimise vĂ”i rollback'i hetkel.

Helmi arhitektuur

Scheemil on kontseptuaalselt esitatud Helmi kÔrgetasemeline arhitektuur.

Helmi turvalisus

Tulet meelde, et Helm on seotud Kubernetesega. SeetĂ”ttu vajame Kubernetes-klassi (ristkĂŒlikut). Komponent kube-apiserver asub masteris. Ilma Helmita on meil Kubeconfig. Helm toob endaga kaasa vĂ€ikese binaarse utiliidi, mida nimetatakse Helm CLI, mis installitakse arvutisse, sĂŒlearvutisse, peamisse vĂ”i kuhu iganes.

Kuid sellest ei piisa. Helmil on serveri komponent Tiller. See esindab Helmi klastris, olles rakendus, mis asub Kubernetes-klastris, nagu iga teinegi.

JĂ€rgmine komponent on Chart Repo – chartide hoidla. On ametlik hoidla ja vĂ”ib olla ka ettevĂ”tte vĂ”i projekti privaatne hoidla.

Koostoime

Vaadakem, kuidas arhitektuuri komponendid omavahel suhtlevad, kui soovime rakendust Helmiga installida.

  • Me ĂŒtlem Helm install, ĂŒhendame hoidla (Chart Repo) ja saame Helm-charti.

  • Helmi utiliit (Helm CLI) suhtleb Kubeconfigiga, et vĂ€lja selgitada, millise klastri poole pöörduda. 
  • Saades selle teabe, pöördub utiliit Tilleri poole, mis asub meie klastris, rakendusena. 
  • Tiller suunab Kube-apiserverile, et teostada toiminguid Kuberneteses, luua erinevaid objekte (teenuseid, pod'e, replikaid, salajasi jne).

SeejĂ€rel keerame skeemi keerulisemaks, et nĂ€ha rĂŒnnakusuundi, millega kogu Helm arhitektuur kokku puutub. Ja siis pĂŒĂŒame seda kaitsta.

RĂŒnnakusuund

Esimene potentsiaalselt nĂ”rk koht — privileegitud API—kasutaja. Skeemi kohaselt on see hĂ€kker, kes on saanud administraatori juurdepÀÀsu Helm CLI-le.

Privileegita API-kasutaja vÔib samuti ohtuda, kui ta on kuskil lÀheduses. Sellisel kasutajal on erinev kontekst, nÀiteks vÔib ta olla seotud teatud namespace'iga klastris Kubeconfigi seadetes.

KĂ”ige huvitavam rĂŒnnakusuund vĂ”ib olla protsess, mis asub klastris kuskil lĂ€hedal Tillerile ja saab sellele juurdepÀÀsu. See vĂ”ib olla veebiserver vĂ”i mikroteenus, mis nĂ€eb klastrivĂ”rgu keskkonda.

Eksootiline, kuid kiiresti populaarsust koguv rĂŒnne on seotud Chart Repo'ga. VÀÀrkasutaja loodud chart vĂ”ib sisaldada ebaturvalisi ressursse, ja te vĂ”ite selle tĂ”siselt vĂ”tta. VĂ”i siis vĂ”ib see asendada chart'i, mille te laadite alla ametlikust hoidlast, ja nĂ€iteks luua ressurssi poliitikate nĂ€ol ning endale juurdepÀÀsu suurendada.

Helmi turvalisus

PĂŒĂŒame kaitsta end rĂŒnnakute eest kĂ”igist neljast suunast ja analĂŒĂŒsida, kus on Helmi arhitektuuris probleemid ning kus vĂ”ib-olla neid pole.

Suurendame skeemi, lisame rohkem komponente, kuid sÀilitame kÔik pÔhielemendid.

Helmi turvalisus

Helm CLI suhtub Chart Repo'sse, suhtleb Kubeconfig'i kaudu, töö edastatakse klastrisse komponendi Tiller kaudu.

Tiller on esindatud kahe objektiga:

  • Tiller-deploy svc, mis pakub teatud teenust;
  • Tiller-deploy pod (skeemil ĂŒhes eksemplaris ĂŒhes replikas), kus koormus töötab ja mis pöördub klastrisse.

Suhtlemiseks kasutatakse erinevaid protokolle ja skeeme. Turvalisuse seisukohalt on meile kÔige huvitavamad:

  • Mehhanism, millega Helm CLI pöördub chart repo'sse: milline on protokoll, kas on olemas autentimine ja mida sellega teha saab.
  • Protokoll, mille kaudu Helm CLI suhtleb Tilleriga, kasutades kubectl'i. See on RPC-server, mis on paigaldatud klastrisse.
  • Ise Tiller on ligipÀÀsetav mikroteenustele, mis asuvad klastris, ja suhtleb Kube-apiserveriga.

Helmi turvalisus

Arutame neid kÔiki suundi jÀrjekorras.

RBAC

Pole mÔtet rÀÀkida Helm'i vÔi muu teenuse turvalisusest klastris, kui RBAC ei ole lubatud.

Tundub, et see ei ole kĂ”ige vĂ€rskem soovitus, kuid olen kindel, et paljud pole RBAC'i isegi tootmises lubanud, kuna see on suur vaev ja nĂ”uab palju seadistamist. Siiski kutsun ĂŒles seda tegema.

Helmi turvalisus

https://rbac.dev/ — veebileht RBAC'i kohta. Seal on kogutud tohutul hulgal huvitavat materjali, mis aitab RBAC'i seadistada, nĂ€itab, miks see on hea ja kuidas sellega tootmises elada.

PĂŒĂŒan selgitada, kuidas Tiller ja RBAC töötavad. Tiller töötab klastri sees mingi teenusekonto alt. Reeglina, kui RBAC pole seadistatud, on see superkasutaja. Algses konfiguratsioonis on Tiller administraator. Just seetĂ”ttu rÀÀgitakse sageli, et Tiller on SSH-tunnel teie klastrisse. Tegelikult on see nii, seega on vĂ”imalik kasutada eraldi spetsialiseeritud teenusekontot Default Service Account'i asemel ĂŒlaltoodud skeemis.

Kui te algatate Helm'i, installides seda esmakordselt serverisse, saate mÀÀrata teenusekonto, kasutades --service-account. See vÔimaldab kasutada kasutajat, kellel on minimaalne vajalik Ôiguste paket. TÔsi, peate looma sellise "pÀrja": Role ja RoleBinding.

Helmi turvalisus

Kahjuks ei tee Helm seda teie eest. Teie vÔi teie Kubernetes klastri administraator peab eelnevalt ette valmistama Role'd ja RoleBinding'i teenusekonto jaoks, et edastada Helm'ile.

KĂŒsimus on — milles seisneb erinevus Role ja ClusterRole vahel? Erinevus on selles, et ClusterRole kehtib kĂ”igi namespaces, erinevalt tavalisest Role ja RoleBinding'ist, mis töötab ainult spetsialiseeritud namespace'is. Poliitikaid saab seadistada nii kogu klastri kui ka individuaalselt iga namespace'i jaoks.

Tasub mainida, et RBAC lahendab veel ĂŒhe suure probleemi. Paljud kurdavad, et Helm ei toeta multitenancy't (mitmeĂŒĂŒrilisust). Kui mitu meeskonda kasutavad klastri ja Helm'i, ei ole vĂ”imalik seadistada poliitikaid ega piirata nende ligipÀÀsu selle klastri piires, kuna helm töötab teenusekonto kaudu ja loob sellest kĂ”ik ressursid klastri sees, mis mĂ”nikord on vĂ€ga ebamugav. See on tĂ”si — nagu binaarfail, nagu protsess. Helm Tiller ei mĂ”ista multitenancy't..

Kuid on olemas suurepÀrane vÔimalus, mis vÔimaldab Tillerit klastris mitu korda kÀivitada. Sellega ei ole mingeid probleeme, Tillerit saab kÀivitada igas namespace'is. Nii saate kasutada RBAC-d, Kubeconfig'i konteksti ja piirata juurdepÀÀsu spetsiaalsele Helmile.

See nÀeb vÀlja jÀrgmiselt.

Helmi turvalisus

NÀiteks on kaks Kubeconfig'i konteksti erinevate meeskondade jaoks (kaks namespace'i): X Team arendajate meeskonnale ja administraatori klaster. Administratiivsel klastril on oma laiem Tiller, mis asub Kube-system namespace'is, seega edasijÔudnud teenusekontoga. Ja eraldi namespace arendajate meeskonnale, kes saavad oma teenuseid eraldi namespace'is deployida.

See on tĂ”hus lĂ€henemine, Tiller ei ole nii ressursinĂ”udlik, et see vĂ”iks teie eelarvet tĂ”siselt mĂ”jutada. See on ĂŒks kiiremaid lahendusi.

Ärge kartke seadistada Tiller eraldi ja anda Kubeconfig koos konteksti meeskonnale, konkreetsele arendajale vĂ”i keskkonnale: Dev, Staging, Production (on ebatĂ”enĂ€oline, et kĂ”ik oleks ĂŒhes klastris, kuid seda on vĂ”imalik teha).

JÀtkates meie lugu, liigume edasi RBAC-lt ja rÀÀgime ConfigMapsist.

ConfigMaps

Helm kasutab ConfigMaps andmete salvestamiseks. Kui me rÀÀkisime arhitektuurist, siis seal ei olnud andmebaasi, kus hoida teavet vÀljaannete, konfiguratsioonide, tagasi vÔtmiseks ja muu kohta. Selle jaoks kasutatakse ConfigMaps'i.

ConfigMaps'iga seonduv peamine probleem on tuntud — need ei ole pĂ”himĂ”tteliselt turvalised, neis ei saa hoida tundlikke andmeid. See puudutab kĂ”ike, mis ei peaks minema kaugemale teenusest, nĂ€iteks paroole. Helm jaoks on kĂ”ige loomulikum viis praegu liikuda ConfigMaps'i kasutamiselt saladuste (secrets) suunas.

Seda on vĂ€ga lihtne teha. Ümberdefineerite Tilleri seadistuse ja mÀÀrate, et salvestamiseks on saladused. Siis saate igal juurutamisel mitte ConfigMap'i, vaid salajase (secret).

Helmi turvalisus

VĂ”ite vĂ€ita, et saladused ise on kummaline kontseptsioon ja see ei ole eriti turvaline. Siiski, tuleb mĂ”ista, et sellega tegelevad Kubernetes'i arendajad ise. Alates versioonist 1.10, st ĂŒsna ammu, on vĂ€hemalt avalikes pilvedes olemas vĂ”imalus ĂŒhendada Ă”ige salvestus ruum saladuste hoidmiseks. Praegu töötab meeskond selle nimel, et veelgi paremini jagada juurdepÀÀsu saladustele, eraldi podidele vĂ”i muudele ĂŒksustele.

Storage Helm on parem tÔlkida saladusteks, mis omakorda tuleb tsentraliseeritult kaitsta.

Loomulikult jÀÀb andmete salvestuslimiit 1 MB. Helm kasutab siin etcd-d jaotatud salvestusena ConfigMapide jaoks. Seal arvati, et see on sobiv andmechunk replikatsioonideks ja nii edasi. Selle kohta on huvitav arutelu Redditis, soovitan leida see mÔnus lugemine nÀdalavahetuseks vÔi lugeda kokkuvÔtet. siin.

Chart Repos

Chardid on kĂ”ige sotsiaalselt haavatavad ja vĂ”ivad saada "mehe keset" rĂŒnnaku allikaks, eriti kui kasutada default lahendust. Esiteks rÀÀgime HTTP kaudu eksponeeritud repositooriumidest.

Selgelt tuleb Helm Repo eksponeerida HTTPS-i kaudu — see on parim variant ja ei maksa palju.

Pange tĂ€hele chartide allkirjastamise mehhanismi. Tehnoloogia on ĂŒllatavalt lihtne. See on sama, mida kasutate GitHubis, tavaline PGP mehhanism avalike ja privaatsete vĂ”tmetega. Seadistage see ja saate olla kindel, et omades Ă”igeid vĂ”tmeid allkirjastate kĂ”ik, mis on tĂ”epoolest teie chart.

Lisaks toetab Helm-klient TLS-i. (mitte HTTP serveri poolt, vaid vastastikune TLS). Saate kasutada serveri ja kliendi vĂ”tmeid suhtlemiseks. Pean ausalt ĂŒtlema, et ma ei kasuta sellist mehhanismi, kuna ei care vastastikute sertifikaatide vastu. ÜhesĂ”naga, chartmuseum — peamine tööriist Helm Repo eksponeerimiseks Helm 2 jaoks — toetab ka baasauthentimist. Baasauthentimist saab kasutada, kui see on mugavam ja rahulikum.

On ka plugin helm-gcs, mis vĂ”imaldab paigutada Chart Repos Google Cloud Storage'isse. See on ĂŒsna mugav, töötab hĂ€sti ja on piisavalt Đ±Đ”Đ·ĐŸĐżĐ°ŃĐœĐŸ, kuna kĂ”ik kirjeldatud mehhanismid on aktiveeritud.

Helmi turvalisus

Kui aktiveerida HTTPS vĂ”i TLS, kasutada mTLS, sisse lĂŒlitada baasauthentimine, et veelgi vĂ€hendada riske, saab turvalise suhtluskanaali Helm CLI ja Chart Repo vahel.

gRPC API

JĂ€rgmine samm on vĂ€ga vastutustundlik — kaitsta Tilleri, mis asub klastris ja on ĂŒhelt poolt server, teiselt poolt — pöördub ta teiste komponentide poole ja proovib esindada kedagi.

Nagu ma juba ĂŒtlesin, Tiller on teenus, mis pakub gRPC-d, Helm-klient pÀÀseb sellele gRPC kaudu juurde. Vaikimisi on TLS loomulikult vĂ€lja lĂŒlitatud. Miks see nii on — see on vaieldav kĂŒsimus, kuid arvan, et see lihtsustab algse seadistamise protsessi.

Soovitan angaĆŸerluse ja isegi staging’i jaoks TLS gRPC-s sisse lĂŒlitada.

Minu arvates, erinevalt mTLS-ist chartide puhul, on see siin asjakohane ning teostatakse vĂ€ga lihtsalt — genereerite PQI infrastruktuuri, loote sertifikaadi, kĂ€ivitate Tilleri, edastate sertifikaadi initsialiseerimise kĂ€igus. PĂ€rast seda saab tĂ€ita kĂ”ik Helm-kĂ€sud, kasutades genereeritud sertifikaati ja privaatvĂ”tmen.

Helmi turvalisus

Nii kaitsete end kÔikide Tilleri vÀlisklusteri pÀringute eest.

Nii oleme kaitsnud ĂŒhenduskanali Tilleriga, arutanud RBAC-i ja seadnud Kubernetes apiserveri Ă”igused korda, vĂ€hendanud domeeni, millega see suudab suhelda.

Kaitstud Helm

Vaatame lÔppskeemi. See on sama arhitektuur sama noolekujuga.

Helmi turvalisus

KĂ”ik ĂŒhendused vĂ”ib nĂŒĂŒd julgelt kujutada rohelisega:

  • Chart Repo puhul kasutame TLS-i vĂ”i mTLS-i ja basic auth'i;
  • mTLS Tilleri jaoks, ja see on gRPC teenusena vĂ€lja pakutud koos TLS-iga, kasutame sertifikaate;
  • klassis kasutatakse spetsiaalset teenusekontot koos Rolli ja Rolli sidumisega. 

Oleme mĂ€rkimisvÀÀrselt turvanud klastri, kuid keegi tark ĂŒtles:

„Ainus tĂ€iesti ohutu lahendus on vĂ€lja lĂŒlitatud arvuti, mis asub betoonkastis ja mida kaitsevad sĂ”durid.”

Andmete manipuleerimiseks ja uute rĂŒnnakuvektorite leidmiseks on erinevaid viise. Kuid ma olen kindel, et need soovitused vĂ”imaldavad rakendada pĂ”hitasemel tööstuslikku turvastandardit.

Boonus

See osa ei ole otseselt seotud turvalisusega, kuid on samuti kasulik. NĂ€itan mĂ”ningaid huvitavaid asju, millest paljud ei tea. NĂ€iteks, kuidas otsida graafikuid – ametlikke ja mitte ametlikke.

Repo github.com/helm/charts on praegu umbes 300 graafikut ja kaks voogu: stable ja incubator. Need, kes panustavad, teavad hĂ€sti, kui raske on incubator'ist stable'i jĂ”uda ja kui lihtne on stable'ist vĂ€lja kukkuda. Kuid see ei ole parim tööriist, et otsida graafikuid Prometheus'e ja kĂ”ike muud, mis sulle meeldib, ĂŒhe lihtsa pĂ”hjuse tĂ”ttu – see ei ole portaal, kus oleks mugav pakette otsida.

Kuid on teenus hub.helm.sh, millega on graafikute leidmine palju mugavam. Peamine, et seal on palju rohkem vĂ€liseid hoidlaid ja saadaval on peaaegu 800 graafikut. Lisaks saate oma hoidla ĂŒhendada, kui te mingil pĂ”hjusel ei soovi oma graafikuid stable'i saata.

Proovige hub.helm.sh ja arendame seda koos. See teenus on Helm-projekti all ja saate panustada isegi selle kasutajaliidesesse, kui olete frontend arendaja ja soovite lihtsalt vÀlimust parandada.

Soovin veel teie tÀhelepanu juhtida Open Service Broker API integratsioon. See vÔib tunduda keeruline ja arusaamatu, kuid lahendab probleeme, millega kÔik silmitsi seisavad. Selgitan lihtsa nÀitega.

Helmi turvalisus

On Kubernetes klaster, kus soovime kĂ€ivitada klassikalist rakendust - WordPressi. Üldiselt on tĂ€ieĂ”iguslikkuseks vajalik andmebaas. On palju erinevaid lahendusi, nĂ€iteks saate kĂ€ivitada oma statefull-teenuse. See ei ole vĂ€ga mugav, kuid paljud teevad seda.

Teised, nÀiteks meie Chainstackis, kasutavad hallatavaid andmebaase, nagu MySQL vÔi PostgreSQL, serverite jaoks. Seega on meie andmebaasid kuskil pilves.

Kuid problema on see, et meie teenus tuleb ĂŒhendada andmebaasiga, luua andmebaasi flavor, edastada volitused ja hallata neid kuidagi. KĂ”ik see tehakse tavaliselt kĂ€sitsi sĂŒsteemiadministraatori vĂ”i arendaja poolt. Ja probleemi ei ole, kui rakendusi on vĂ€he. Kui neid on palju, on vaja kombaini. Selline kombain on olemas — see on Service Broker. See vĂ”imaldab kasutada spetsiaalset plugina avaliku pilve klastrile ja tellida ressursse teenusepakkujalt Brokeri kaudu, nagu oleks see API. Selleks vĂ”ib kasutada Kubernetes'e natiivseid tööriistu.

See on vĂ€ga lihtne. NĂ€iteks saab taotleda Azure'is Hallatud MySQL pĂ”hitasemel (seda saab seadistada). Azure'i API abil luuakse ja valmistatakse andmebaas kasutamiseks ette. Te ei pea sekkuma, selle eest vastutab plugin. NĂ€iteks OSBA (Azure'i plugin) tagastab volitused teenusele ja edastab need Helm'ile. Saate kasutada WordPressi koos pilvepĂ”hise MySQL'iga, tegelemata hallatud andmebaasidega ja muretsemata stateful teenuste ĂŒle.

VĂ”ib öelda, et Helm toimib liimina, mis ĂŒhest kĂŒljest vĂ”imaldab teenuseid juurutada ja teisest kĂŒljest tarbida pilveteenuse pakkujate ressursse.

Saate kirjutada oma plugina ja kasutada kogu seda infrastruktuuri on-premise. Siis on teil lihtsalt oma plugin ettevÔtte pilveteenuse pakkujaga. Soovitan proovida sellist lÀhenemist, eriti kui teie ulatus on suur ja soovite kiiresti hÀÀlestada dev, staging vÔi kogu infrastruktuuri funktsiooni jaoks. See lihtsustab teie operations vÔi DevOpsi elu.

Veel ĂŒks leid, millest olen juba rÀÀkinud — see on plugin helm-gcs, mis vĂ”imaldab kasutada Google'i bucket'e (objekthoidlat), et salvestada Helm'i graafikud.

Helmi turvalisus

Selle kasutamise alustamiseks on vaja ainult nelja kÀsku:

  1. paigaldada plugin;
  2. algatada see;
  3. mÀÀrata tee bucket'ile, mis asub gcp-s;
  4. avalikustada graafikud standardsel viisil.

Ilus on see, et GCP autoriseerimiseks kasutatakse natiivset meetodit. Saate kasutada teenusekontot, arendajate kontot — kĂ”ike, mis sobib. See on vĂ€ga mugav ja ei maksa midagi kasutuses. Kui te, nagu mina, toetate opsless filosoofiat, siis on see vĂ€ga mugav, eriti vĂ€ikeste meeskondade jaoks.

Alternatiivid

Helm ei ole ainus lahendus teenuste haldamiseks. Selle kohta on palju kĂŒsimusi ja tĂ”enĂ€oliselt seetĂ”ttu on kiiresti ilmunud kolmas versioon. Loomulikult on ka alternatiive.

Need vÔivad olla nii spetsialiseeritud lahendused, nagu Ksonnet vÔi Metaparticle, kui ka teie klassikalised infrastruktuuri haldamise tööriistad (Ansible, Terraform, Chef jne), et saavutada samu eesmÀrke, millest ma rÀÀkisin.

LÔpuks on olemas lahendus Operator Framework, mille populaarsus kasvab.

Operator Framework on peamine alternatiiv Helmile, millele tasub tÀhelepanu pöörata.

See on CNCF ja Kubernetesiga palju loomulikum, aga sisenemiskĂŒnnis on oluliselt kĂ”rgem, vajab rohkem programmeerimist ja vĂ€hem manifeste kirjeldamist.

On erinevaid lisasid, nagu Draft, Scaffold. Need muudavad elu oluliselt lihtsamaks, nĂ€iteks arendajatele, vĂ€hendades Helm'i saatmise ja testkeskkonna kĂ€ivitamise tsĂŒklit. Nimetaksin neid vĂ”imaluste laiendajateks.

Siin on selge diagramm, kus on esitatud erinevad asukohad.

Helmi turvalisus

X-teljel on teie isikliku kontrolli tase, Y-teljel on Kubernetes'i natiivsuse tase. Helm versioon 2 asub kuskil keskel. Versioonis 3 pole suuri muutusi, kuid nii kontroll kui natiivsuse tase on paranenud. Ksonneti taseme lahendused jÀÀvad siiski isegi Helm 2-le alla. Siiski tasub neid vaadata, et nÀha, mida veel selles maailmas leidub. Loomulikult on teie konfiguratsioonihaldur teie kontrolli all, kuid see pole Kubernetes'ile tÀiesti natiivne.

Operator Framework on tÀiesti natiivne Kubernetes'ile ning vÔimaldab seda hallata palju elegantselt ja tÀpselt (aga pidage meeles sisenemistaset). Pigem sobib see spetsialiseeritud rakenduste haldamiseks, mitte massiliseks rakenduste pakendamise kombinatsiooniks Helmiga.

TÀpsemad laiendused parandavad lihtsalt veidi kontrolli, tÀiendavad töövoogu vÔi vÀhendavad CI/CD pipeline'ide nurki.

Helmi tulevik

Hea uudis on see, et on saabumas Helm 3. Helm 3.0.0-alpha.2 beetaversioon on juba vÀlja antud ja seda saab proovida. See on piisavalt stabiilne, kuid funktsionaalsus on hetkel piiratud.

Miks on vajalik Helm 3? Esiteks on see lugu Tilleri kadumisest, kui komponendi. See, nagu te juba aru saanud olete, on suur edasimineku samm, kuna arhitektuuri turvalisuse vaates muutub kÔik lihtsamaks.

Helm 2 loomise ajal, mis toimus Kubernetes 1.8 vÔi isegi varem, olid paljud kontseptsioonid veel arendamata. NÀiteks on CRD kontseptsioon praegu aktiivselt juurutamisel, ja Helm hakkab kasutama CRD, et hoida struktuure. On vÔimalik kasutada ainult klienti ja mitte hoida serveripoolset osa. Vastavalt sellele saavad kasutada natiivseid Kubernetes'i kÀske struktuuride ja ressurssidega töötamiseks. See on suur edasiminek.

Ilmub natiivsete OCI repositooriumide (Open Container Initiative) tugi. See on suur algatus ja Helm on sellest huvitatud eeskĂ€tt selleks, et paigutada oma chart'id. Seda toetab isegi Docker Hub, mis toetab paljusid OCI standardeid. Ma ei ĂŒtle, et see kindlasti juhtub, aga vĂ”ib-olla klassikalised Docker repositooriumide pakkujad hakkavad vĂ”imaldama teil oma Helm chart'e paigutada.

Minu jaoks on vaieldav teema — see on Lua toimetamine, kui templating engine skriptide kirjutamiseks. Ma ei ole vĂ€ga suur Lua fĂ€nn, kuid see on tĂ€iesti valikuline vĂ”imalus. Olen seda kolm korda kontrollinud — Lua kasutamine ei ole kohustuslik. Seega, kes soovib, vĂ”ib kasutada Lua, kes armastab Go — liituge meie suure laagriga ja kasutage go-tmpl selleks.

LĂ”puks, mida ma tĂ”eliselt igatsesin — see on skeemide ilmumine ja andmetĂŒĂŒpide valideerimine. Probleemid int vĂ”i stringiga on kadunud, ei ole enam vaja nulli topeltjutumĂ€rkidesse panna. Tekib JSONS-skeem, mis vĂ”imaldab seda vÀÀrtuste selgelt kirjeldada.

Seda sĂŒndmustepĂ”hist mudeliton tugevasti ĂŒmber töötatud. See on juba kontseptuaalselt kirjeldatud. Vaadake Helm 3 haru ja nĂ€ete, kui palju sĂŒndmusi ja haake on lisatud, mis oluliselt lihtsustab ja samas annab rohkem kontrolli juurutamise protsesside ja nende reageerimise ĂŒle.

Helm 3 on lihtsam, turvalisem ja huvitavam mitte sellepÀrast, et me ei armasta Helm 2, vaid seetÔttu, et Kubernetes areneb edasi. Vastavalt sellele saab Helm kasutada Kubernetes'i arendusi ja luua selle pÔhjal suurepÀraseid juhte Kubernetes'i jaoks.

Veel ĂŒks hea uudis on see, et DevOpsConf Aleksandr Khayorov rÀÀgib, kas konteinerid vĂ”ivad olla ohutud? Tuletame meelde, et arengute, testimise ja kasutuselemise protsesside integreerimise konverents toimub Moskvas 30. septembril ja 1. oktoobril. Kuni 20. augustini on veel vĂ”imalik esituda ettekanne ja jagada oma kogemusi ĂŒhe paljude DevOps lĂ€henemise probleemide lahendamisega.

Konverentsi ja uudiste jÀlgimiseks liitu uudiskirjaga ja telegrami kanaliga.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster