Pagpaila sa Helm 3

Pagpaila sa Helm 3

Nota. transl.: Mayo 16 niining tuiga nagtimaan sa usa ka mahinungdanon nga milestone sa pagpalambo sa package manager alang sa Kubernetes - Helm. Niining adlawa, ang unang alpha release sa umaabot nga mayor nga bersyon sa proyekto - 3.0 - gipresentar. Ang pagpagawas niini magdala og mahinungdanon ug dugay nang gipaabot nga mga kausaban sa Helm, diin daghan sa komunidad sa Kubernetes ang adunay taas nga paglaum. Kami mismo usa niini, tungod kay aktibo kami nga naggamit sa Helm alang sa pag-deploy sa aplikasyon: gisagol namon kini sa among himan alang sa pagpatuman sa CI / CD werf ug matag karon ug unya naghimo kami sa among kontribusyon sa pagpauswag sa upstream. Kini nga hubad naghiusa sa 7 nga mga nota gikan sa opisyal nga Helm blog, nga gipahinungod sa unang alpha release sa Helm 3 ug naghisgot mahitungod sa kasaysayan sa proyekto ug sa mga nag-unang bahin sa Helm 3. Ang ilang tagsulat mao si Matt "bacongobbler" Fisher, usa ka empleyado sa Microsoft ug usa sa mga yawe nga tigmentinar sa Helm.

Niadtong Oktubre 15, 2015, natawo ang proyekto nga nailhan karon nga Helm. Usa lang ka tuig pagkahuman sa pagkatukod niini, ang komunidad sa Helm miapil sa Kubernetes, samtang aktibo nga nagtrabaho sa Helm 2. Sa Hunyo 2018, Helm miapil sa CNCF isip usa ka pagpalambo (paglumlom) nga proyekto. Paspas hangtod karon, ug ang una nga pagpagawas sa alpha sa bag-ong Helm 3 hapit na. (kini nga pagpagawas nahitabo na sa tunga-tunga sa Mayo - gibanabana. transl.).

Niini nga artikulo, hisgotan nako kung diin nagsugod ang tanan, kung giunsa naton pag-abut kung asa kita karon, ipaila ang pipila sa mga talagsaon nga bahin nga magamit sa una nga pagpagawas sa alpha sa Helm 3, ug ipasabut kung giunsa namon pagplano nga molambo pa.

Katingbanan:

  • ang kasaysayan sa paglalang sa Helm;
  • usa ka malumo nga panamilit kang Tiller;
  • mga tipiganan sa tsart;
  • pagdumala sa pagpagawas;
  • pagbag-o sa mga dependency sa tsart;
  • mga tsart sa librarya;
  • Unsay sunod?

Ang kasaysayan sa Helm

Pagkatawo

Ang Helm 1 nagsugod isip usa ka Open Source nga proyekto nga gihimo ni Deis. Usa kami ka gamay nga pagsugod nasuyop Microsoft sa tingpamulak 2017. Ang among uban nga proyekto sa Open Source, nga ginganlan usab og Deis, adunay himan deisctl, nga gigamit (taliwala sa ubang mga butang) sa pag-instalar ug pag-operate sa Deis nga plataporma sa Kumpol sa armada. Niadtong panahona, ang Fleet usa sa unang mga plataporma sa orkestra sa sudlanan.

Sa tunga-tunga sa 2015, nakahukom kami nga usbon ang kurso ug gibalhin ang Deis (niadtong panahona giilisan ang ngalan nga Deis Workflow) gikan sa Fleet hangtod sa Kubernetes. Usa sa una nga gidesinyo pag-usab mao ang himan sa pag-instalar. deisctl. Gigamit namo kini sa pag-instalar ug pagdumala sa Deis Workflow sa Fleet cluster.

Ang Helm 1 gihimo sa imahe sa bantog nga mga manager sa package sama sa Homebrew, apt ug yum. Ang panguna nga katuyoan niini mao ang pagpayano sa mga buluhaton sama sa pagputos ug pag-install sa mga aplikasyon sa Kubernetes. Opisyal nga gipaila ang Helm kaniadtong 2015 sa komperensya sa KubeCon sa San Francisco.

