Helmi turvalisus

Looja rÀÀkimine Kubernetes'i kĂ”ige populaarsemast paketihaldurist vĂ”iks kokku vĂ”tta emodĆŸi kaudu:

  • karp — see on Helm (see on kĂ”ige sobivam, mis on viimases emodĆŸide vĂ€ljaandes);
  • lukk — turvalisus;
  • inimene — probleemi lahendus.

Helmi turvalisus

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

  • LĂŒhidalt öeldes, mis on Helm, kui te ei teadnud vĂ”i olete unustanud. Milliseid probleeme ta lahendab ja kus ta ekosĂŒsteemis asub.
  • Vaatame Helm'i arhitektuuri. Ükski arutelu turvalisuse ĂŒle ja selle ĂŒle, kuidas muuta tööriist vĂ”i lahendus turvalisemaks, ei saa toimumata olla komponente arusaamisest.
  • RÀÀgime Helm'i komponentidest.
  • KĂ”ige pĂ”letavam kĂŒsimus — tulevik — uus versioon Helm 3. 

KÔik, mis antud artiklis on, kehtib Helm 2 kohta. See versioon on praegu tootmises ja tÔenÀoliselt kasutasite just seda, milles on turvaprobleemid.

MĂ€ngi videot

Esinejast: Aleksandr Khajurov (allexx) on töötanud arendajana 10 aastat ja aitab sisu parandada Moscow Python Conf++ ja liitus komiteega Helm Summit. Praegu töötab Chainstackis arenduse juhtimise positsioonil — see on hĂŒbriid arendusjuhi ja isiku vahel, kes vastutab lĂ”ppversioonide tarnimise eest. See tĂ€hendab, et ta on seal, kus toimub kĂ”ik alates toote loomise kuni selle kasutuselevĂ”tmiseni.

Chainstack on vĂ€ike, aktiivselt kasvav start-up, mille eesmĂ€rk on anda klientidele vĂ”imalus unustada infrastruktuuri ja jaotatud rakenduste haldamise keerukused, arendustiim asub Singapuris. Ärge paluge Chainstackil mĂŒĂŒa vĂ”i osta krĂŒptovaluutat, vaid pakkuge rÀÀkida ettevĂ”tte plokiahela raamistike ĂŒle, ja teile vastatakse rÔÔmuga.

Helm

See on paketihaldur (chartide) jaoks Kubernetesile. KÔige arusaadavam ja universaalsem viis rakenduste toomiseks Kubernetes'i klastrisse.

Helmi turvalisus

RÀÀgime muidugi struktureeritud ja tööstuslikumast lÀhenemisviisist, mitte oma YAML-manifestide koostamisest ja vÀikeste utiliidide kirjutamisest.

Helm on parim, mis praegu saadaval ja populaarne on.

Miks Helm? Esiteks, sest seda toetab CNCF. Cloud Native on suur organisatsioon, mis on ematÀidise ettevÔtteks Kubernetes'i, etcd, Fluentd ja teiste projektide jaoks.

Teine oluline fakt on see, et Helm on vÀga populaarne projekt. Kui ma jaanuaris 2019 hakkasin mÔtlema, kuidas teha Helmi turvaliseks, oli projektil GitHubis tuhandeid tÀhti. Mais oli neid juba 12 tuhat.

Paljud inimesed on huvitatud Helmist, seega, isegi kui te ei kasuta seda veel, on teadmised selle turvalisuse kohta kasulikud. Turvalisus on oluline.

Helmi pÔhi meeskonda toetab Microsoft Azure, mistÔttu on see projekt suhteliselt stabiilne vÔrreldes paljude teistega. Helm 3 Alpha 2 vÀljalase juuli keskpaiku tÔendab, et projektiga tegeleb piisavalt palju inimesi, kellel on soov ja jÔud Helmi arendamiseks.

Helmi turvalisus

Helm lahendab mitmeid pĂ”hikĂŒsimusi rakenduste haldamises Kuberneteses.

  • Rakenduse pakendamine. I isegi selline rakendus nagu 'Tere, maailm' WordPressis koosneb mitmest teenusest, mida soovitakse koos pakendada.
  • Halduse keerukus, mis tekib nende rakenduste haldamise kĂ€igus.
  • Rakenduse elutsĂŒkkel, mis ei lĂ”pe pĂ€rast rakenduse installimist vĂ”i juurutamist. See elab edasi, seda tuleb vĂ€rskendada, ja Helm aitab selleks tagada Ă”igeid meetmeid ja poliitikaid.

Pakendamine on korraldatud arusaadaval viisil: olemas on metaandmed, mis vastavad tavaliste paketihaldurite tööle Linuxis, Windowsis vÔi MacOS-is. See tÀhendab hoidlat, sÔltuvusi erinevatest paketidest, rakenduste metaandmeid, seadeid, konfigureerimise eripÀrasid, teabe indekseerimist jne. KÔike seda vÔimaldab Helm rakenduste jaoks hankida ja kasutada.

Keerukuse haldamine. Kui teil on palju sarnaseid rakendusi, siis on vajalik parametriseerimine. Sellest tulenevad mallid, kuid et mitte vÀlja mÔelda oma viisi mallide loomiseks, saab kasutada seda, mida Helm pakkuda on.

Rakenduse elutsĂŒkli juhtimine — minu arvates on see kĂ”ige huvitavam ja lahendamata kĂŒsimus. Just sellepĂ€rast tulin ma kunagi Helmi juurde. Me pidime jĂ€lgima rakenduse elutsĂŒklit, soovisime oma CI/CD ja rakenduste tsĂŒklid viia sellesse paradigma.

Helm vÔimaldab:

  • halda juurutusi, tutvustab konfiguratsiooni ja ĂŒlevaate mĂ”istet;
  • edukalt teostada uuendusi;
  • kasutada konksusid erinevatel ĂŒritustel;
  • lisada rakenduste tĂ€iendavaid kontrolle ja reageerida nende tulemustele.

Lisaks Helmil on "aku" — suur hulk maitsvaid asju, mida saab pluginatena lisada, et oma elu lihtsustada. Pluginaid saab kirjutada iseseisvalt, need on piisavalt isoleeritud ja ei vaja keerukat arhitektuuri. Kui soovite midagi rakendada, soovitan teil teha seda plugina vormis ja seejĂ€rel vĂ”imalusel lisada upstream'i.

Helm pÔhineb kolmel peamisel kontseptsioonil:

  • Chart Repo — kirjeldus ja parameetrite massiiv, mis on teie manifesti jaoks vĂ”imalikud. 
  • Konfiguratsioon — see tĂ€hendab vÀÀrtusi, mis rakendatakse (tekst, numbrilised vÀÀrtused jne).
  • Release koondab kaks ĂŒlemist komponenti ning koos nad muutuvad Release'iks. Versioonid on hallatavad, saavutades seelĂ€bi elutsĂŒkli korraldamise: vĂ€ike installimise hetkel ja suur tĂ”stmisel, alandamisel vĂ”i tagasi pööramisel.

Helm'i arhitektuur

Diagrammil on kontseptuaalselt kujutatud Helm'i kÔrgetasemeline arhitektuur.

Helmi turvalisus

Tuletan meelde, et Helm on seotud Kubernetesega. SeetĂ”ttu ei saa me ilma Kubernetes'i klastri (ristkĂŒlik) olema. Kube-apiserver komponent asub masteris. Ilma Helmi on meil Kubeconfig. Helm toob kaasa ĂŒhe vĂ€ikese binaari, kui seda nii nimetada, Helm CLI utiliidi, mis paigaldatakse arvutisse, sĂŒlearvutisse, peamenĂŒĂŒsse — kĂ”ikjale.

Aga sellest ei piisa. Helmil on serveri komponent Tiller. See esindab Helmi huve klastri sees, see on sama rakendus Kubernetes'i klastri sees nagu iga teine.

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

Koostöö

Vaadake, kuidas arhitektuuri komponendid omavahel suhtlevad, kui soovime rakendust Helm'i abil installida.

  • Öeldes Helm install, pöördume hoidla (Chart Repo) poole ja saame Helm chart'i.

  • Helm utiliit (Helm CLI) suhtleb Kubeconfig'iga, et vĂ€lja selgitada, millise klastri poole pöörduda. 
  • Saades selle teabe, pöördub utiliit Tilleri poole, mis asub meie klastris, kui rakendus. 
  • Tiller pöördub Kube-apiserver'i poole, et teostada toiminguid Kubernetes'es, luua objekte (teenuseid, pod'e, replikasid, salajaid jne).

Edasi keerame skeemi keerukamaks, et nĂ€ha rĂŒndevektorit, millega kogu Helm'i arhitektuur kokku puutuda vĂ”ib. SeejĂ€rel proovime seda kaitsta.

RĂŒndevektor

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

Madala privileegiga API-kasutaja vĂ”ib samuti osutuda ohtlikuks, kui ta on kuskil lĂ€hedal. Sellisel kasutajal on kontekst teine, nĂ€iteks vĂ”ib ta olla fikseeritud ĂŒhe klastrisse kuuluva nimede ruumikonfiguratsioonis Kubeconfig.

Huvitavaim rĂŒnnakusuund vĂ”ib olla protsess, mis asub klastris kuskil lĂ€hedal Tiller'ile ja saab sellele juurde pÀÀseda. See vĂ”ib olla veebiserver vĂ”i mikroteenus, mis nĂ€eb klastris mitmerealisi vĂ”rguĂŒmbrust.

Eksootiline, kuid ĂŒha populaarsust koguv rĂŒnnakusuund on seotud Chart Repo'ga. Petlik autor vĂ”ib luua charti, mis sisaldab ebaturvalist ressurssi, ja sa kĂ€ivitad selle, uskudes seda. VĂ”i ta vĂ”ib asendada charti, mida sa allalaadid ametlikust repost, ning nĂ€iteks luua ressursi poliitikate kujul ja saavutada juurdepÀÀsu suurendamine.

Helmi turvalisus

Proovime kaitsta end rĂŒnnakute eest kĂ”igist neljast suunast ja mĂ”ista, kus on probleemid Helm'i arhitektuuris, ja kus neid vĂ”ivad mitte olla.

Suurendame skeemi, lisades rohkem elemente, kuid sÀilitame kÔik pÔhikomponendid.

Helmi turvalisus

Helm CLI suhtleb Chart Repo'ga, suhtles Kubeconfig'iga, töö edastatakse klastrisse komponendile Tiller.

Tiller on esitatud kahe objektiga:

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

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

  • Mehhanism, mille abil Helm CLI pöördub chart repo poole: milline protokoll, kas on autentimine ja mida sellega teha.
  • Protokoll, mille abil Helm CLI, kasutades kubectl'i, suhtleb Tiller'iga. See on RPC-server, mis on paigaldatud klastrisse.
  • Ise Tiller on kergesti kĂ€ttesaadav klastris asuvatele mikroteenustele ja suhtleb Kube-apiserveriga.

Helmi turvalisus

Arutame jÀrjestikku kÔiki neid suundi.

RBAC

On mĂ”ttetu rÀÀkida mingi turvalisuse olemasolust Helm'i vĂ”i mĂ”ne teise teenuse osas klastris, kui RBAC ei ole sisselĂŒlitatud.

Tundub, et see ei ole kĂ”ige vĂ€rskem soovitus, kuid olen kindel, et paljud ei ole RBAC-d isegi tootmises sisselĂŒlitanud, sest see on suur hĂ€da ja vajab palju seadistamist. Sellegipoolest kutsun ĂŒles seda tegema.

Helmi turvalisus

https://rbac.dev/ — advokaadi veebisait RBAC-ile. Seal on kogutud hulk huvitavaid materjale, mis aitavad RBAC-i seadistamisel, nĂ€itavad, miks see on hea ja kuidas sellega ĂŒldiselt tootmises elada.

Proovin selgitada, kuidas Tiller ja RBAC toimivad. Tiller töötab klastris teatud teenusekonto all. Reeglina, kui RBAC ei ole seadistatud, on see superkasutaja. Baaskonfiguratsioonis on Tiller administraator. Just seetĂ”ttu öeldakse tihti, et Tiller on SSH-tunnel teie klastrisse. Tegelikult on see tĂ”si, seega saab kasutada eraldi spetsialiseeritud teenusekontot, mitte Default Service Account'i ĂŒlaltoodud skeemis.

Kui te esmakordselt Helm'i seadistate ja installite selle serverisse, saate mÀÀrata teenusekonto abil --service-account. See vĂ”imaldab kasutada kasutajat, kellel on minimaalne vajalike Ă”iguste kogum. Kahjuks peate looma sellise "sĂŒsteemi": Role ja RoleBinding.

Helmi turvalisus

Kahjuks ei tee Helm seda teie eest. Teie vÔi teie Kubernetes-kliendi administraator peab ette valmistama Role'i ja RoleBinding'i kogumi teenusekonto jaoks, et edastada selle Helm'ile.

KĂŒsimus tekib — mis on erinevus Role'i ja ClusterRole'i vahel? Erinevus seisneb selles, et ClusterRole kehtib kĂ”igi nimespetsiifiliste, erinevalt tavalisest Role'ist ja RoleBinding'ist, mis töötab ainult konkreetses nimespetsiifilises. Poliitika saab seadistada nii kogu klastrile kui ka personaliseeritult iga nimespetsiifilise jaoks eraldi.

Oluline on mainida, et RBAC lahendab veel ĂŒhe suure probleemi. Paljud kurdavad, et Helm ei ole kahjuks multitenantsuse tugi (ei toeta mitme ĂŒĂŒrniku olemasolu). Kui mitu meeskonda kasutavad klastrit ja kasutavad Helmi, on pĂ”himĂ”tteliselt vĂ”imatu seadistada poliitikaid ja piirata nende juurdepÀÀsu selles klastris, kuna on olemas teatud teenusekonto, mille alt Tiller töötab ja loovad tema alt kĂ”ik ressursid klastris, mis on aeg-ajalt vĂ€ga ebamugav. See on tĂ”si — nagu binaarfail, nii ka protsess, Helm Tiller ei mĂ”ista multitenantsust..

Siiski on suurepÀrane viis, kuidas Tillerit klastris mitu korda kÀivitada. Sellega pole mingeid probleme, Tillerit saab kÀivitada igas nimespetsiifilises. Seega vÔite kasutada RBAC-d ja Kubeconfig'i kontekstina, et piirata juurdepÀÀsu spetsiaalsele Helm'ile.

See nÀeb vÀlja jÀrgmiselt.

Helmi turvalisus

NÀiteks on kaks Kubeconfig'i konteksti erinevatele meeskondadele (kaks nimiruumi): X meeskond arendajatele ja administraatori klaster. Administraatoriklastril on laiem Tiller, mis asub Kube-system nimiruumi, seega edasijÔudnud teenusekonto. Ja eraldi nimiruum arendajameeskonnale, kes saavad oma teenuseid spetsiaalsetesse nimiruumi juurutada.

See on toimiv lĂ€henemine, Tiller ei ole nii ressursimahukas, et see vĂ”iks teie eelarvet oluliselt mĂ”jutada. See on ĂŒks kiireid lahendusi.

Ärge kartke seadistada Tiller eraldi ja anda Kubeconfig konteksti meeskonna jaoks, konkreetse arendaja jaoks vĂ”i keskkonna jaoks: Dev, Staging, Production (kahtlane, et kĂ”ik oleks ĂŒhes klastris, kuid see on vĂ”imalik).

JÀtkates meie lugu, liigume RBAC'i juurest edasi ja rÀÀgime ConfigMap'idest.

ConfigMaps

Helm kasutab ConfigMap'e andmete salvestamiseks. Kui me rÀÀkisime arhitektuurist, siis seal ei olnud ĂŒhtegi andmebaasi, kuhu oleks talletatud teavet vĂ€ljalaskude, konfiguratsioonide, tagasiviikude jne kohta. Selleks kasutatakse ConfigMap'e.

ConfigMap'idega on tuntud probleem – need ei ole pĂ”himĂ”tteliselt turvalised, need ei vĂ”imalda salajaste andmete salvestamist. RÀÀgime kĂ”igest, mis ei peaks liikuma kaugemale teenusest, nĂ€iteks paroolid. Praegu on kĂ”ige loomulikum viis Helm jaoks ConfigMap'ide kasutamise asemel liikuda saladuste suunas.

Seda on vĂ€ga lihtne teha. Üksite Tilleri seade ja nĂ€itate, et salvestuseks on saladused. Siis saate iga juurutuse jaoks mitte ConfigMap'i, vaid saladuse.

Helmi turvalisus

VĂ”ite vĂ€ita, et saladused endiselt – kummaline kontseptsioon ja see ei ole vĂ€ga turvaline. Siiski tuleks mĂ”ista, et sellega tegelevad ise Kubernetes'i arendajad. Alates versioonist 1.10, st juba piisavalt pikka aega, on vĂ€hemalt avalikes pilvedes vĂ”imalik liita Ă”ige salvestus saladuste hoidmiseks. Praegu töötab meeskond selle nimel, et veelgi paremini jagada juurdepÀÀsu saladustele, eraldi podidele vĂ”i teistele ĂŒksustele.

Salvestuse Helm on parem ĂŒle viia saladustele ja need omakorda keskses kohas turvata.

Kuid kindlasti jÀÀb andmete salvestamise limiit 1 MB. Helm kasutab siin etcd-d jaotatud salvestusruumina ConfigMap-ide jaoks. Seal arvati, et see on sobiv andmeplokk replikatsioonideks jne. Sellel teemal on huvitav arutelu Redditis, soovitan leida see pÔnev lugemine nÀdalavahetuseks vÔi lugeda kokkuvÔtet. siit.

Chart Repos

Chart'ide osas on sotsiaalne haavatavus kĂ”rge ja need vĂ”ivad saada 'Man in the middle' rĂŒnnakute allikaks, eriti kui kasutatakse vaikimisi lahendust. EelkĂ”ige rÀÀgime repositooriumidest, mis on vĂ€ljas HTTP kaudu.

Kindlasti tuleks Helm Repo avaldada HTTPS-i kaudu — see on parim variant ja ei maksa palju.

Pange tĂ€hele chart'ide allkirjastamise mehhanism. Tehnoloogia on hĂ€mmastavalt lihtne. See on sama, millega tegelete GitHubis, tavaline PGP-masina sĂŒsteem, kus on avalikud ja privaatsed vĂ”tmed. Seadistage see ja olge kindel, omades vajalikke vĂ”tmeid ja allkirjastades kĂ”ike, mis on tĂ”esti teie chart.

Lisaks, Helm klient toetab TLS-i (mitte serveri HTTP mĂ”ttes, vaid vastastikune TLS). Saate kasutada serveri ja kliendi vĂ”tmeid suhtlemiseks. Ausalt öeldes, ma ei kasuta sellist mehhanismi, kuna ma ei armasta vastastikuseid sertifikaate. Üldiselt. chartmuseum — peamine tööriist Helm Repo avaldamiseks Helm 2 jaoks — toetab ka basic auth'i. Basic auth'i saab kasutada, kui see on mugavam ja kindlam.

Veel on olemas plugin helm-gcs, mis vĂ”imaldab Chart Reposid paigutada Google Cloud Storage'i. See on ĂŒsna mugav, töötab suurepĂ€raselt ja on piisavalt turvaline, kuna kasutatakse kĂ”iki eeltoodud mehhanisme.

Helmi turvalisus

Kui aktiveerida HTTPS vÔi TLS, kasutada mTLS-i, aktiveerida basic auth'i, et veelgi riske vÀhendada, saab luua turvalise suhtluse Helm CLI ja Chart Repo vahel.

gRPC API

JĂ€rgmine samm on vĂ€ga vastutustundlik — Tilleri turvamine, mis asub klastris ja on ĂŒhelt poolt server, teiselt poolt pöördub ta teiste komponentide poole ning ĂŒritab esitada end kellegi teise nĂ€ol.

Kuidas ma juba ĂŒtlesin, Tiller on teenus, mis pakub gRPC-d, Helm klient pöördub tema poole gRPC kaudu. Vaikimisi, loomulikult, on TLS vĂ€lja lĂŒlitatud. Miks see on nii — on arutelu kĂŒsimus, mulle tundub, et see on algse seadistamise lihtsustamiseks.

Soovitan aktiveerida TLS gRPC jaoks tootmis- ja isegi staging keskkondades.

Minu arvates, erinevalt mTLS-ist chartide jaoks, on siin see asjakohane ja vĂ€ga lihtne — genereerite PQI infrastruktuuri, loote sertifikaadi, kĂ€ivitate Tilleri ja edastate sertifikaadi initsialiseerimise ajal. PĂ€rast seda saate sooritada kĂ”iki Helm-komande, esitledes genereeritud sertifikaadi ja privaatvĂ”tmega.

Helmi turvalisus

Sel moel kaitsete end kÔikide Tilleri vÀlisklastri pÀringute eest.

Nii oleme kaitsnud ĂŒhenduste kanalit Tilleriga, arutanud RBAC-i ja reguleerinud Kubernetes apiserveri Ă”igusi, vĂ€hendanud domeeni, millega see saab suhelda.

Kaitstud Helm

Vaadakem lÔppscheemi. See on sama arhitektuur samade nooled.

Helmi turvalisus

KĂ”ik ĂŒhendused vĂ”ib nĂŒĂŒd julgelt joonistada roheliseks:

  • Chart Repo puhul kasutame TLS-i vĂ”i mTLS-i ja pĂ”hivolitusi;
  • mTLS Tilleri jaoks, ja see on seatud gRPC-teenusena TLS-iga, kasutame sertifikaate;
  • klastris kasutatakse spetsiaalset teenusekontot koos Rooli ja Rooli seondumisega. 

Oleme oluliselt kaitsnud klastrit, kuid keegi nutikas ĂŒtles:

"Absoluutselt turvaline lahendus vĂ”ib olla ainult ĂŒks — vĂ€lja lĂŒlitatud arvuti, mis asub betoonkastis ja mille ĂŒmber valvavad sĂ”durid."

On erinevaid viise andmete manipuleerimiseks ja uute rĂŒnnakute suundade leidmiseks. Siiski olen kindel, et need soovitused vĂ”imaldavad rakendada pĂ”hieeskirjade industriaalset turvastandardit.

Boonus

See osa ei ole otseselt seotud turvalisusega, kuid on samuti kasulik. NĂ€itan mĂ”ningaid huvitavaid asju, millest vĂ€hesed teavad. NĂ€iteks, kuidas otsida chart'e — ametlikke ja mitte ametlikke.

Repositooriumis github.com/helm/charts praegu on umbes 300 charti ja kaks voogu: stable ja incubator. Need, kes panustavad, teavad hĂ€sti, kui raske on incubatorist stable'isse pÀÀseda ja kui lihtne on stable'ist vĂ€lja kukkuda. Siiski, see ei ole parim tööriist Prometheuse ja kĂ”ike, mis teile meeldib, chartide otsimiseks ĂŒhest lihtsast pĂ”hjusest — see ei ole portaal, kus on mugav pakette otsida.

Kuid on teenus hub.helm.sh, millega chartide leidmine on palju mugavam. KÔige tÀhtsam on, et seal on palju rohkem vÀliseid reposeid ja saadaval on peaaegu 800 charti. Pluss, saate lisada oma repoe, kui mingil pÔhjusel ei soovi oma chart'e stable'isse saata.

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

Soovin veel tÀhelepanu pöörata Open Service Broker API integreerimine. See kÔlab köitvalt ja arusaamatult, kuid lahendab probleeme, millega kÔik kokku puutuvad. Selgitan seda lihtsa nÀite kaudu.

Helmi turvalisus

On olemas Kubernetesi klaster, kus soovime kĂ€ivitada klassikalist rakendust - WordPressi. TĂŒĂŒpiliselt on selleks, et kĂ”ik funktsioonid toimiksid, vajalik andmebaas. On palju erinevaid lahendusi, nĂ€iteks vĂ”ime kĂ€ivitada oma statefull-teenuse. See pole vĂ€ga mugav, kuid paljud teevad just nii.

Teised, nÀiteks meie Chainstack'is, kasutavad hallatavaid andmebaase, nagu MySQL vÔi PostgreSQL, serverite jaoks. SeetÔttu on meil andmebaas kuskil pilves.

Aga tekib probleem: peame ĂŒhendama meie teenuse andmebaasiga, looma andmebaasile flavor'i, edastama credential'id ja neid haldama. KĂ”ik see toimub tavaliselt kĂ€sitsi sĂŒsteemiadministraatori vĂ”i arendaja poolt. Ja pole mingeid probleeme, kui rakendusi on vĂ€he. Kui neid on palju, on vajalik kombain. Selline kombain on olemas - see on Service Broker. See vĂ”imaldab kasutada spetsiaalset pluginit avaliku pilve klastri jaoks ja tellida teenuseid pakkujalt lĂ€bi Brokeri, justkui oleks see API. Selleks saab kasutada Kubernetes'i natiivseid tööriistu.

See on vÀga lihtne. Saate taotleda nÀiteks Azure'is hallatud MySQL-i algtasemel (seda saab konfigureerida). Azure'i API kasutades luuakse andmebaas, mis on kasutamiseks ette valmistatud. Te ei pea sellesse sekkuma, selle eest vastutab plugin. NÀiteks OSBA (Azure'i plugin) annab credential'id teenusele, edastab need Helmile. Te saate kasutada WordPressi pilve MySQL-iga, ega pea muretsema hallatud andmebaaside vÔi statefull-teenuste pÀrast.

VĂ”ib öelda, et Helm on liim, mis ĂŒhelt poolt vĂ”imaldab teenuste paigaldamist ja teiselt poolt - pilvepakkujate ressursside tarbimist.

Saate kirjutada oma plugina ja kasutada kogu seda lugu on-premise. Siis on teil lihtsalt oma plugin ettevÔtte Cloud-pakkujale. Soovitan sellist lÀhenemist proovida, eriti kui teil on suur ulatus ja soovite kiiresti alustada dev-, staging- vÔi kogu infrastruktuuri feature'i jaoks. See lihtsustab teie operations vÔi DevOps'i elu.

Veel ĂŒks leid, mida juba mainisin - see on helm-gcs plugin, mis vĂ”imaldab kasutada Google'i bucket'e (objektide salvestusruum) Helm chartide salvestamiseks.

Helmi turvalisus

Selle kasutuselevÔtmiseks on vaja vaid nelja kÀsku:

  1. installida plugin;
  2. alustada selle kasutamist;
  3. mÀÀra tee bucket'ile, mis asub gcp-s;
  4. avalda chart'id tavalisel viisil.

Ilus on see, et autoriseerimiseks kasutatakse gcp originaalset viisi. Sa vĂ”id kasutada teenusekonto, arendaja kontot – kĂ”ike, mis tahad. See on vĂ€ga mugav ja ei maksa midagi kasutamisel. Kui sa, nagu mina, propageerid opsless-filosoofiat, siis on see eriti mugav, eriti vĂ€ikeste meeskondade jaoks.

Alternatiivid

Helm ei ole ainus lahendus teenuste haldamiseks. Selle kohta on palju kĂŒsimusi, ilmselt seetĂ”ttu tuli ka kiiresti vĂ€lja kolmas versioon. Loomulikult on alternatiive.

Need vÔivad olla nii spetsialiseeritud lahendused, nÀiteks Ksonnet vÔi Metaparticle. Sa vÔid kasutada oma klassikalisi infrastruktuuri haldamise tööriistu (Ansible, Terraform, Chef jne) samade eesmÀrkide jaoks, millest ma rÀÀkisin.

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

Operator Framework on peamine alternatiiv Helm'ile, millele tasub tÀhelepanu pöörata.

See on rohkem natiivne CNCF ja Kubernetes'i jaoks, aga sissepÀÀsutase on oluliselt kÔrgem, tuleb rohkem programmeerida ja vÀhem manifestide kirjeldada.

On erinevaid lisandeid, nagu Draft, Scaffold. Need muudavad elu palju lihtsamaks, nĂ€iteks arendajate jaoks lihtsustavad nad Helm'i saatmise ja kĂ€ivitamise tsĂŒklit testkeskkonna deploimiseks. Ma nimetaksin neid vĂ”imaluste laienditeks.

Siin on selge joonis, mis nÀitab, kus mis asub.

Helmi turvalisus

Rikkus teljel on sinu isiklik kontroll toimuvate ĂŒle, ordinaatide teljel – Kubernetes'e natiivsus. Helm versioon 2 asub kuskil keskel. Versioonis 3 ei ole tohutult muutunud, kuid kontroll ja natiivsus on paranenud. Ksonneti taseme lahendused jÀÀvad isegi Helmi 2-st maha. Siiski tasub neile pilk heita, et nĂ€ha, mis veel selles maailmas olemas on. Loomulikult on sinu konfigureerimise haldur sul kontrolli all, kuid see ei ole absoluutselt natiivne Kubernetes'i jaoks.

Operator Framework on tÀiesti natiivne Kubernetes'i jaoks ja vÔimaldab sellega hallata palju elegantsimalt ja hoolikamalt (kuid pidage meeles sissepÀÀsutaset). Pigem sobib see spetsialiseeritud rakendusele ja selle haldamise loomisele, kui tohutule rakenduste paketile Helm'i abil.

Laiendajad lihtsalt parandavad veidi kontrolli, tÀiustavad töövoogu vÔi kÀrbivad CI/CD torude nurki.

Helm'i tulevik

Hea uudis on see, et Helm 3 on tulemas. On vabastatud Helm 3.0.0-alpha.2 alpha versioon, mida saate proovida. See on piisavalt stabiilne, kuid funktsionaalsus on hetkel piiratud.

Miks on Helm 3 vajalik? Esiteks on see lugu Tilleri kadumisest, nagu osa. See, nagu te juba mÔistate, on tohutu edasiminek, kuna arhitektuuri turvalisuse seisukohalt lihtsustab see kÔike.

Kui Helm 2 loodi, mis toimus Kubernetes 1.8 ajal vĂ”i isegi varem, siis paljud kontseptsioonid polnud veel kĂŒpsed. NĂ€iteks on CRD kontseptsioon praegu aktiivselt kasutusele vĂ”etud ja Helm kavatseb kasutada CRD-d, et salvestada struktuure. Saate kasutada ainult klienti ja mitte pidada serveri osa. Seega on vĂ”imalik kasutada native Kubernetes kĂ€ske struktuuride ja ressursside haldamiseks. See on tohutu edasiminek.

Tuleb toetamine natiivsetele OCI hoidlatele (Open Container Initiative). See on tohutu algatus ja Helm on sellele huvitav peamiselt oma chartide deploimiseks. Asi on isegi selles, et nÀiteks Docker Hub toetab paljusid OCI standardeid. Ma ei ennusta, kuid on vÔimalik, et klassikalised Docker hoidlate pakkujad hakkavad vÔimaldama teil oma Helm chartide majutamist.

Sellel on kahtlane tĂ€hendus — Lua toetamine, nagu templating engine skriptide kirjutamiseks. Ma ei ole suur Lua fĂ€nn, kuid see on tĂ€iesti valikuline vĂ”imalus. Olen seda 3 korda kontrollinud — Lua kasutamine ei ole kohustuslik. Seega, kes tahab, saab kasutada Lua-d, kellele meeldib Go — liituge meie suure laagri ja kasutage go-tmpl selle jaoks.

LĂ” finally lĂ”puks, mida ma kindlasti igatsesin — on skeemi ja andmetĂŒĂŒpide valideerimise kehtestamine. Ei tule rohkem probleeme int vĂ”i string-iga, ei pea enam nulli topelt jutumĂ€rkidesse panema. Ilmub JSONS skeem, mis vĂ”imaldab seda vÀÀrtuste jaoks selgelt kirjeldada.

Kavandatakse tĂ”siseid muudatusi event-driven mudelis. See on juba kontseptuaalselt kirja pandud. Vaadake Helm 3 haru ja nĂ€ete, kui palju sĂŒndmusi, hook'e ja muud, mis oluliselt lihtsustavad ja teiselt poolt lisavad kontrolli deploy protsesside ja nende reaktsioonide ĂŒle.

Helm 3 on lihtsam, turvalisem ja huvitavam mitte sellepÀrast, et me ei armasta Helm 2, vaid seetÔttu, et Kubernetes muutub arenenumaks. Seega vÔib Helm kasutada Kubernetes'i arendusi ja luua selle pÔhjal suurepÀraseid Kubernetes'i haldurid.

Veel head uudiseid on selles, et DevOpsConf Aleksandr Khayorov rÀÀgib, kas konteinerid vĂ”ivad olla turvalised? Tuletame meelde, et arenduse, testimise ja tööprotsesside integreerimise konverents toimub Moskvas 30. septembril ja 1. oktoobril. Kuni 20. augustini on veel vĂ”imalik esitama ettekannet ja jagada oma kogemust probleemide lahendamisel ĂŒhest paljusid DevOps lĂ€henemise ĂŒlesannetest.

Konverentsi ja uudiste jÀlgimiseks vaadake the newsletter ja telegrami kanalist.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster