Ngenalake Helm 3

Ngenalake Helm 3

Cathetan. nerjemahake.: 16 Mei taun iki minangka tonggak penting ing pangembangan manajer paket kanggo Kubernetes - Helm. Ing dina iki, release alpha pisanan saka versi utama project mangsa - 3.0 - presented. Rilis kasebut bakal nggawa owah-owahan sing signifikan lan ditunggu-tunggu kanggo Helm, sing akeh pangarep-arep ing komunitas Kubernetes. Kita dhewe minangka salah sawijining, amarga aktif nggunakake Helm kanggo panyebaran aplikasi: kita wis nggabungake alat kasebut kanggo ngetrapake CI/CD. werf lan saka wektu kanggo wektu kita menehi kontribusi kanggo pangembangan hulu. Terjemahan iki nggabungake 7 cathetan saka blog Helm resmi, sing darmabakti kanggo release alpha pisanan saka Helm 3 lan ngomong babagan sejarah proyek lan fitur utama Helm 3. Penulis yaiku Matt "bacongobbler" Fisher, karyawan Microsoft. lan salah siji saka maintainers tombol Helm.

Tanggal 15 Oktober 2015, proyek sing saiki dikenal kanthi jeneng Helm lair. Mung setaun sawisé didegaké, komunitas Helm gabung karo Kubernetes, nalika aktif nggarap Helm 2. Ing wulan Juni 2018, Helm gabung karo CNCF minangka proyek ngembangake (inkubasi). Maju kanthi cepet nganti saiki, lan rilis alpha pisanan saka Helm 3 anyar lagi mlaku. (rilis iki wis kelakon ing pertengahan Mei - kira-kira. transl.).

Ing artikel iki, Aku bakal pirembagan bab ngendi iku kabeh wiwit, carane kita tekan ngendi kita saiki, introduce sawetara fitur unik kasedhiya ing release alpha pisanan Helm 3, lan nerangake carane kita rencana kanggo berkembang luwih.

Ringkesan:

  • sajarah tumitah Helm;
  • pamitan tender kanggo Tiller;
  • repositori grafik;
  • manajemen release;
  • owah-owahan ing dependensi grafik;
  • grafik perpustakaan;
  • apa sabanjure?

Sajarah Helm

Lair

Helm 1 diwiwiti minangka proyek Open Source sing digawe dening Deis. Kita padha wiwitan cilik diserap Microsoft ing musim semi 2017. Proyek Open Source liyane, uga dijenengi Deis, duwe alat deisctl, sing digunakake (antara liya) kanggo nginstal lan ngoperasikake platform Deis ing Kluster armada. Nalika iku, Fleet minangka salah sawijining platform orkestrasi kontainer pisanan.

Ing pertengahan 2015, kita mutusake kanggo ngganti dalan lan mindhah Deis (ing wektu iku jenenge Deis Workflow) saka Armada menyang Kubernetes. Salah siji sing pisanan didesain ulang yaiku alat instalasi. deisctl. Kita digunakake kanggo nginstal lan ngatur Deis Workflow ing kluster Armada.

Helm 1 digawe ing gambar manajer paket sing misuwur kayata Homebrew, apt lan yum. Tujuan utama yaiku nyederhanakake tugas kayata ngemas lan nginstal aplikasi ing Kubernetes. Helm resmi dikenalake ing 2015 ing konferensi KubeCon ing San Francisco.

Kita nyoba pisanan karo Helm makarya, nanging ora tanpa watesan serius. Dheweke njupuk seperangkat manifes Kubernetes, dibuwang karo generator minangka pamblokiran YAML pambuka (Materi ngarep)*, lan dimuat asil menyang Kubernetes.

* Cathetan. nerjemahake.: Saka versi pisanan Helm, sintaksis YAML dipilih kanggo njlèntrèhaké sumber daya Kubernetes, lan Cithakan Jinja lan skrip Python didhukung nalika nulis konfigurasi. Kita nulis liyane babagan iki lan struktur versi pisanan Helm ing umum ing bab "A Brief History of Helm" materi iki.

Contone, kanggo ngganti kolom ing file YAML, sampeyan kudu nambah konstruksi ing ngisor iki menyang manifest:

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

Apik banget yen mesin cithakan saiki ana, ta?

Amarga akeh alasan, installer Kubernetes awal iki mbutuhake dhaptar file manifes kanthi kode hard lan mung nglakokake urutan acara sing cilik lan tetep. Pancen angel digunakake amarga tim R&D Deis Workflow ngalami kesulitan nalika nyoba nransfer produk menyang platform iki - nanging wiji ide kasebut wis ditabuh. Upaya pisanan kita minangka kesempatan sinau sing apik: kita ngerti yen kita pancen kepengin banget nggawe alat pragmatis sing ngrampungake masalah saben dina kanggo pangguna.

Adhedhasar pengalaman kesalahan kepungkur, kita wiwit ngembangake Helm 2.

Nggawe Helm 2

Ing pungkasan 2015, tim Google ngubungi kita. Dheweke nggarap alat sing padha kanggo Kubernetes. Deployment Manager kanggo Kubernetes minangka port saka alat sing wis ana sing digunakake kanggo Google Cloud Platform. "Apa kita pengin," pitakone, "nginep sawetara dina kanggo ngrembug babagan persamaan lan bedane?"

Ing Januari 2016, tim Helm and Deployment Manager ketemu ing Seattle kanggo ijol-ijolan ide. Negosiasi kasebut rampung kanthi rencana ambisi: kanggo nggabungake loro proyek kasebut kanggo nggawe Helm 2. Bebarengan karo Deis lan Google, wong lanang saka SkippBox (saiki dadi bagian saka Bitnami - kira-kira transl.), lan kita miwiti nggarap Helm 2.

Kita pengin supaya Helm gampang digunakake, nanging tambahake ing ngisor iki:

  • template grafik kanggo kustomisasi;
  • manajemen intra-cluster kanggo tim;
  • gudang grafik kelas donya;
  • format paket stabil kanthi pilihan teken;
  • prasetya kuwat kanggo versi semantik lan njaga kompatibilitas mundur antarane versi.

Kanggo nggayuh tujuan kasebut, unsur liya wis ditambahake menyang ekosistem Helm. Komponen intra-cluster iki diarani Tiller lan tanggung jawab kanggo nginstal grafik Helm lan ngatur.

Wiwit diluncurake Helm 2 ing 2016, Kubernetes wis nambah sawetara inovasi utama. Ditambahake kontrol akses adhedhasar peran (RBAC), sing pungkasane ngganti Kontrol Akses Berbasis Atribut (ABAC). Jinis sumber daya anyar dikenalake (Panyebaran isih beta nalika iku). Definisi Sumber Daya Kustom (asli diarani Sumber Daya Pihak Ketiga utawa TPR) diciptakake. Lan sing paling penting, sawetara praktik paling apik wis muncul.

Ing kabeh owah-owahan kasebut, Helm terus nglayani pangguna Kubernetes kanthi setya. Sawise telung taun lan akeh tambahan anyar, iku cetha yen wis wektune kanggo nggawe owah-owahan signifikan ing basis kode kanggo mesthekake Helm bisa terus kanggo nyukupi kabutuhan akeh ekosistem berkembang.

A pamitan tender kanggo Tiller

Sajrone pangembangan Helm 2, kita ngenalake Tiller minangka bagéan saka integrasi karo Google's Deployment Manager. Tiller nduwe peran penting kanggo tim sing kerja ing kluster umum: ngidini spesialis beda sing ngoperasikake infrastruktur bisa sesambungan karo rilis sing padha.

Wiwit kontrol akses basis peran (RBAC) diaktifake kanthi standar ing Kubernetes 1.6, nggarap Tiller ing produksi dadi luwih angel. Amarga akeh kemungkinan kabijakan keamanan, posisi kita yaiku nawakake konfigurasi permisif kanthi standar. Iki ngidini wong anyar nyoba Helm lan Kubernetes tanpa kudu nyilem setelan keamanan dhisik. Sayange, konfigurasi ijin iki bisa menehi pangguna kanthi akeh ijin sing ora dibutuhake. Insinyur DevOps lan SRE kudu sinau langkah operasional tambahan nalika nginstal Tiller ing kluster multi-tenant.

Sawise sinau carane masyarakat digunakake Helm ing kahanan tartamtu, kita temen maujud sing sistem manajemen release Tiller ora perlu gumantung ing komponen intra-cluster kanggo njaga negara utawa fungsi minangka hub tengah kanggo informasi release. Nanging, kita mung bisa nampa informasi saka server API Kubernetes, nggawe grafik ing sisih klien, lan nyimpen rekaman instalasi ing Kubernetes.

Tujuan utama Tiller bisa digayuh tanpa Tiller, mula salah sawijining keputusan pertama babagan Helm 3 yaiku ninggalake Tiller.

Kanthi Tiller ora ana, model keamanan Helm wis disederhanakake kanthi radikal. Helm 3 saiki ndhukung kabeh keamanan modern, identitas, lan cara wewenang Kubernetes saiki. Ijin Helm ditemtokake nggunakake file kubeconfig. Administrator kluster bisa mbatesi hak pangguna ing tingkat granularitas apa wae. Rilis isih disimpen ing kluster, lan fungsi liyane Helm tetep utuh.

Repositori grafik

Ing tingkat dhuwur, repositori grafik minangka papan ing ngendi grafik bisa disimpen lan dituduhake. Klien Helm ngemas lan ngirim grafik menyang repositori. Cukup, repositori grafik minangka server HTTP primitif kanthi file index.yaml lan sawetara grafik sing dikemas.

Nalika ana sawetara kaluwihan kanggo Charts Repository API nyukupi syarat panyimpenan paling dhasar, ana uga sawetara kekurangan:

  • Repositori grafik ora kompatibel karo umume implementasi keamanan sing dibutuhake ing lingkungan produksi. Nduwe API standar kanggo otentikasi lan wewenang iku penting banget ing skenario produksi.
  • Alat bukti bagan Helm, digunakake kanggo menehi tandha, verifikasi integritas lan asale saka grafik, minangka bagean opsional saka proses penerbitan Bagan.
  • Ing skenario multi-pangguna, grafik sing padha bisa diunggah dening pangguna liyane, tikel kaping pindho jumlah spasi sing dibutuhake kanggo nyimpen konten sing padha. Repositori sing luwih cerdas wis dikembangake kanggo ngatasi masalah iki, nanging dudu bagean saka spesifikasi resmi.
  • Nggunakake file indeks siji kanggo nggoleki, nyimpen metadata, lan njupuk bagan wis dadi angel kanggo ngembangake implementasi multi-pangguna sing aman.

Proyek kasebut Distribusi Docker (uga dikenal minangka Docker Registry v2) minangka penerus Docker Registry lan sejatine tumindak minangka piranti kanggo kemasan, pengiriman, nyimpen lan ngirim gambar Docker. Akeh layanan awan gedhe sing nawakake produk adhedhasar Distribusi. Thanks kanggo perhatian sing tambah iki, proyek Distribusi wis entuk manfaat saka perbaikan taun, praktik paling apik keamanan, lan uji lapangan sing wis dadi salah sawijining pahlawan tanpa tanda jasa sing paling sukses ing jagad Open Source.

Nanging sampeyan ngerti manawa Proyek Distribusi dirancang kanggo nyebarake konten apa wae, ora mung gambar wadhah?

Thanks kanggo efforts Bukak Inisiatif Kontainer (utawa OCI), denah Helm bisa diselehake ing sembarang conto Distribusi. Saiki, proses iki eksperimen. Dhukungan mlebu lan fitur liyane sing dibutuhake kanggo Helm 3 sing lengkap isih ditindakake, nanging kita seneng sinau saka panemuan sing ditindakake dening tim OCI lan Distribusi sajrone pirang-pirang taun. Lan liwat bimbingan lan tuntunan, kita sinau babagan cara ngoperasikake layanan sing kasedhiya kanthi skala.

Katrangan sing luwih rinci babagan sawetara owah-owahan sing bakal teka ing repositori grafik Helm kasedhiya link.

Manajemen release

Ing Helm 3, status aplikasi dilacak ing kluster kanthi sepasang obyek:

  • obyek release - nggantosi conto aplikasi;
  • release versi rahasia - nggantosi negara dikarepake saka aplikasi ing titik tartamtu ing wektu (contone, release saka versi anyar).

Telpon helm install nggawe obyek release lan release versi rahasia. Telpon helm upgrade mbutuhake obyek rilis (sing bisa diganti) lan nggawe rahasia versi rilis anyar sing ngemot nilai anyar lan manifest sing disiapake.

Obyek rilis ngemot informasi babagan rilis, ing ngendi rilis minangka instalasi tartamtu saka grafik lan nilai sing dijenengi. Objek iki nggambarake metadata tingkat paling dhuwur babagan rilis kasebut. Obyek rilis tetep ing saindhenging siklus urip aplikasi lan dadi pemilik kabeh rahasia versi rilis, uga kabeh obyek sing langsung digawe dening grafik Helm.

Rilis versi rahasia nggandhengake rilis karo seri revisi (instalasi, nganyari, rollbacks, pambusakan).

Ing Helm 2, revisi padha banget konsisten. Telpon helm install digawe v1, nganyari sakteruse (upgrade) - v2, lan ing. Rilis lan release versi rahasia wis ambruk menyang obyek siji dikenal minangka revisi. Revisi disimpen ing papan jeneng sing padha karo Tiller, sing tegese saben rilis "global" ing babagan ruang jeneng; minangka asil, mung siji conto jeneng bisa digunakake.

Ing Helm 3, saben rilis digandhengake karo siji utawa luwih rahasia versi rilis. Obyek rilis tansah nggambarake rilis saiki sing disebarake menyang Kubernetes. Saben rahasia versi rilis mung nggambarake siji versi rilis kasebut. Upgrade, contone, bakal nggawe rahasia versi release anyar lan banjur ngganti obyek release kanggo nuding versi anyar. Ing kasus rollback, sampeyan bisa nggunakake rahasia versi release sadurungé kanggo muter maneh release menyang negara sadurungé.

Sawise Tiller ditinggalake, Helm 3 nyimpen data rilis ing papan jeneng sing padha karo rilis kasebut. Owah-owahan iki ngidini sampeyan nginstal grafik kanthi jeneng rilis sing padha ing papan jeneng sing beda, lan data disimpen ing antarane nganyari kluster / reboot ing etcd. Contone, sampeyan bisa nginstal WordPress ing "foo" namespace banjur ing "bar" namespace, lan loro rilis bisa dijenengi "wordpress".

Owah-owahan ing dependensi grafik

Bagan dikempalken (nggunakake helm package) kanggo nggunakake Helm 2 bisa diinstal nganggo Helm 3, nanging alur kerja pangembangan grafik wis dirombak kanthi lengkap, mula sawetara owah-owahan kudu ditindakake kanggo nerusake pangembangan grafik karo Helm 3. Utamane, sistem manajemen dependensi grafik wis diganti.

Sistem manajemen dependensi grafik wis dipindhah saka requirements.yaml и requirements.lock ing Chart.yaml и Chart.lock. Iki tegese denah sing digunakake printah helm dependency, mbutuhake sawetara persiyapan kanggo bisa ing Helm 3.

Ayo katon ing conto. Ayo tambahake dependensi menyang grafik ing Helm 2 lan deleng owah-owahan nalika pindhah menyang Helm 3.

Ing Helm 2 requirements.yaml katon kaya iki:

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

Ing Helm 3, ketergantungan sing padha bakal katon ing sampeyan Chart.yaml:

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

Bagan isih diundhuh lan diselehake ing direktori charts/, dadi subcharts (subchart), lying ing katalog charts/, bakal terus bisa tanpa owah-owahan.

Ngenalaken Grafik Pustaka

Helm 3 ndhukung kelas grafik sing diarani grafik perpustakaan (buku pustaka). Bagan iki digunakake dening denah liyane, nanging ora nggawe artefak rilis dhewe. Cithakan bagan perpustakaan mung bisa ngumumake unsur define. Isi liyane mung diabaikan. Iki ngidini pangguna nggunakake maneh lan nuduhake potongan kode sing bisa digunakake ing pirang-pirang grafik, saéngga ngindhari duplikasi lan netepi prinsip kasebut. garing.

Bagan perpustakaan diumumake ing bagean kasebut dependencies ing file Chart.yaml. Nginstal lan ngatur ora beda karo grafik liyane.

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

Kita bungah babagan kasus panggunaan komponen iki bakal mbukak kanggo pangembang grafik, uga praktik paling apik sing bisa muncul saka grafik perpustakaan.

Apa sabanjuré?

Helm 3.0.0-alpha.1 minangka pondasi kanggo miwiti mbangun versi anyar saka Helm. Ing artikel aku njlèntrèhaké sawetara fitur menarik saka Helm 3. Akeh sing isih ana ing tahap awal pembangunan lan iki normal; Titik rilis alpha yaiku nyoba ide kasebut, ngumpulake umpan balik saka pangguna awal, lan konfirmasi asumsi kita.

Sanalika versi alpha dirilis (elinga yen iki wis kedaden - kira-kira. transl.), kita bakal miwiti nampa patch kanggo Helm 3 saka masyarakat. Sampeyan kudu nggawe dhasar sing kuat sing ngidini fungsi anyar bisa dikembangake lan diadopsi, lan supaya pangguna bisa melu proses kasebut kanthi mbukak tiket lan ndandani.

Aku wis nyoba nyorot sawetara dandan utama sing teka ing Helm 3, nanging dhaptar iki ora lengkap. Peta dalan lengkap kanggo Helm 3 kalebu fitur kayata strategi nganyari sing luwih apik, integrasi sing luwih jero karo registri OCI, lan panggunaan skema JSON kanggo validasi nilai grafik. Kita uga ngrancang kanggo ngresiki basis kode lan nganyari bagean sing wis diabaikan sajrone telung taun kepungkur.

Yen sampeyan rumangsa ora kejawab, kita bakal seneng ngrungokake pikirane!

Gabung diskusi ing kita Saluran slack:

  • #helm-users kanggo pitakonan lan komunikasi prasaja karo masyarakat;
  • #helm-dev kanggo ngrembug panjalukan narik, kode lan kewan omo.

Sampeyan uga bisa ngobrol ing Pangembang Pangembang Umum mingguan ing Kamis jam 19:30 MSK. Rapat dikhususake kanggo ngrembug masalah sing ditindakake para pangembang utama lan komunitas, uga topik diskusi kanggo minggu kasebut. Sapa wae bisa melu lan melu rapat kasebut. Link kasedhiya ing saluran Slack #helm-dev.

PS saka penerjemah

Waca uga ing blog kita:

Source: www.habr.com

Add a comment