Ang among una nga pagsulay sa Helm nagtrabaho, apan kini wala’y mga seryoso nga limitasyon. Nagkuha siya og usa ka set sa mga Kubernetes manifests, nga adunay lami sa mga generator isip pasiuna nga YAML blocks (una nga butang)*, ug gikarga ang mga resulta sa Kubernetes.

* Nota. transl.: Gikan sa unang bersyon sa Helm, ang YAML syntax gipili aron ihulagway ang mga kapanguhaan sa Kubernetes, ug ang Jinja templates ug Python scripts gisuportahan sa pagsulat sa mga configuration. Gisulat namon ang dugang bahin niini ug ang istruktura sa una nga bersyon sa Helm sa kinatibuk-an sa kapitulo nga "Usa ka Mubo nga Kasaysayan sa Helm" kini nga materyal.

Pananglitan, aron mapulihan ang usa ka uma sa usa ka YAML file, kinahanglan nimong idugang ang mosunud nga konstruksyon sa pagpakita:

#helm:generate sed -i -e s|ubuntu-debootstrap|fluffy-bunny| my/pod.yaml

Nindot kaayo nga adunay mga template engine karon, dili ba?

Alang sa daghang mga hinungdan, kining sayo nga installer sa Kubernetes nanginahanglan usa ka hard-coded nga lista sa mga manifest file ug nagpatuman lamang sa usa ka gamay, pirmi nga pagkasunod-sunod sa mga panghitabo. Lisud kaayo nga gamiton nga ang grupo sa Deis Workflow R&D naglisud sa dihang gisulayan nila nga ibalhin ang ilang produkto sa kini nga plataporma - bisan pa, ang mga liso sa ideya napugas na. Ang among una nga pagsulay usa ka maayo nga oportunidad sa pagkat-on: nahibal-an namon nga gusto namon ang paghimo sa mga pragmatic nga himan nga makasulbad sa mga problema sa adlaw-adlaw alang sa among mga tiggamit.

Pinasukad sa kasinatian sa nangaging mga kasaypanan, gisugdan namon ang paghimo sa Helm 2.

Paghimo sa Helm 2

Sa katapusan sa 2015, ang Google team mikontak kanamo. Nagtrabaho sila sa parehas nga himan alang sa Kubernetes. Ang Deployment Manager alang sa Kubernetes usa ka pantalan sa usa ka kasamtangan nga himan nga gigamit alang sa Google Cloud Platform. β€œGusto ba namo,” sila nangutana, β€œnga mogugol ug pipila ka adlaw sa paghisgot sa mga kaamgiran ug mga kalainan?”

Niadtong Enero 2016, ang Helm and Deployment Manager teams nagkita sa Seattle aron magbayloay og mga ideya. Ang negosasyon natapos sa usa ka ambisyoso nga plano: sa paghiusa sa duha ka mga proyekto sa paghimo sa Helm 2. Uban sa Deis ug Google, ang mga lalaki gikan sa SkippBox (karon bahin sa Bitnami - gibanabana nga transl.), ug nagsugod mi sa pagtrabaho sa Helm 2.

Gusto namong ipabilin ang kasayon ​​sa paggamit ni Helm, apan idugang ang mosunod:

  • mga template sa tsart alang sa pag-customize;
  • pagdumala sa intra-cluster alang sa mga grupo;
  • world-class nga tsart repository;
  • stable nga pormat sa pakete nga adunay kapilian nga pirma;
  • usa ka lig-on nga pasalig sa semantic versioning ug pagmintinar sa backward compatibility tali sa mga bersyon.

Aron makab-ot kini nga mga tumong, usa ka ikaduhang elemento ang gidugang sa Helm ecosystem. Kini nga sangkap sa intra-cluster gitawag nga Tiller ug responsable sa pag-install sa mga tsart sa Helm ug pagdumala niini.

Sukad sa pagpagawas sa Helm 2 sa 2016, ang Kubernetes nagdugang daghang dagkong mga inobasyon. Gidugang nga gibase sa papel nga kontrol sa pag-access (RBAC), nga sa katapusan mipuli sa Attribute-Based Access Control (ABAC). Bag-ong mga tipo sa kahinguhaan ang gipaila (Mga deployment anaa pa sa beta niadtong panahona). Naimbento ang Custom Resource Definition (orihinal nga gitawag nga Third Party Resources o TPRs). Ug ang labing hinungdanon, usa ka hugpong sa labing kaayo nga mga gawi ang mitumaw.

Taliwala niining tanan nga mga pagbag-o, ang Helm nagpadayon sa pagserbisyo sa mga tiggamit sa Kubernetes nga matinud-anon. Pagkahuman sa tulo ka tuig ug daghang bag-ong mga pagdugang, klaro nga panahon na aron maghimo hinungdanon nga mga pagbag-o sa codebase aron masiguro nga ang Helm makapadayon sa pagtagbo sa nagtubo nga mga panginahanglanon sa usa ka nagbag-o nga ekosistema.

Usa ka malumo nga panamilit kang Tiller

Atol sa pagpalambo sa Helm 2, among gipaila si Tiller isip kabahin sa among integrasyon sa Google's Deployment Manager. Ang Tiller adunay importante nga papel alang sa mga team nga nagtrabaho sulod sa usa ka komon nga cluster: kini nagtugot sa lain-laing mga espesyalista nga nag-operate sa imprastraktura nga makig-uban sa sama nga hugpong sa mga pagpagawas.

Tungod kay ang gibase sa papel nga kontrol sa pag-access (RBAC) gipalihok pinaagi sa default sa Kubernetes 1.6, ang pagtrabaho kauban ang Tiller sa produksiyon nahimong labi ka lisud. Tungod sa kadaghan sa posible nga mga palisiya sa seguridad, ang among posisyon mao ang pagtanyag usa ka permissive nga pag-configure sa default. Gitugotan niini ang mga bag-ohan nga mag-eksperimento sa Helm ug Kubernetes nga dili kinahanglan nga mosalom una sa mga setting sa seguridad. Ikasubo, kini nga pag-configure sa pagtugot mahimong maghatag sa tiggamit og labi ka halapad nga mga permiso nga wala nila kinahanglana. Ang mga inhenyero sa DevOps ug SRE kinahanglan nga makakat-on og dugang nga mga lakang sa operasyon kung mag-install sa Tiller sa usa ka multi-tenant cluster.

Human mahibal-an kung giunsa paggamit sa komunidad ang Helm sa piho nga mga sitwasyon, nahibal-an namon nga ang sistema sa pagdumala sa pagpagawas sa Tiller dili kinahanglan nga magsalig sa usa ka sangkap nga intra-cluster aron mapadayon ang estado o function ingon usa ka sentro nga hub alang sa pagpagawas sa kasayuran. Hinoon, makadawat lang kami og impormasyon gikan sa Kubernetes API server, makamugna og tsart sa bahin sa kliyente, ug magtipig og talaan sa pag-instalar sa Kubernetes.

Ang panguna nga katuyoan ni Tiller makab-ot kung wala si Tiller, mao nga usa sa among una nga mga desisyon bahin sa Helm 3 mao ang hingpit nga pagbiya sa Tiller.

Sa wala na si Tiller, ang modelo sa seguridad ni Helm gipayano na. Ang Helm 3 karon nagsuporta sa tanan nga modernong seguridad, identidad, ug mga pamaagi sa pagtugot sa kasamtangang Kubernetes. Ang permiso sa helm gitino sa paggamit kubeconfig file. Ang mga tagdumala sa cluster mahimong magpugong sa mga katungod sa tiggamit sa bisan unsang lebel sa granularity. Ang mga pagpagawas gitipigan gihapon sulod sa cluster, ug ang uban nga gamit sa Helm nagpabiling wala.

Mga tipiganan sa tsart

Sa taas nga lebel, ang usa ka repository sa tsart usa ka lugar diin ang mga tsart mahimong tipigan ug ipaambit. Ang kliyente sa Helm nagputos ug nagpadala sa mga tsart ngadto sa repositoryo. Sa yano nga pagkasulti, ang usa ka repository sa mga tsart usa ka primitive nga server sa HTTP nga adunay usa ka index.yaml file ug pipila nga mga naka-package nga tsart.

Samtang adunay pipila ka mga bentaha sa Charts Repository API nga nagtagbo sa kadaghanan nga sukaranan nga mga kinahanglanon sa pagtipig, adunay pipila usab nga mga kakulangan:

  • Ang mga tipiganan sa tsart dili tugma sa kadaghanan sa mga pagpatuman sa seguridad nga gikinahanglan sa usa ka palibot sa produksiyon. Ang pagbaton ug standard nga API para sa authentication ug authorization kay importante kaayo sa production scenario.
  • Ang Helm's chart provenance tools, nga gigamit sa pagpirma, pagmatuod sa integridad ug provenance sa usa ka chart, maoy opsyonal nga bahin sa Chart publishing process.
  • Sa mga senaryo nga multi-user, ang parehas nga tsart mahimong i-upload sa lain nga tiggamit, pagdoble ang gidaghanon sa espasyo nga gikinahanglan aron matipigan ang parehas nga sulud. Ang mas maalamon nga mga repository naugmad aron masulbad kini nga problema, apan dili kini bahin sa pormal nga detalye.
  • Ang paggamit sa usa ka index file alang sa pagpangita, pagtipig sa metadata, ug pagkuha sa mga tsart nakapalisud sa paghimo og luwas nga mga pagpatuman sa daghang tiggamit.

Ang proyekto Pag-apod-apod sa Docker (nailhan usab nga Docker Registry v2) mao ang manununod sa Docker Registry ug hinungdanon nga naglihok ingon usa ka hugpong sa mga himan alang sa pagputos, pagpadala, pagtipig ug paghatud sa mga imahe sa Docker. Daghang dagkong serbisyo sa panganod ang nagtanyag sa mga produkto nga nakabase sa Distribution. Salamat sa kini nga dugang nga atensyon, ang proyekto sa Distribution nakabenepisyo gikan sa mga tuig nga pag-uswag, labing maayo nga mga gawi sa seguridad, ug pagsulay sa uma nga naghimo niini nga usa sa labing malampuson nga wala mailhi nga mga bayani sa Open Source nga kalibutan.

Apan nahibal-an ba nimo nga ang Proyekto sa Pag-apod-apod gidesinyo sa pag-apod-apod sa bisan unsang porma sa sulud, dili lang mga imahe sa sulud?

Salamat sa mga paningkamot Pag-abli sa Inisyatibo sa Container (o OCI), ang mga tsart sa Helm mahimong ibutang sa bisan unsang higayon sa Distribution. Sa pagkakaron, kini nga proseso kay eksperimento. Ang suporta sa pag-login ug uban pang mga bahin nga gikinahanglan alang sa usa ka bug-os nga Helm 3 usa ka trabaho nga nagpadayon, apan kami naghinam-hinam nga makat-on gikan sa mga nadiskobrehan nga nahimo sa OCI ug Distribution teams sulod sa mga katuigan. Ug pinaagi sa ilang pagtudlo ug paggiya, nahibal-an namon kung unsa ang pagpadagan sa usa ka magamit nga serbisyo sa sukod.

Ang usa ka mas detalyado nga paghulagway sa pipila ka umaabot nga mga pagbag-o sa Helm chart repository anaa link.

Pagdumala sa pagpagawas

Sa Helm 3, ang kahimtang sa aplikasyon gisubay sulod sa cluster pinaagi sa usa ka parisan sa mga butang:

  • buhian butang - nagrepresentar sa usa ka aplikasyon pananglitan;
  • sekreto nga bersyon sa pagpagawas - nagrepresentar sa gitinguha nga kahimtang sa aplikasyon sa usa ka piho nga punto sa oras (pananglitan, ang pagpagawas sa usa ka bag-ong bersyon).

Hagit helm install nagmugna og usa ka butang sa pagpagawas ug sekreto nga bersyon sa pagpagawas. Tawag helm upgrade nanginahanglan usa ka butang nga gipagawas (nga mahimo’g mabag-o) ug maghimo usa ka bag-ong bersyon sa pagpagawas nga sekreto nga adunay sulud nga bag-ong mga kantidad ug usa ka andam nga pagpakita.

Ang butang sa pagpagawas adunay impormasyon bahin sa pagpagawas, diin ang pagpagawas usa ka piho nga pag-install sa usa ka ginganlan nga tsart ug mga kantidad. Kini nga butang naghulagway sa taas nga lebel nga metadata bahin sa pagpagawas. Ang butang sa pagpagawas nagpadayon sa tibuok kinabuhi sa aplikasyon ug mao ang tag-iya sa tanang sekreto sa bersyon sa pagpagawas, ingon man sa tanang butang nga direktang gihimo sa Helm chart.

Ang sekreto nga bersyon sa pagpagawas nag-uban sa usa ka pagpagawas sa usa ka serye sa mga pagbag-o (pag-install, pag-update, pag-rollback, pagtangtang).

Sa Helm 2, ang mga rebisyon hilabihan ka makanunayon. Tawag helm install gibuhat v1, ang sunod nga update (upgrade) - v2, ug uban pa. Ang sekreto sa pagpagawas ug pagpagawas sa bersyon nahugno ngadto sa usa ka butang nga nailhang rebisyon. Ang mga pagbag-o gitipigan sa parehas nga namespace sama sa Tiller, nga nagpasabut nga ang matag pagpagawas "global" sa termino sa namespace; isip resulta, usa lang ka pananglitan sa ngalan ang mahimong gamiton.

Sa Helm 3, ang matag pagpagawas gilangkit sa usa o daghang mga sekreto sa bersyon sa pagpagawas. Ang butang sa pagpagawas kanunay naghulagway sa kasamtangan nga pagpagawas nga gipakatap sa Kubernetes. Ang matag release nga bersyon sekreto naghulagway lamang sa usa ka bersyon sa release. Ang usa ka pag-upgrade, pananglitan, maghimo usa ka bag-ong bersyon sa pagpagawas nga sekreto ug dayon usbon ang butang nga gipagawas aron itudlo kana nga bag-ong bersyon. Sa kaso sa usa ka rollback, mahimo nimong gamiton ang mga sekreto sa miaging bersyon sa pagpagawas aron ibalik ang pagpagawas sa miaging estado.

Pagkahuman nga gibiyaan si Tiller, ang Helm 3 nagtipig sa mga datos sa pagpagawas sa parehas nga namespace sama sa pagpagawas. Kini nga pagbag-o nagtugot kanimo sa pag-instalar sa usa ka tsart nga adunay parehas nga ngalan sa pagpagawas sa lain nga namespace, ug ang datos gitipigan tali sa mga pag-update sa cluster / pag-reboot sa etcd. Pananglitan, mahimo nimong i-install ang WordPress sa "foo" namespace ug dayon sa "bar" namespace, ug ang duha nga gipagawas mahimong tawgon nga "wordpress".

Mga pagbag-o sa mga dependency sa tsart

Giputos ang mga tsart (gamit helm package) alang sa paggamit sa Helm 2 mahimong ma-install uban sa Helm 3, bisan pa niana ang chart development workflow hingpit nga gi-overhaul, mao nga pipila ka mga kausaban kinahanglan nga himoon aron sa pagpadayon sa chart development uban sa Helm 3. Sa partikular, ang chart dependency management system nausab.

Ang sistema sa pagdumala sa dependency sa tsart mibalhin gikan sa requirements.yaml ΠΈ requirements.lock sa Chart.yaml ΠΈ Chart.lock. Kini nagpasabot nga ang mga tsart nga migamit sa sugo helm dependency, nanginahanglan pipila ka setup aron magamit sa Helm 3.

Atong tan-awon ang usa ka pananglitan. Atong idugang ang dependency sa tsart sa Helm 2 ug tan-awon kung unsa ang mga pagbag-o kung mobalhin sa Helm 3.

Sa Helm 2 requirements.yaml ingon ani:

dependencies:
- name: mariadb
  version: 5.x.x
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mariadb.enabled
  tags:
    - database

Sa Helm 3, ang parehas nga pagsalig makita sa imong Chart.yaml:

dependencies:
- name: mariadb
  version: 5.x.x
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mariadb.enabled
  tags:
    - database

Ang mga tsart gi-download gihapon ug gibutang sa direktoryo charts/, mao nga mga subchart (subcharts), nga nahimutang sa katalogo charts/, magpadayon sa pagtrabaho nga walay mga kausaban.

Pagpaila sa Library Charts

Ang Helm 3 nagsuporta sa klase sa mga tsart nga gitawag og library chart ( tsart sa librarya). Kini nga tsart gigamit sa ubang mga tsart, apan wala maghimo ug bisan unsang pagpagawas nga mga artifact sa iyang kaugalingon. Ang mga template sa tsart sa library mahimo ra nga magpahayag sa mga elemento define. Ang ubang mga sulod gibalewala lang. Gitugotan niini ang mga tiggamit nga magamit pag-usab ug ipaambit ang mga snippet sa code nga magamit sa daghang mga tsart, sa ingon malikayan ang pagdoble ug pagsunod sa prinsipyo uga nga.

Ang mga tsart sa librarya gipahayag sa seksyon dependencies sa file Chart.yaml. Ang pag-instalar ug pagdumala niini walay kalainan sa ubang mga tsart.

dependencies:
  - name: mylib
    version: 1.x.x
    repository: quay.io

Kami naghinam-hinam bahin sa mga kaso sa paggamit nga kini nga sangkap magbukas alang sa mga nag-develop sa tsart, ingon man ang labing kaayo nga mga gawi nga mahimong mogawas gikan sa mga tsart sa librarya.

Unsay sunod?

Ang Helm 3.0.0-alpha.1 mao ang pundasyon diin kita magsugod sa pagtukod og bag-ong bersyon sa Helm. Sa artikulo akong gihulagway ang pipila ka makapaikag nga mga bahin sa Helm 3. Daghan kanila anaa pa sa unang mga hugna sa kalamboan ug kini normal; Ang punto sa pagpagawas sa alpha mao ang pagsulay sa ideya, pagkolekta og feedback gikan sa unang mga tiggamit, ug pagkumpirma sa among mga pangagpas.

Sa diha nga ang alpha nga bersyon gipagawas (hinumdomi nga kini mao nahitabo na - gibanabana. transl.), magsugod mi sa pagdawat ug mga patch para sa Helm 3 gikan sa komunidad. Kinahanglan ka nga maghimo usa ka lig-on nga pundasyon nga nagtugot sa bag-ong pagpaandar nga maugmad ug masagop, ug alang sa mga tiggamit nga mobati nga nalambigit sa proseso pinaagi sa pag-abli sa mga tiket ug paghimo og mga pag-ayo.

Gisulayan nako nga ipasiugda ang pipila sa mga dagkong kalamboan nga moabut sa Helm 3, apan kini nga lista dili kompleto. Ang bug-os nga mapa sa dalan alang sa Helm 3 naglakip sa mga bahin sama sa gipaayo nga mga estratehiya sa pag-update, mas lawom nga panagsama sa OCI nga mga rehistro, ug ang paggamit sa JSON nga mga eskema sa pag-validate sa mga kantidad sa tsart. Nagplano usab kami nga limpyohan ang codebase ug i-update ang mga bahin niini nga napasagdan sa miaging tulo ka tuig.

Kung gibati nimo nga nakalimtan namon ang usa ka butang, gusto namon nga madungog ang imong mga hunahuna!

Apil sa diskusyon sa among Slack nga mga kanal:

  • #helm-users para sa mga pangutana ug yanong komunikasyon sa komunidad;
  • #helm-dev aron hisgutan ang mga hangyo sa pagbitad, code ug mga bug.

Mahimo ka usab nga makig-chat sa among sinemana nga Mga Tawag sa Pampublikong Developer sa Huwebes sa 19:30 MSK. Ang mga miting gipahinungod sa paghisgot sa mga isyu nga gitrabaho sa mga nag-unang developer ug komunidad, ingon man ang mga hilisgutan sa diskusyon alang sa semana. Bisan kinsa mahimong moapil ug moapil sa miting. Magamit ang link sa Slack channel #helm-dev.

PS gikan sa tighubad

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment