Prezante Helm 3

Prezante Helm 3

Remak. trad.: 16 me ane sa a make yon etap enpòtan nan devlopman manadjè pake pou Kubernetes - Helm. Jou sa a, premye lage alpha nan pwochen pi gwo vèsyon pwojè a - 3.0 - te prezante. Liberasyon li pral pote chanjman enpòtan ak long dire nan Helm, pou ki anpil nan kominote Kubernetes la gen gwo espwa. Nou menm nou se youn nan sa yo, depi nou aktivman itilize Helm pou deplwaman aplikasyon: nou te entegre li nan zouti nou an pou aplike CI/CD. werf ak de tan zan tan nou fè kontribisyon nou an nan devlopman nan en. Tradiksyon sa a konbine 7 nòt ki soti nan blog ofisyèl Helm, ki dedye a premye lage alfa Helm 3 epi pale sou istwa pwojè a ak karakteristik prensipal Helm 3. Otè yo se Matt "bacongobbler" Fisher, yon anplwaye Microsoft. ak youn nan mentè kle Helm.

Nan dat 15 oktòb 2015, pwojè a kounye a ke yo rekonèt kòm Helm te fèt. Jis yon ane apre fondasyon li a, kominote Helm te rantre nan Kubernetes, pandan y ap travay aktivman sou Helm 2. Nan mwa jen 2018, Helm. te rantre nan CNCF la kòm yon pwojè devlope (enkubasyon). Vit pou pi devan nan prezan an, ak premye lage alfa nan nouvo Helm 3 la sou wout li. (version sa a te deja fèt nan mitan mwa me - approx. trad.).

Nan atik sa a, mwen pral pale sou kote tout bagay te kòmanse, ki jan nou te rive kote nou ye jodi a, prezante kèk nan karakteristik inik ki disponib nan premye lage alfa Helm 3, epi eksplike kijan nou planifye pou devlope pi lwen.

Rezime:

  • istwa kreyasyon Helm;
  • yon orevwa sansib pou Tiller;
  • depo tablo;
  • jesyon lage;
  • chanjman nan depandans tablo;
  • tablo bibliyotèk;
  • kisa kap vini?

Istwa Helm

Nesans

Helm 1 te kòmanse kòm yon pwojè Open Source ki te kreye pa Deis. Nou te yon ti startup absòbe Microsoft nan prentan 2017. Lòt pwojè Open Source nou an, ki rele tou Deis, te gen yon zouti deisctl, ki te itilize (pami lòt bagay) enstale ak opere platfòm la Deis nan Gwoup flòt. Nan moman sa a, Fleet se te youn nan premye platfòm òkestrasyon veso yo.

Nan mitan ane 2015, nou te deside chanje kou ak deplase Deis (nan moman sa a te chanje non Deis Workflow) soti nan Fleet nan Kubernetes. Youn nan premye yo dwe reamenaje se zouti enstalasyon an. deisctl. Nou itilize li pou enstale ak jere Deis Workflow nan gwoup Fleet la.

Helm 1 te kreye nan imaj la nan manadjè pake pi popilè tankou Homebrew, apt ak yum. Objektif prensipal li se te senplifye travay tankou anbalaj ak enstale aplikasyon sou Kubernetes. Helm te prezante ofisyèlman an 2015 nan konferans KubeCon nan San Francisco.

Premye tantativ nou ak Helm te travay, men li pa t san kèk limit grav. Li te pran yon seri manifest Kubernetes, aromatize ak jeneratè kòm blòk YAML entwodiksyon. (matyè devan)*, epi chaje rezilta yo nan Kubernetes.

* Remak. trad.: Soti nan premye vèsyon Helm, yo te chwazi sentaks YAML pou dekri resous Kubernetes, epi yo te sipòte modèl Jinja ak scripts Python lè yo te ekri konfigirasyon yo. Nou te ekri plis enfòmasyon sou sa a ak estrikti premye vèsyon Helm an jeneral nan chapit "A Brief History of Helm" la. materyèl sa a.

Pou egzanp, pou ranplase yon jaden nan yon dosye YAML, ou te oblije ajoute konstriksyon sa a nan manifest la:

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

Li bon ke motè modèl egziste jodi a, pa vre?

Pou plizyè rezon, enstalatè Kubernetes bonè sa a te mande yon lis fichye manifest ki kode di e sèlman te egzekite yon ti sekans fiks evènman yo. Li te tèlman difisil pou itilize ke ekip Deis Workflow R&D te gen yon moman difisil lè yo te eseye transfere pwodwi yo sou platfòm sa a - sepandan, grenn lide a te deja simen. Premye tantativ nou an se te yon gwo opòtinite aprantisaj: nou reyalize nou te vrèman pasyone sou kreye zouti pragmatik ki rezoud pwoblèm chak jou pou itilizatè nou yo.

Dapre eksperyans erè ki te pase yo, nou te kòmanse devlope Helm 2.

Fè Helm 2

Nan fen ane 2015, ekip Google la te kontakte nou. Yo t ap travay sou yon zouti ki sanble pou Kubernetes. Manadjè Deplwaman pou Kubernetes se te yon pò nan yon zouti ki egziste deja ki te itilize pou Google Cloud Platform. "Èske nou ta renmen," yo te mande, "pase kèk jou diskite sou resanblans ak diferans yo?"

Nan mwa janvye 2016, ekip Helm ak Manadjè Deplwaman yo te rankontre nan Seattle pou fè echanj lide. Negosyasyon yo te fini ak yon plan anbisye: konbine tou de pwojè yo pou kreye Helm 2. Ansanm ak Deis ak Google, mesye yo soti nan SkippBox (kounye a yon pati nan Bitnami - apeprè tradiksyon), epi nou te kòmanse travay sou Helm 2.

Nou te vle kenbe fasilite Helm pou itilize, men ajoute bagay sa yo:

  • modèl tablo pou personnalisation;
  • jesyon intra-cluster pou ekip;
  • depo tablo klas mondyal;
  • fòma pake ki estab ak opsyon siyati;
  • yon angajman solid nan vèsyon semantik ak kenbe konpatibilite bak ant vèsyon yo.

Pou reyalize objektif sa yo, yo te ajoute yon dezyèm eleman nan ekosistèm Helm la. Eleman anndan gwoup sa a te rele Tiller e li te responsab pou enstale tablo Helm ak jere yo.

Depi lage Helm 2 an 2016, Kubernetes te ajoute plizyè gwo inovasyon. Te ajoute kontwòl aksè ki baze sou wòl (RBAC), ki finalman ranplase kontwòl aksè ki baze sou atribi (ABAC). Nouvo kalite resous yo te prezante (Deplwaman te toujou nan beta nan moman an). Definisyon Resous Custom (orijinèlman yo rele Resous Twazyèm Pati oswa TPRs) yo te envante. Ak pi enpòtan, yon seri pi bon pratik parèt.

Nan mitan tout chanjman sa yo, Helm te kontinye sèvi itilizatè Kubernetes fidèlman. Apre twazan ak anpil nouvo adisyon, li te klè ke li te tan pou fè chanjman enpòtan nan baz kòd la pou asire Helm te kapab kontinye satisfè bezwen k ap grandi nan yon ekosistèm evolye.

Yon orevwa sansib pou Tiller

Pandan devlopman Helm 2, nou te prezante Tiller kòm yon pati nan entegrasyon nou ak Manadjè Deplwaman Google la. Tiller te jwe yon wòl enpòtan pou ekip k ap travay nan yon gwoup komen: li te pèmèt diferan espesyalis ki opere enfrastrikti a pou kominike avèk menm seri degaje yo.

Depi kontwòl aksè ki baze sou wòl (RBAC) te pèmèt pa default nan Kubernetes 1.6, travay ak Tiller nan pwodiksyon te vin pi difisil. Akòz yon gwo kantite politik sekirite posib, pozisyon nou an te ofri yon konfigirasyon toleran pa default. Sa a pèmèt newbies yo fè eksperyans ak Helm ak Kubernetes san yo pa oblije plonje nan anviwònman sekirite an premye. Malerezman, konfigirasyon pèmisyon sa a te kapab bay itilizatè a yon seri otorizasyon twò laj ke yo pa t bezwen. Enjenyè DevOps ak SRE te oblije aprann etap operasyonèl adisyonèl lè yo te enstale Tiller nan yon gwoup ki gen plizyè lokatè.

Apre nou fin aprann kijan kominote a te itilize Helm nan sitiyasyon espesifik, nou te reyalize ke sistèm jesyon lage Tiller a pa t bezwen konte sou yon eleman andedan gwoup la pou kenbe eta oswa fonksyone kòm yon sant santral pou enfòmasyon sou divilgasyon. Olye de sa, nou ta ka tou senpleman resevwa enfòmasyon ki soti nan sèvè Kubernetes API, jenere yon tablo sou bò kliyan an, epi estoke yon dosye enstalasyon an nan Kubernetes.

Objektif prensipal Tiller te kapab reyalize san Tiller, kidonk youn nan premye desizyon nou yo konsènan Helm 3 se te abandone konplètman Tiller.

Avèk Tiller ale, modèl sekirite Helm a te senplifye radikalman. Helm 3 kounye a sipòte tout sekirite modèn, idantite, ak otorizasyon metòd Kubernetes aktyèl yo. Otorizasyon Helm yo detèmine lè l sèvi avèk dosye kubeconfig. Administratè Cluster yo ka mete restriksyon sou dwa itilizatè yo nan nenpòt nivo granularite. Release yo toujou sove nan gwoup la, ak rès la nan fonksyonalite Helm a rete entak.

Depo tablo yo

Nan yon wo nivo, yon depo tablo se yon plas kote tablo yo ka estoke epi pataje. Kliyan Helm la pake epi voye tablo yo nan repozitwa a. Senpleman mete, yon depo tablo se yon sèvè HTTP primitif ak yon fichye index.yaml ak kèk tablo pake.

Pandan ke gen kèk avantaj nan Charts Repository API ki satisfè kondisyon depo debaz yo, gen kèk dezavantaj tou:

  • Repozitwa tablo yo pa konpatib ak pifò aplikasyon sekirite ki nesesè nan yon anviwònman pwodiksyon. Gen yon API estanda pou otantifikasyon ak otorizasyon trè enpòtan nan senaryo pwodiksyon an.
  • Zouti pwovens tablo Helm yo, yo itilize pou siyen, verifye entegrite ak pwovens yon tablo, se yon pati si ou vle nan pwosesis pibliye Tablo.
  • Nan senaryo milti-itilizatè, yon lòt itilizatè ka telechaje menm tablo a, sa ki double kantite espas ki nesesè pou konsève menm kontni an. Yo te devlope depo pi entelijan pou rezoud pwoblèm sa a, men yo pa fè pati spesifikasyon fòmèl la.
  • Sèvi ak yon sèl fichye endèks pou chèche, estoke metadata, ak rekipere tablo yo te fè li difisil pou devlope aplikasyon an sekirite pou plizyè itilizatè.

Pwojè Docker Distribisyon (ki rele tou Docker Registry v2) se siksesè Docker Registry epi li esansyèlman aji kòm yon seri zouti pou anbalaj, anbake, estoke ak livrezon imaj Docker. Anpil gwo sèvis nwaj ofri pwodwi ki baze sou distribisyon. Mèsi a plis atansyon sa a, pwojè Distribisyon an te benefisye de ane amelyorasyon, pi bon pratik sekirite, ak tès jaden ki te fè li youn nan ewo ki gen plis siksè nan monn Open Source.

Men, èske w te konnen Pwojè Distribisyon an te fèt pou distribye nenpòt fòm kontni, pa sèlman imaj veso?

Mèsi a efò yo Inisyativ Open Container (oswa OCI), tablo Helm yo ka mete sou nenpòt egzanp Distribisyon. Pou kounye a, pwosesis sa a se eksperimantal. Sipò pou konekte ak lòt karakteristik ki nesesè pou yon Helm 3 konplè se yon travay k ap fèt, men nou kontan aprann nan dekouvèt ekip OCI ak Distribisyon yo te fè pandan ane yo. Epi atravè konsèy ak konsèy yo, nou aprann kisa sa ye pou opere yon sèvis ki trè disponib nan echèl.

Yon deskripsyon pi detaye sou kèk chanjman k ap vini nan depo tablo Helm yo disponib по ссылке.

Jesyon lage

Nan Helm 3, eta aplikasyon an swiv nan gwoup la pa yon pè objè:

  • lage objè - reprezante yon egzanp aplikasyon;
  • lage vèsyon sekrè - reprezante eta a vle nan aplikasyon an nan yon pwen espesifik nan tan (pa egzanp, liberasyon an nan yon nouvo vèsyon).

Defi helm install kreye yon objè lage ak sekrè vèsyon lage. Rele helm upgrade mande pou yon objè lage (ki li ka chanje) epi li kreye yon nouvo sekrè vèsyon lage ki gen nouvo valè yo ak yon manifest prepare.

Release objè gen enfòmasyon sou liberasyon an, kote lage se yon enstalasyon espesifik nan yon tablo ak valè yo nonmen. Objè sa a dekri metadata wo nivo sou liberasyon an. Objè lage a pèsiste pandan tout sik lavi aplikasyon an epi li se pwopriyetè tout sekrè vèsyon vèsyon an, ansanm ak tout objè ki dirèkteman kreye pa tablo Helm la.

Release vèsyon sekrè asosye yon lage ak yon seri de revizyon (enstalasyon, mizajou, rollbacks, efase).

Nan Helm 2, revizyon yo te trè konsistan. Rele helm install kreye v1, aktyalizasyon ki vin apre a (mizajou) - v2, ak sou sa. Lage ak lage vèsyon sekrè yo te tonbe nan yon sèl objè ke yo rekonèt kòm revizyon. Revizyon yo te estoke nan espas non an menm jan ak Tiller, ki vle di ke chak lage te "global" an tèm de espas non; kòm yon rezilta, sèlman yon egzanp nan non an te kapab itilize.

Nan Helm 3, chak lage asosye ak youn oswa plis sekrè vèsyon vèsyon. Objè lage a toujou dekri lage aktyèl la deplwaye nan Kubernetes. Chak sekrè vèsyon lage dekri sèlman yon vèsyon nan lage sa a. Yon amelyorasyon, pou egzanp, pral kreye yon sekrè nouvo vèsyon vèsyon epi answit chanje objè a lage pou lonje dwèt sou nouvo vèsyon sa a. Nan ka yon rollback, ou ka itilize sekrè vèsyon vèsyon anvan yo woule tounen liberasyon an nan yon eta anvan.

Apre yo fin abandone Tiller, Helm 3 magazen done lage nan menm espas non ak lage a. Chanjman sa a pèmèt ou enstale yon tablo ki gen menm non lage nan yon espas non diferan, epi done yo sove ant mizajou gwoup / rdemare nan elatriye. Pou egzanp, ou ka enstale WordPress nan espas non "foo" a ak Lè sa a, nan espas non "bar" la, epi tou de degaje yo ka rele "wordpress".

Chanjman nan depandans tablo yo

Tablo chaje (itilize helm package) pou itilize ak Helm 2 ka enstale ak Helm 3, sepandan workflow devlopman tablo a te konplètman ekzamine, kidonk kèk chanjman dwe fèt pou kontinye devlopman tablo ak Helm 3. An patikilye, sistèm jesyon depandans tablo a chanje.

Sistèm jesyon depandans tablo a te deplase soti nan requirements.yaml и requirements.lock sou Chart.yaml и Chart.lock. Sa vle di ke tablo yo ki te itilize kòmandman an helm dependency, mande kèk konfigirasyon pou travay nan Helm 3.

Ann gade yon egzanp. Ann ajoute yon depandans nan tablo a nan Helm 2 epi wè sa ki chanje lè w ap deplase nan Helm 3.

Nan Helm 2 requirements.yaml te sanble sa a:

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

Nan Helm 3, menm depandans lan pral reflete nan ou Chart.yaml:

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

Tablo yo toujou telechaje epi mete yo nan anyè a charts/, se konsa subcharts (sou-graphiques), kouche nan katalòg la charts/, ap kontinye travay san chanjman.

Prezante tablo bibliyotèk yo

Helm 3 sipòte yon klas tablo yo rele tablo bibliyotèk (tablo bibliyotèk). Tablo sa a itilize pa lòt tablo, men li pa kreye okenn zafè lage poukont li. Modèl tablo bibliyotèk yo ka sèlman deklare eleman yo define. Lòt kontni tou senpleman inyore. Sa a pèmèt itilizatè yo reitilize epi pataje fragments kòd ki ka itilize nan plizyè tablo, kidonk evite repetisyon ak konfòme yo ak prensip la. DRY.

Tablo bibliyotèk yo deklare nan seksyon an dependencies nan dosye Chart.yaml. Enstale ak jere yo pa diferan de lòt tablo yo.

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

Nou kontan anpil sou ka itilizasyon eleman sa a pral louvri pou devlopè tablo yo, ansanm ak pi bon pratik ki ka soti nan tablo bibliyotèk yo.

Ki sa ki nan pwochen?

Helm 3.0.0-alpha.1 se fondasyon nou kòmanse bati yon nouvo vèsyon Helm. Nan atik la mwen dekri kèk karakteristik enteresan nan Helm 3. Anpil nan yo toujou nan premye etap yo nan devlopman e sa a se nòmal; Pwen an nan yon lage alfa se teste lide a, rasanble fidbak nan itilizatè bonè, ak konfime sipozisyon nou yo.

Le pli vit ke vèsyon an alfa lage (sonje ke sa a se deja rive - approx. trad.), nou pral kòmanse aksepte patch pou Helm 3 nan men kominote a. Ou bezwen kreye yon fondasyon solid ki pèmèt nouvo fonksyonalite yo dwe devlope ak adopte, epi pou itilizatè yo santi yo patisipe nan pwosesis la lè yo louvri tikè ak fè repare.

Mwen te eseye mete aksan sou kèk nan pi gwo amelyorasyon ki vini nan Helm 3, men lis sa a pa konplè. Fèy wout konplè pou Helm 3 gen ladan karakteristik tankou estrateji aktyalizasyon amelyore, entegrasyon pi pwofon ak rejis OCI, ak itilizasyon chema JSON pou valide valè tablo yo. Nou planifye tou pou netwaye kodbaz la epi mete ajou pati nan li ki te neglije pandan twa ane ki sot pase yo.

Si ou santi ke nou te rate yon bagay, nou ta renmen tande panse ou!

Antre nan diskisyon an sou nou an Chanèl slack:

  • #helm-users pou kesyon ak kominikasyon senp ak kominote a;
  • #helm-dev pou diskite sou demann rale, kòd ak pinèz.

Ou ka koze tou nan Apèl Pwomotè Piblik nou yo chak semèn nan Jedi a 19:30 MSK. Reyinyon yo dedye a diskite sou pwoblèm ke devlopè kle yo ak kominote a ap travay sou yo, ansanm ak sijè diskisyon pou semèn nan. Nenpòt moun ka patisipe epi patisipe nan reyinyon an. Lyen ki disponib nan chanèl Slack #helm-dev.

PS soti nan tradiktè

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè