Helm-sÀkerhet

KÀrnan i berÀttelsen om den mest populÀra paketchefen för Kubernetes kan beskrivas med hjÀlp av emojis:

  • lĂ„dan – det Ă€r Helm (det mest passande som finns i den senaste Emoji-versionen);
  • lĂ„s – sĂ€kerhet;
  • mĂ€nniska – lösningen pĂ„ problemet.

Helm-sÀkerhet

I sjÀlva verket kommer det att vara lite mer komplicerat, och berÀttelsen Àr full av tekniska detaljer om hur man gör Helm sÀkert.

  • Kort sagt, vad Ă€r Helm, om du inte visste eller glömde det. Vilka problem löser den och var ligger den i ekosystemet.
  • LĂ„t oss titta pĂ„ Helm-arkitekturen. Ingen diskussion om sĂ€kerhet och hur man kan göra ett verktyg eller en lösning mer sĂ€ker kan passera utan att förstĂ„ komponentens arkitektur.
  • Vi kommer att diskutera Helm-komponenter.
  • Den mest brĂ€nnande frĂ„gan – framtiden – den nya versionen Helm 3. 

Allt i denna artikel handlar om Helm 2. Den versionen Àr för nÀrvarande i produktion och det Àr troligtvis den du anvÀnder just nu, och det Àr i den som det finns sÀkerhetshot.

Spela video

Om talaren: Alexander Khayorov (allexx) har arbetat med utveckling i 10 Ă„r och hjĂ€lper till att förbĂ€ttra innehĂ„llet Moscow Python Conf++ och gick med i kommittĂ©n Helm Summit. Just nu arbetar han pĂ„ Chainstack som utvecklingsledare – en hybrid mellan en utvecklingsledare och en som ansvarar för leverans av slutprodukter. Det vill sĂ€ga, han befinner sig pĂ„ slagfĂ€ltet dĂ€r allt hĂ€nder frĂ„n produktens skapelse till dess drift.

Chainstack Àr en liten, vÀxande startup vars uppgift Àr att ge kunder möjlighet att glömma infrastrukturen och svÄrigheterna att driva decentraliserade applikationer, utvecklingsteamet Àr baserat i Singapore. Be inte Chainstack att sÀlja eller köpa kryptovaluta, utan föreslÄ att prata om företagsramverken för blockchain, sÄ kommer de gÀrna att svara.

Helm

Detta Àr en paketchef (diagram) för Kubernetes. Det mest förstÄeliga och mÄngsidiga sÀttet att ta appar till Kubernetes-klustret.

Helm-sÀkerhet

Det handlar naturligtvis om en mer strukturerad och industriell metod Àn att skapa sina egna YAML-manifest och skriva smÄ verktyg.

Helm Àr det bÀsta som finns tillgÀngligt och populÀrt just nu.

Varför Helm? Först och frÀmst för att den stöds av CNCF. Cloud Native Àr en stor organisation och moderbolag för projekt som Kubernetes, etcd, Fluentd och andra.

En annan viktig faktum Àr att Helm Àr ett mycket populÀrt projekt. NÀr jag i januari 2019 först tÀnkte berÀtta om hur man gör Helm sÀkert hade projektet tusen stjÀrnor pÄ GitHub. I maj hade de blivit 12 000.

MÄnga Àr intresserade av Helm, sÄ Àven om du fortfarande inte anvÀnder det kan kunskapen om dess sÀkerhet vara vÀrdefull. SÀkerhet Àr viktigt.

Det huvudsakliga teamet bakom Helm stöds av Microsoft Azure, vilket gör att projektet Àr relativt stabilt i jÀmförelse med mÄnga andra. Utrullningen av Helm 3 Alpha 2 i mitten av juli visar att det finns mÄnga mÀnniskor som arbetar med projektet, och de har bÄde vilja och resurser för att utveckla och förbÀttra Helm.

Helm-sÀkerhet

Helm löser flera centrala problem med applikationshantering i Kubernetes.

  • Paketera applikationer. Även en applikation som "Hello, World" pĂ„ WordPress bestĂ„r av flera tjĂ€nster som man vill paketera tillsammans.
  • Hanterar den komplexiteten som uppstĂ„r med hanteringen av dessa applikationer.
  • Livscykeln som inte slutar efter installation eller deployment av applikationen. Den fortsĂ€tter att existera, den behöver uppdateras, och Helm hjĂ€lper till med det och strĂ€var efter att ge de rĂ€tta Ă„tgĂ€rderna och policyn.

Packetering Àr uppbyggd pÄ ett förstÄeligt sÀtt: det finns metadata som helt överensstÀmmer med hur en vanlig pakethanterare fungerar för Linux, Windows eller MacOS. Det vill sÀga en repository, beroenden mellan olika paket, metadata för applikationer, instÀllningar, konfigurationsspecifikationer, indexering av information etc. Allt detta möjliggör Helm att erhÄlla och anvÀnda för applikationerna.

Hantering av komplexitet. Om du har mÄnga liknande applikationer behövs parameterisering. DÀrifrÄn uppstÄr mallar, men för att inte behöva uppfinna egna sÀtt att skapa mallar kan du anvÀnda det som Helm erbjuder "out of the box".

Hantera livscykeln av applikationen Àr - enligt min mening - den mest intressanta och olösta frÄgan. Det Àr anledningen till att jag kom till Helm i första hand. Vi behövde hÄlla koll pÄ applikationens livscykel, vi ville flytta vÄr CI/CD och applikationscykler till detta paradigm.

Helm möjliggör:

  • att hantera distributioner, introducera begreppet konfiguration och revision;
  • framgĂ„ngsrikt utföra rollback;
  • anvĂ€nda hooks för olika hĂ€ndelser;
  • lĂ€gga till ytterligare kontroller för applikationer och reagera pĂ„ deras resultat.

Dessutom Helm har "batterier". — ett stort antal goda saker som kan inkluderas som plugins, vilket förenklar livet. Plugins kan skrivas av dig sjĂ€lv, de Ă€r tillrĂ€ckligt isolerade och krĂ€ver ingen kĂ€nslig arkitektur. Om du vill implementera nĂ„got, rekommenderar jag att göra det som en plugin och eventuellt senare inkludera det i upstream.

Helm bygger pÄ tre grundlÀggande koncept:

  • Chart Repo — en beskrivning och en uppsĂ€ttning parametrar som kan anvĂ€ndas för din manifest. 
  • Konfigurera — det vill sĂ€ga vĂ€rden som kommer att tillĂ€mpas (text, numeriska vĂ€rden osv.).
  • Release innehĂ„ller de tvĂ„ överliggande komponenterna, och tillsammans blir de till en Release. Releases kan versionshanteras, vilket möjliggör livscykelorganisation: liten vid installation och stor vid uppgradering, nedgradering eller Ă„terstĂ€llning.

Helm-arkitektur

Schemat visar konceptuellt den hög nivÄ arkitekturen för Helm.

Helm-sÀkerhet

Jag pĂ„minner om att Helm Ă€r nĂ„got som Ă€r kopplat till Kubernetes. DĂ€rför kan vi inte klara oss utan en Kubernetes-kluster (rektangel). Komponenten kube-apiserver finns pĂ„ mastern. Utan Helm har vi Kubeconfig. Helm tillhandahĂ„ller en liten binĂ€r som kan kallas Helm CLI, som installeras pĂ„ datorer, bĂ€rbara datorer, mainframes — pĂ„ vad som helst.

Men detta Àr inte tillrÀckligt. Helm har en serverkomponent, Tiller. Den representerar Helm:s intressen inom klustret, det Àr en liknande applikation inom Kubernetes-klustret som vilken annan som helst.

Den nĂ€sta komponenten, Chart Repo — ett repository med charts. Det finns ett officiellt repository, och det kan finnas ett privat repository för företaget eller projektet.

Interaktion

LÄt oss se hur komponenterna i arkitekturen interagerar nÀr vi vill installera en applikation med hjÀlp av Helm.

  • Vi sĂ€ger Helm install, vi kontaktar repositoryt (Chart Repo) och fĂ„r Helm-charten.

  • Helm-verktyget (Helm CLI) interagerar med Kubeconfig för att ta reda pĂ„ vilket kluster som ska kontaktas. 
  • NĂ€r denna information har erhĂ„llits, kontaktar verktyget Tiller, som finns i vĂ„rt kluster, som en applikation. 
  • Tiller kontaktar Kube-apiserver för att utföra Ă„tgĂ€rder i Kubernetes, skapa vissa objekt (tjĂ€nster, pods, repliker, hemligheter osv.).

DÀrefter kommer vi att komplicera schemat för att se de attackvektorer som hela Helm-arkitekturen kan utsÀttas för. Och sedan försöka skydda den.

Attackvektor

Den första potentiellt svaga punkten — privilegierad API—anvĂ€ndare. Inom schemat Ă€r detta en hacker som har fĂ„tt administrativ Ă„tkomst till Helm CLI.

Icke-privilegierad API-anvÀndare kan ocksÄ utgöra en risk om den Àr i nÀrheten. En sÄdan anvÀndare kommer att ha en annan kontext, till exempel kan den vara inlÄst i ett visst namespace i klusterinstÀllningarna för Kubeconfig.

Den mest intressanta attackvektorn kan vara en process som finns nÄgonstans i klustret nÀra Tiller och kan kommunicera med den. Det kan vara en webbserver eller mikrotjÀnst som ser det nÀtverksmiljö som klustret befinner sig i.

Ett exotiskt, men vÀxande, alternativ till attacken Àr relaterat till Chart Repo. En chart skapad av en illojal författare kan innehÄlla osÀkra resurser, och du kommer att köra den i tron att den Àr sÀker. Eller sÄ kan den ersÀtta den chart som du laddar ner frÄn det officiella arkivet och, till exempel, skapa resurser i form av policys och eskalera sin egen Ätkomst.

Helm-sÀkerhet

LÄt oss försöka avvÀrja attacker frÄn alla dessa fyra hÄll och se var det finns problem i Helm-arkitekturen och var det eventuellt inte finns nÄgra.

Vi gör schemat större, lÀgger till fler element men behÄller alla grundlÀggande bestÄndsdelar.

Helm-sÀkerhet

Helm CLI kommunicerar med Chart Repo, interagerar med Kubeconfig och jobbet överlÀmnas till klustret i komponenten Tiller.

Tiller representeras av tvÄ objekt:

  • Tiller-deploy svc, som stĂ€ller upp en viss tjĂ€nst;
  • Tiller-deploy pod (i schemat i ett enda exemplar i en replik), dĂ€r all belastning körs och som kommunicerar med klustret.

Olika protokoll och scheman anvÀnds för interaktionen. FrÄn sÀkerhetssynpunkt Àr vi mest intresserade av:

  • Mechanismen genom vilken Helm CLI kommunicerar med chart repo: vilket protokoll anvĂ€nds, finns det autentisering och vad kan man göra med detta.
  • Protokollet genom vilket Helm CLI, med hjĂ€lp av kubectl, kommunicerar med Tiller. Det Ă€r en RPC-server som Ă€r installerad inuti klustret.
  • SjĂ€lva Tiller Ă€r tillgĂ€ngligt för mikrotjĂ€nster som finns i klustret och interagerar med Kube-apiserver.

Helm-sÀkerhet

LÄt oss diskutera alla dessa riktningar i ordning.

RBAC

Det Àr meningslöst att prata om nÄgon sÀkerhet för Helm eller annan tjÀnst inom klustret om RBAC inte Àr aktiverat.

Det verkar som om detta inte Àr det senaste rÄdet, men jag Àr sÀker pÄ att mÄnga fortfarande inte har aktiverat RBAC, Àven i produktion, eftersom det innebÀr mycket arbete och man mÄste konfigurera mycket. Jag uppmanar ÀndÄ att göra det.

Helm-sÀkerhet

https://rbac.dev/ — en advokat-webbplats för RBAC. HĂ€r samlas en enorm mĂ€ngd intressanta material som hjĂ€lper till att stĂ€lla in RBAC, visar varför det Ă€r bra och hur man generellt kan arbeta med det i produktion.

Jag ska försöka förklara hur Tiller och RBAC fungerar. Tiller körs inuti klustret under ett specifikt servicekonto. I allmÀnhet, om RBAC inte Àr instÀllt, kommer det att vara en superanvÀndare. I standardkonfigurationen kommer Tiller att vara administratör. DÀrför sÀger man ofta att Tiller Àr en SSH-tunnel till ditt kluster. SÄ Àr det i verkligheten, sÄ du kan anvÀnda ett separat specialiserat servicekonto istÀllet för Default Service Account som visas ovan.

NÀr du initierar Helm, installerar det för första gÄngen pÄ servern, kan du ange servicekontot med --service-account. Detta gör det möjligt att anvÀnda en anvÀndare med det minimiuppsÀttning av rÀttigheter som krÀvs. TyvÀrr mÄste du skapa en sÄdan "kedja": Role och RoleBinding.

Helm-sÀkerhet

TyvÀrr kommer Helm inte att göra detta för dig. Antingen du eller din Kubernetes-klusteradministratör mÄste i förvÀg förbereda en uppsÀttning Role, RoleBinding för servicekonto, för att överföra till Helm.

FrĂ„gan uppstĂ„r — vad Ă€r skillnaden mellan Role och ClusterRole? Skillnaden Ă€r att ClusterRole gĂ€ller för alla namespaces, till skillnad frĂ„n vanliga Role och RoleBinding, som endast fungerar för specifika namespaces. Du kan stĂ€lla in riktlinjer för hela klustret och alla namespaces, sĂ„vĂ€l som personligt för varje namespace individuellt.

Det Ă€r vĂ€rt att nĂ€mna att RBAC ocksĂ„ löser ett annat stort problem. MĂ„nga klagar pĂ„ att Helm tyvĂ€rr inte Ă€r multitenancy (inte stöder fleranvĂ€ndartillgĂ„ng). Om flera team anvĂ€nder klustret och Helm, Ă€r det i princip omöjligt att stĂ€lla in riktlinjer och avgrĂ€nsa deras Ă„tkomst inom detta kluster, eftersom det finns ett specifikt servicekonto under vilket Helm fungerar, och det skapar alla resurser i klustret frĂ„n detta, vilket ibland Ă€r mycket opraktiskt. Det Ă€r verkligen sant — bĂ„de den binĂ€ra filen och processen, Helm Tiller har ingen uppfattning om multitenancy..

Det finns dock ett utmÀrkt sÀtt som gör att du kan köra Tiller flera gÄnger i klustret. Det finns inga problem med detta, Tiller kan startas i varje namespace. SÄ kan du dra nytta av RBAC, Kubeconfig som kontext, och begrÀnsa Ätkomsten till ett speciellt Helm.

Det kommer att se ut som följande.

Helm-sÀkerhet

Till exempel finns det tvÄ Kubeconfig med kontext för olika team (tvÄ namespace): X Team för utvecklarteamet och klusteradministratören. Klusteradministratören har sin breda Tiller, som finns i kube-system namespace, och dÀrmed en avancerad service-account. Och ett separat namespace för utvecklarteamet, dÀr de kan deploya sina tjÀnster i det specifika namespace.

Detta Àr en fungerande metod, Tiller Àr inte sÄ resurskrÀvande att det skulle pÄverka din budget mÀrkbart. Det Àr en av de snabba lösningarna.

Tveka inte att konfigurera Tiller separat och tillhandahÄlla Kubeconfig med kontext för teamet, för en specifik utvecklare eller för miljön: Dev, Staging, Production (det Àr osannolikt att allt kommer att vara pÄ ett kluster, men det kan göras).

FortsÀtter vi vÄr historia, byter vi frÄn RBAC och pratar om ConfigMaps.

ConfigMaps

Helm anvÀnder ConfigMaps som datalagring. NÀr vi pratade om arkitekturen fanns det ingen databas dÀr information om releaser, konfigurationer, rollbacks och sÄ vidare lagrades. Det anvÀnds ConfigMaps för.

Det största problemet med ConfigMaps Ă€r kĂ€nt – de Ă€r i grunden osĂ€kra, i dem kan man inte lagra kĂ€nslig information. Det handlar om allt som inte bör komma lĂ€ngre Ă€n tjĂ€nsten, till exempel lösenord. Det mest naturnĂ€ra sĂ€ttet för Helm just nu Ă€r att övergĂ„ frĂ„n att anvĂ€nda ConfigMaps till hemligheter.

Detta görs mycket enkelt. Du överskriver konfigurationen för Tiller och anger att lagringen ska vara hemligheter. DÄ fÄr du istÀllet för ConfigMap en hemlighet vid varje deployment.

Helm-sÀkerhet

Du kan invÀnda mot att sjÀlva hemligheterna Àr ett konstigt koncept och inte sÀrskilt sÀkra. Men det Àr viktigt att förstÄ att detta hanteras av Kubernetes-skaparna. FrÄn och med version 1.10, dvs. ganska lÀnge sedan, finns det möjlighet att Ätminstone i offentliga moln ansluta riktigt lagringsutrymme för att lagra hemligheter. Just nu arbetar teamet pÄ att ge bÀttre Ätkomst till hemligheter för vissa pods eller andra enheter.

Storage Helm bör bÀttre översÀttas till hemligheter, och dessa ska centralt sÀkras.

SjÀlvklart kommer det att finnas en grÀns för datalagring pÄ 1 MB. Helm anvÀnder hÀr etcd som ett distribuerat lager för ConfigMaps. DÀr ansÄg man att detta var en lÀmplig databit för replikeringar och sÄ vidare. Det finns en intressant diskussion om detta pÄ Reddit, jag rekommenderar att du hittar denna underhÄllande lÀsning för helgen eller lÀser sammanfattningen. ). Ett typiskt exempel pÄ anvÀndning:.

Chart Repos

Charts Àr sÀrskilt socialt utsatta och kan bli en kÀlla till "Man in the middle", sÀrskilt nÀr man anvÀnder ett standardlösning. FrÀmst handlar det om depÄer som exponeras via HTTP.

Det Ă€r definitivt viktigt att exponera Helm Repo via HTTPS – det Ă€r den bĂ€sta lösningen och kostar inte mycket.

Observera signeringsmekanismen för charts. Tekniken Àr sÄ enkelt att det nÀstan Àr löjligt. Det Àr samma sak som du anvÀnder pÄ GitHub, den vanliga PGP-maskineriet med offentliga och privata nycklar. StÀll in det och var sÀker pÄ att ha de rÀtta nycklarna och signera allt sÄ att det verkligen Àr din chart.

Dessutom, Helm-klienten stöder TLS (inte i meningen HTTP frĂ„n serverns sida, utan ömsesidig TLS). Du kan anvĂ€nda server- och klientnycklar för att kommunicera. Jag ska Ă€rligt sĂ€ga att jag inte anvĂ€nder en sĂ„dan mekanism pĂ„ grund av ogillande av ömsesidiga certifikat. I princip, chartmuseum — det primĂ€ra verktyget för att exponera Helm Repo för Helm 2 — stödjer Ă€ven basic auth. Du kan anvĂ€nda basic auth om det Ă€r mer bekvĂ€mt och tryggt.

Det finns Àven en plugin helm-gcs, som gör det möjligt att lagra Chart Repos i Google Cloud Storage. Detta Àr ganska praktiskt, fungerar utmÀrkt och Àr tillrÀckligt sÀkert eftersom alla de beskrivna mekanismerna anvÀnds.

Helm-sÀkerhet

Om du aktiverar HTTPS eller TLS, anvÀnder mTLS, aktiverar basic auth för att ytterligare minska riskerna, fÄr du en sÀker kommunikationskanal mellan Helm CLI och Chart Repo.

gRPC API

NĂ€sta steg Ă€r mycket viktigt — att sĂ€kra Tiller, som finns i klustret och Ă€r, Ă„ ena sidan, servern, Ă„ andra sidan — sjĂ€lv kontaktar andra komponenter och försöker framstĂ„ som nĂ„gon annan.

Som jag redan sagt Àr Tiller en tjÀnst som exponerar gRPC; Helm-klienten kommer till den via gRPC. Som standard Àr naturligtvis TLS avstÀngt. Varför det Àr sÄ Àr en diskussionsfrÄga, jag tror att det gjordes för att förenkla instÀllningen vid starten.

För produktion och till och med för staging rekommenderar jag att aktivera TLS pÄ gRPC.

Enligt min Ă„sikt Ă€r det hĂ€r, till skillnad frĂ„n mTLS för diagram, lĂ€mpligt och görs vĂ€ldigt enkelt — du genererar en PQI-infrastruktur, skapar ett certifikat, kör Tiller och överför certifikatet under initialiseringen. Efter detta kan du köra alla Helm-kommandon och presentera dig med det genererade certifikatet och den privata nyckeln.

Helm-sÀkerhet

Genom detta skyddar du dig frÄn alla förfrÄgningar till Tiller utanför klustret.

SÄ vi har skyddat anslutningskanalen till Tiller, redan diskuterat RBAC och justerat rÀttigheterna för Kubernetes apiserver, minskat domÀnen med vilken den kan interagera.

SĂ€ker Helm

LÄt oss ta en titt pÄ det slutliga schemat. Det Àr samma arkitektur med samma pilar.

Helm-sÀkerhet

Nu kan vi helt frimodigt rita alla anslutningar i grönt:

  • för Chart Repo anvĂ€nder vi TLS eller mTLS och basic auth;
  • mTLS för Tiller, och det stĂ€lls in som en gRPC-tjĂ€nst med TLS, vi anvĂ€nder certifikat;
  • i klustret anvĂ€nds ett speciellt tjĂ€nstekonto med Roll och RoleBinding. 

Vi har mÀrkbar sÀkrat klustret, men nÄgon smart sa:

"Det mest sĂ€kra lösningen kan bara vara en — en avstĂ€ngd dator som ligger i en betonglĂ„da och bevakas av soldater."

Det finns olika sÀtt att manipulera data och hitta nya vektorer för attacker. Men jag Àr sÀker pÄ att dessa rekommendationer kommer att hjÀlpa till att implementera en grundlÀggande industristandard för sÀkerhet.

Bonus

Denna del handlar inte direkt om sĂ€kerhet, men den kommer ocksĂ„ att vara anvĂ€ndbar. Jag ska visa nĂ„gra intressanta saker som fĂ„ kĂ€nner till. Till exempel hur man söker efter diagram — officiella och icke-officiella.

I lagret github.com/helm/charts just nu finns det cirka 300 diagram och tvĂ„ strömmar: stable och incubator. Den som bidrar vet hur svĂ„rt det Ă€r att gĂ„ frĂ„n incubator till stable, och hur lĂ€tt det Ă€r att Ă„ka ut frĂ„n stable. Men detta Ă€r inte det bĂ€sta verktyget för att söka efter diagram för Prometheus och allt annat du gillar, av en enkel anledning — det Ă€r inte en portal dĂ€r det Ă€r bekvĂ€mt att söka efter paket.

Men det finns en tjÀnst hub.helm.sh, som gör det mycket enklare att hitta diagram. Det viktigaste Àr att det finns mycket fler externa repositorier tillgÀngliga och nÀstan 800 diagram. Dessutom kan du ansluta ditt eget förrÄd om du av nÄgon anledning inte vill skicka dina diagram till stable.

Prova hub.helm.sh och lÄt oss utveckla det tillsammans. Denna tjÀnst Àr under Helm-projektet, och du kan bidra Àven i dess UI, om du Àr frontend-utvecklare och bara vill förbÀttra utseendet.

Jag vill ocksÄ pÄpeka att Open Service Broker API-integration. Det lÄter omstÀndligt och oklart, men löser problem som alla stÄr inför. Jag ska förklara med ett enkelt exempel.

Helm-sÀkerhet

Det finns en Kubernetes-kluster dĂ€r vi vill köra en klassisk applikation — WordPress. Vanligtvis behövs en databas för fullstĂ€ndig funktionalitet. Det finns mĂ„nga olika lösningar, till exempel kan man köra sin egen stateful-tjĂ€nst. Det Ă€r inte sĂ€rskilt praktiskt, men mĂ„nga gör sĂ„.

Andra, som vi pÄ Chainstack, anvÀnder hanterade databaser, till exempel MySQL eller PostgreSQL, för servrar. DÀrför ligger vÄra databaser nÄgonstans i molnet.

Men det uppstĂ„r ett problem: vi mĂ„ste koppla vĂ„r tjĂ€nst till databasen, skapa en databas flavor, överföra credentials och pĂ„ nĂ„got sĂ€tt hantera det. Allt detta görs vanligtvis manuellt av en systemadministratör eller utvecklare. Det finns inget problem nĂ€r det finns fĂ„ applikationer. NĂ€r det finns mĂ„nga behövs en kombinat. En sĂ„dan kombinat finns — det Ă€r Service Broker. Det lĂ„ter dig anvĂ€nda en speciell plugin för att bestĂ€lla resurser frĂ„n en leverantör via Broker, som om det vore ett API. För detta kan man anvĂ€nda Kubernetess inbyggda medel.

Det Àr vÀldigt enkelt. Man kan begÀra till exempel Managed MySQL i Azure med en grundlÀggande nivÄ (detta kan justeras). Med hjÀlp av Azure API kommer databasen att skapas och förberedas för anvÀndning. Du behöver inte blanda dig i det, detsamma gÀller pluginen. Till exempel kommer OSBA (Azure-plugin) att returnera credentials till tjÀnsten och överföra dem till Helm. Du kommer kunna anvÀnda WordPress med moln-MySQL, helt utan att behöva hantera hanterade databaser och behöver inte bekymra dig för stateful-tjÀnsterna inuti.

Man kan sĂ€ga att Helm fungerar som limmet som Ă„ ena sidan tillĂ„ter att deploya tjĂ€nster, och Ă„ andra sidan — konsumera resurser frĂ„n molnleverantörer.

Man kan skriva sin egen plugin och anvÀnda hela detta koncept on-premise. DÄ kommer du bara ha din egen plugin för din företagsmolnleverantör. Jag rekommenderar att prova denna metod, sÀrskilt om du har en stor skala och vill snabbt implementera dev, staging eller hela infrastrukturen för en funktion. Detta kommer att förenkla livet för era operations eller DevOps.

En annan lösning som jag redan nÀmnt Àr helms-plugin-gcs, som gör det möjligt att anvÀnda Google-buckets (objektlagring) för att lagra Helm-diagram.

Helm-sÀkerhet

Det krÀvs bara fyra kommandon för att börja anvÀnda det:

  1. installera pluginen;
  2. initiera den;
  3. ange en vÀg till bucket som finns i gcp;
  4. publicera diagram pÄ ett standardiserat sÀtt.

Fördelen Ă€r att den inbyggda gcp-metoden för autentisering kommer att anvĂ€ndas. Du kan anvĂ€nda en tjĂ€nstekonto, utvecklarkonto — vad som helst. Det Ă€r mycket praktiskt och kostar ingenting i drift. Om du, som jag, frĂ€mjar opsless-filosofin, blir det mycket anvĂ€ndbart, sĂ€rskilt för smĂ„ team.

Alternativ

Helm Àr inte den enda lösningen för att hantera tjÀnster. Det finns mÄnga frÄgor kring det, och antagligen Àr det dÀrför version tre kom sÄ snabbt. SjÀlvklart finns det alternativ.

Det kan vara specialiserade lösningar, till exempel Ksonnet eller Metaparticle. Du kan anvÀnda dina klassiska infrastrukturella verktyg (Ansible, Terraform, Chef osv.) för samma syften som jag nÀmnde.

Till sist finns det en lösning Operator Framework, vars popularitet vÀxer.

Operator Framework Àr den frÀmsta alternativet till Helm, som man bör hÄlla ett öga pÄ.

Den Àr mer inbyggd för CNCF och Kubernetes, men ingÄngströskeln Àr mycket högre, sÄ det krÀvs mer programmering och mindre beskrivning av manifester.

Det finns olika tillÀgg, som Draft och Scaffold. De underlÀttar livet kraftigt, till exempel förenklar de utvecklarcykeln för att skicka och köra Helm för att distribuera testmiljöer. Jag skulle kalla dem möjlighetsförlÀngare.

HÀr Àr en tydlig graf över var saker ligger.

Helm-sÀkerhet

PÄ x-axeln Àr nivÄn av ditt personliga kontroll över vad som hÀnder, pÄ y-axeln nivÄn av Kubernetes-inbyggdhet. Helm version 2 ligger nÄgonstans i mitten. I version 3 Àr det inte en enorm förÀndring, men bÄde kontrollen och nivÄn av inbyggdhet har förbÀttrats. Ksonnet-nivÄlösningar ligger fortfarande efter Àven Helm 2. Men det Àr vÀrt att kika pÄ dem för att veta vad som annars finns i denna vÀrld. SjÀlvklart kommer din konfigurationshanterare att vara under din kontroll, men Àr absolut inte inbyggd för Kubernetes.

Operator Framework Àr helt inbyggt för Kubernetes och tillÄter en att hantera den pÄ ett mycket mer elegant och noggrant sÀtt (men kom ihÄg ingÄngsnivÄn). Det Àr mer lÀmpat för specialiserade applikationer och att skapa management för dem snarare Àn för en masskomplettering av stora mÀngder applikationer med hjÀlp av Helm.

MöjlighetsförlÀngarna förbÀttrar bara kontrollen nÄgot, kompletterar arbetsflödet eller skÀr av hörn i CI/CD-pipelines.

Framtiden för Helm

Den goda nyheten Àr att Helm 3 har kommit. Alpha-versionen av Helm 3.0.0-alpha.2 har slÀppts och kan testas. Den Àr tillrÀckligt stabil, men funktionaliteten Àr fortfarande begrÀnsad.

Varför behövs Helm 3? Först och frÀmst handlar det om försvinnandet av Tiller, som komponent. Detta Àr, som ni redan förstÄr, ett stort steg framÄt, eftersom det förenklar arkitekturen med avseende pÄ sÀkerhet.

NÀr Helm 2 skapades, vilket var under tiderna för Kubernetes 1.8 eller Ànnu tidigare, var mÄnga koncept omogna. Till exempel, konceptet CRD implementeras nu aktivt, och Helm kommer att anvÀnda CRD, för att spara strukturer. Det blir möjligt att enbart anvÀnda klienten utan att behöva en serverdel. DÀrmed kan man anvÀnda de inbyggda kommandona i Kubernetes för att arbeta med strukturer och resurser. Detta Àr ett stort framsteg.

Det kommer att finnas stöd för inhemska OCI-repositorier (Open Container Initiative). Detta Àr en stor initiativ, och Helm Àr frÀmst intresserad av det för att kunna placera sina chartor. Det gÄr sÄ lÄngt att till exempel Docker Hub stöder mÄnga OCI-standarder. Jag spekulerar inte, men det Àr möjligt att klassiska Docker-repositorie-leverantörer kommer att erbjuda möjligheten att placera sina Helm-chartor.

En tveksam frĂ„ga för mig Ă€r stödet för Lua, som templating engine för att skriva skript. Jag Ă€r ingen stor fan av Lua, men det kommer att vara en helt valfri möjlighet. Jag har kontrollerat detta tre gĂ„nger – anvĂ€ndning av Lua kommer inte att vara obligatoriskt. SĂ„ den som vill, kan anvĂ€nda Lua, och den som gillar Go – gĂ„ med i vĂ„r stora lĂ€ger och anvĂ€nd go-tmpl för detta.

Äntligen det som jag verkligen har saknat – framtrĂ€dandet av schema och validering av datatyper. Det kommer inte lĂ€ngre att vara nĂ„gra problem med int eller string, man behöver inte lĂ€ngre omsluta noll med dubbla citattecken. En JSON-schema kommer att finnas som tydligt beskriver detta för values.

Den kommer att vara mycket omarbetad event-driven model. Den Àr redan konceptuellt beskriven. Titta i Helm 3-grenen, och ni kommer att se hur mÄnga hÀndelser, hooks och mer som har lagts till, vilket i hög grad kommer att förenkla och Ä ena sidan, ge mer kontroll över deployprocesser och reaktioner pÄ dem.

Helm 3 kommer att vara enklare, sÀkrare och mer intressant, inte för att vi inte gillar Helm 2, utan för att Kubernetes blir mer avancerat. DÀrmed kan Helm anvÀnda de framsteg som Kubernetes gör och skapa utmÀrkta hanterare för Kubernetes.

Ytterligare en bra nyhet Àr att DevOpsConf Alexander Khayev kommer att berÀtta, kan containrar vara sÀkra? Kom ihÄg att konferensen om integration av utvecklings-, test- och driftsÀttningsprocesser kommer att hÄllas i Moskva den 30 september och 1 oktober. Fram till den 20 augusti kan du fortfarande skicka in en presentation och berÀtta om dina erfarenheter av att lösa en av mÄnga utmaningar i DevOps-ansatsen.

Följ konferensens checkpoints och nyheter pÄ i ett nyhetsbrev och telegram-kanalen.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster