Ngawanohkeun Helm 3

Ngawanohkeun Helm 3

Catetan. narjamahkeun.: 16 Mei taun ieu nandaan hiji milestone signifikan dina ngembangkeun manajer pakét pikeun Kubernetes - Helm. Dina dinten ieu, sékrési alfa munggaran tina versi utama proyék hareup - 3.0 - dibere. release na bakal mawa parobahan signifikan jeung lila-tunggu ka Helm, nu loba di komunitas Kubernetes boga harepan luhur. Kami sorangan mangrupikeun salah sahiji, sabab kami aktip ngagunakeun Helm pikeun panyebaran aplikasi: kami parantos ngahijikeun kana alat kami pikeun ngalaksanakeun CI / CD. werf sareng ti waktos ka waktos urang nyumbang kana pangwangunan hulu. Tarjamahan ieu ngagabungkeun 7 catetan ti blog Helm resmi, nu dedicated ka release alfa munggaran Helm 3 jeung ngobrol ngeunaan sajarah proyék jeung fitur utama Helm 3. Panulis maranéhanana nyaéta Matt "bacongobbler" Fisher, hiji pagawe Microsoft. sarta salah sahiji maintainers konci Helm.

Dina 15 Oktober 2015, proyék ayeuna katelah Helm lahir. Ngan sataun sanggeus ngadegna, komunitas Helm ngagabung Kubernetes, bari aktip dipake dina Helm 2. Dina Juni 2018, Helm ngagabung ka CNCF salaku proyék ngembang (incubating). Maju gancang ka ayeuna, sareng sékrési alfa munggaran tina Helm 3 énggal nuju jalan. (pelepasan ieu geus lumangsung dina pertengahan Méi - approx. tarjamah.).

Dina sapotong ieu, kuring bakal ngobrol ngeunaan dimana eta sadayana dimimitian, kumaha urang nepi ka mana kami kiwari, ngenalkeun sababaraha fitur unik sadia dina release alfa munggaran Helm 3, sarta ngajelaskeun kumaha urang rencanana maju.

Ringkesan:

  • sajarah kreasi Helm;
  • pamitan lembut pikeun Tiller;
  • repositories bagan;
  • manajemén release;
  • parobahan dina kagumantungan bagan;
  • grafik perpustakaan;
  • naon salajengna?

Sajarah Helm

kalahiran

Helm 1 dimimitian kaluar salaku proyék Open Source dijieun ku Deis. Kami hiji ngamimitian leutik diserep Microsoft dina musim semi 2017. Proyék Open Source kami anu sanés, ogé namina Deis, ngagaduhan alat deisctl, anu digunakeun (antara lain) pikeun masang sareng ngoperasikeun platform Deis di Klaster armada. Dina waktos éta, Armada mangrupikeun salah sahiji platform orkestrasi wadah anu munggaran.

Dina pertengahan 2015, kami mutuskeun pikeun ngarobah kursus sareng ngalihkeun Deis (dina waktos éta namina Deis Workflow) ti Armada ka Kubernetes. Salah sahiji anu pangheulana didesain ulang nyaéta alat pamasangan. deisctl. Kami nganggo éta pikeun masang sareng ngatur Deis Workflow dina klaster Armada.

Helm 1 didamel dina gambar manajer pakét anu kasohor sapertos Homebrew, apt sareng yum. Tujuan utamina nya éta pikeun nyederhanakeun tugas sapertos bungkusan sareng masang aplikasi dina Kubernetes. Helm sacara resmi diwanohkeun dina 2015 dina konperénsi KubeCon di San Fransisco.

usaha munggaran urang kalawan Helm digawé, tapi teu tanpa sababaraha watesan serius. Anjeunna nyandak sakumpulan manifes Kubernetes, dirasakeun ku generator salaku blok YAML bubuka (Materi hareup)*, sareng ngamuat hasil kana Kubernetes.

* Catetan. narjamahkeun.: Ti versi mimiti Helm, sintaksis YAML dipilih pikeun ngajelaskeun sumberdaya Kubernetes, sarta Jinja témplat jeung Aksara Python dirojong nalika nulis konfigurasi. Kami nyerat langkung seueur ngeunaan ieu sareng struktur versi munggaran Helm sacara umum dina bab "Sajarah Singkat Helm" bahan ieu.

Salaku conto, pikeun ngagentos sawah dina file YAML, anjeun kedah nambihan konstruksi di handap ieu kana manifest:

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

Ieu hébat yén mesin template aya kiwari, teu eta?

Ku sababaraha alesan, installer Kubernetes awal ieu merlukeun daptar hard-coded file manifest sarta ngan dieksekusi leutik, runtuyan tetep kajadian. Hésé pisan ngagunakeun éta tim Deis Workflow R&D ngalaman kasusah nalika aranjeunna nyobian nransferkeun produkna ka platform ieu - tapi, bibit ideu parantos ditaburkeun. Usaha kahiji kami mangrupikeun kasempetan diajar anu saé: kami sadar yén kami leres-leres gairah pikeun nyiptakeun alat pragmatis anu ngarengsekeun masalah sapopoé pikeun pangguna urang.

Dumasar pangalaman kasalahan kaliwat, urang mimitian ngembangkeun Helm 2.

Nyieun Helm 2

Dina ahir 2015, tim Google ngahubungi kami. Aranjeunna damel dina alat anu sami pikeun Kubernetes. Manajer Deployment pikeun Kubernetes mangrupikeun palabuhan tina alat anu tos aya anu dianggo pikeun Google Cloud Platform. "Naha urang hoyong," aranjeunna naroskeun, "nyéépkeun sababaraha dinten pikeun ngabahas sasaruaan sareng bédana?"

Dina Januari 2016, tim Helm and Deployment Manager patepung di Seattle pikeun tukeur ide. The hungkul réngsé kalawan rencana ambisius: pikeun ngagabungkeun duanana proyék pikeun nyieun Helm 2. Marengan Deis sarta Google, guys ti SkippBox (ayeuna bagian tina Bitnami - approx. transl.), sareng urang ngamimitian damel di Helm 2.

Kami hoyong ngagampangkeun panggunaan Helm, tapi tambahkeun ieu:

  • témplat bagan pikeun kustomisasi;
  • manajemén intra-cluster pikeun tim;
  • gudang bagan kelas dunya;
  • format pakét stabil kalayan pilihan signature;
  • komitmen kuat ka versioning semantis jeung ngajaga kasaluyuan mundur antara versi.

Pikeun ngahontal tujuan ieu, unsur kadua geus ditambahkeun kana ékosistem Helm. Komponén intra-cluster ieu disebut Tiller sareng tanggung jawab pikeun masang grafik Helm sareng ngaturana.

Kusabab sékrési Helm 2 di 2016, Kubernetes parantos nambihan sababaraha inovasi utama. Ditambahkeun kontrol aksés dumasar peran (basa sunda), anu pamustunganana ngagantikeun Atribut-Based Access Control (ABAC). Jenis sumberdaya anyar diwanohkeun (Deployments masih dina béta dina waktos éta). Watesan Sumberdaya Adat (asalna disebut Sumber Daya Pihak Katilu atanapi TPR) diciptakeun. Sareng anu paling penting, sakumpulan prakték pangsaéna parantos muncul.

Ditengah sadaya parobihan ieu, Helm terus ngalayanan pangguna Kubernetes kalayan satia. Saatos tilu taun sareng seueur tambihan énggal, éta écés yén éta waktuna pikeun ngadamel parobihan anu signifikan kana codebase pikeun mastikeun Helm tiasa terus nyumponan kabutuhan ékosistem anu ngembang.

A pamitan lembut pikeun Tiller

Salila pamekaran Helm 2, kami ngenalkeun Tiller salaku bagian tina integrasi kami sareng Manajer Deployment Google. Tiller maénkeun peran anu penting pikeun tim anu damel dina kluster umum: éta ngamungkinkeun para spesialis anu béda anu ngoperasikeun infrastruktur pikeun berinteraksi sareng sét sékrési anu sami.

Kusabab kontrol aksés dumasar-peran (RBAC) diaktipkeun sacara standar dina Kubernetes 1.6, gawé bareng Tiller dina produksi janten langkung hese. Kusabab sajumlah ageung kamungkinan kawijakan kaamanan, posisi kami nyaéta nawiskeun konfigurasi permisif sacara standar. Hal ieu ngamungkinkeun para pemula pikeun ékspérimén sareng Helm sareng Kubernetes tanpa kedah teuleum heula kana setélan kaamanan. Hanjakalna, konfigurasi idin ieu tiasa masihan pangguna sauntuyan idin anu lega teuing anu henteu diperyogikeun. Insinyur DevOps sareng SRE kedah diajar léngkah operasional tambahan nalika masang Tiller dina klaster multi-tenant.

Sanggeus diajar kumaha masarakat dipaké Helm dina situasi husus, urang sadar yén sistem manajemen release Tiller urang teu perlu ngandelkeun komponén intra-cluster pikeun ngajaga kaayaan atawa fungsi salaku hub sentral pikeun émbaran release. Gantina, urang ngan saukur bisa nampa informasi ti server API Kubernetes, ngahasilkeun bagan di sisi klien tur nyimpen rékaman tina pamasangan di Kubernetes.

Tujuan utama Tiller tiasa dihontal tanpa Tiller, janten salah sahiji kaputusan munggaran urang ngeunaan Helm 3 nyaéta pikeun ngantunkeun Tiller.

Kalayan Tiller musna, modél kaamanan Helm parantos disederhanakeun sacara radikal. Helm 3 ayeuna ngadukung sadaya metode kaamanan, identitas, sareng otorisasi modern tina Kubernetes ayeuna. Idin Helm ditangtukeun ngagunakeun kubeconfig file. Administrator klaster tiasa ngabatesan hak pangguna kana tingkatan granularitas naon waé. Kaluaran masih disimpen dina kluster, sareng sesa fungsionalitas Helm tetep gembleng.

Repositories bagan

Dina tingkat anu luhur, gudang bagan mangrupikeun tempat dimana bagan tiasa disimpen sareng dibagikeun. Klien Helm ngarangkep sareng ngirimkeun grafik ka gudang. Kantun nempatkeun, gudang grafik mangrupakeun server HTTP primitif kalawan file index.yaml sarta sababaraha grafik rangkep.

Sanaos aya sababaraha kaunggulan pikeun Charts Repository API nyumponan sarat panyimpen paling dasar, aya ogé sababaraha kalemahan:

  • Repositori bagan henteu cocog sareng kalolobaan palaksanaan kaamanan anu diperyogikeun dina lingkungan produksi. Gaduh API standar pikeun auténtikasi sareng otorisasina penting pisan dina skenario produksi.
  • Alat kabuktian bagan Helm, dipaké pikeun nandatanganan, pariksa integritas sareng kabuktian bagan, mangrupikeun bagian pilihan tina prosés penerbitan Bagan.
  • Dina skenario multi-pamaké, bagan anu sarua bisa diunggah ku pamaké séjén, duka kali jumlah spasi diperlukeun pikeun nyimpen eusi sarua. Repositories smarter geus dimekarkeun pikeun ngajawab masalah ieu, tapi aranjeunna henteu bagian tina spésifikasi formal.
  • Ngagunakeun file indéks tunggal pikeun néangan, nyimpen metadata, sarta retrieving grafik geus nyieun hésé pikeun ngembangkeun aman palaksanaan multi-pamaké.

proyek Docker Distribusi (ogé katelah Docker Registry v2) nyaéta panerusna Docker Registry sareng dasarna janten sakumpulan alat pikeun bungkusan, pengiriman barang, nyimpen sareng ngirimkeun gambar Docker. Seueur jasa awan ageung nawiskeun produk dumasar-Distribusi. Hatur nuhun kana ngaronjat perhatian ieu, proyék Distribusi geus benefited ti taun perbaikan, prakték pangalusna kaamanan, sarta uji lapangan nu geus nyieun salah sahiji pahlawan unsung tersukses dunya Open Source.

Tapi naha anjeun terang yén Proyék Distribusi dirancang pikeun ngadistribusikaeun naon waé bentuk eusi, sanés ngan ukur gambar wadahna?

Hatur nuhun kana usaha Buka Wadah Inisiatif (atanapi OCI), Bagan Helm tiasa disimpen dina sagala conto Distribusi. Pikeun ayeuna mah, prosés ieu téh ékspériméntal. Pangrojong login sareng fitur-fitur sanés anu dipikabutuh pikeun Helm 3 lengkep mangrupikeun padamelan, tapi kami bungah pikeun diajar tina pamanggihan anu dilakukeun ku tim OCI sareng Distribusi salami mangtaun-taun. Sareng ngalangkungan bimbingan sareng bimbinganna, urang diajar kumaha éta ngajalankeun jasa anu sayogi dina skala.

Katerangan anu langkung detil ngeunaan sababaraha parobihan anu bakal datang ka repositori bagan Helm sayogi link.

manajemén release

Dina Helm 3, kaayaan aplikasi dilacak dina klaster ku sapasang objék:

  • obyék ngaleupaskeun - ngagambarkeun conto aplikasi;
  • sékrési versi rusiah - ngagambarkeun kaayaan nu dipikahoyong tina aplikasi dina titik husus dina jangka waktu (contona, sékrési versi anyar).

nelpon helm install nyiptakeun obyék release sarta ngaleupaskeun rusiah versi. Nelepon helm upgrade merlukeun obyék release (anu bisa ngarobah) jeung nyieun rusiah versi release anyar ngandung nilai anyar jeung manifest disusun.

Obyék pelepasan ngandung émbaran ngeunaan sékrési, dimana sékrési mangrupikeun pamasangan khusus tina bagan sareng nilai anu namina. Obyék ieu ngajelaskeun metadata tingkat luhur ngeunaan sékrési éta. Objék sékrési tetep sapanjang siklus hirup aplikasi tur mangrupakeun nu boga sagala rusiah versi release, kitu ogé sakabéh objék nu langsung dijieun ku bagan Helm.

Release version secret associates a release with a series of revisions (instalasi, updates, rollbacks, deleted).

Dina Helm 2, révisi éta pisan konsisten. Nelepon helm install dijieun v1, update saterusna (pamutahiran) - v2, jeung saterusna. Release jeung release versi rusiah geus rubuh jadi hiji objek katelah révisi. Révisi disimpen dina spasi ngaran anu sarua sakumaha Tiller, nu hartina unggal release "global" dina watesan namespace; Hasilna, ngan ukur hiji conto nami anu tiasa dianggo.

Dina Helm 3, unggal release pakait sareng hiji atawa leuwih Rahasia versi release. Obyék sékrési salawasna ngajelaskeun sékrési ayeuna anu disebarkeun ka Kubernetes. Unggal rusiah versi release ngajelaskeun ngan hiji versi release éta. Pamutahiran, contona, bakal nyiptakeun rusiah versi sékrési anyar teras ngarobih obyék sékrési pikeun nunjuk kana versi énggal éta. Dina kasus rollback a, anjeun tiasa nganggo rusiah versi release saméméhna pikeun roll deui release ka kaayaan saméméhna.

Saatos Tiller ditinggalkeun, Helm 3 nyimpen data sékrési dina spasi ngaran sarua salaku release. Parobihan ieu ngamungkinkeun anjeun masang bagan sareng nami sékrési anu sami dina rohangan ngaran anu béda, sareng datana disimpen antara apdet klaster / reboots dina jsb. Contona, anjeun tiasa masang WordPress dina "foo" namespace lajeng dina "bar" namespace, sarta duanana release bisa ngaranna "wordpress".

Parobahan ka dependensi bagan

Bagan dipak (nganggo helm package) pikeun pamakéan kalawan Helm 2 bisa dipasang kalawan Helm 3, tapi workflow ngembangkeun bagan geus sagemblengna overhauled, jadi sababaraha parobahan kudu dilakukeun pikeun nuluykeun ngembangkeun grafik kalawan Helm 3. Khususna, sistem manajemen kagumantungan bagan geus robah.

Sistim manajemén kagumantungan bagan urang geus dipindahkeun ti requirements.yaml и requirements.lock dina Chart.yaml и Chart.lock. Ieu ngandung harti yén grafik anu dipaké paréntah helm dependency, merlukeun sababaraha setelan pikeun digawé di Helm 3.

Hayu urang nempo hiji conto. Hayu urang tambahkeun kagumantungan kana bagan dina Helm 2 sareng tingali naon anu robih nalika pindah ka Helm 3.

Dina Helm 2 requirements.yaml kasampak kawas kieu:

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

Dina Helm 3, kagumantungan sarua bakal reflected di Anjeun Chart.yaml:

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

Bagan masih diunduh sareng disimpen dina diréktori charts/, jadi subcharts (subbagan), bohong dina katalog charts/, bakal terus jalan tanpa parobahan.

Ngawanohkeun Bagan Perpustakaan

Helm 3 ngadukung kelas bagan anu disebut bagan perpustakaan (bagan perpustakaan). Bagan ieu dianggo ku bagan sanés, tapi henteu nyiptakeun artefak pelepasan nyalira. Témplat bagan perpustakaan ngan ukur tiasa nyatakeun elemen define. Eusi séjén ngan saukur teu dipaliré. Hal ieu ngamungkinkeun pamaké pikeun make deui jeung babagi snippét kode nu bisa dipaké dina sababaraha grafik, kukituna ngahindarkeun duplikasi jeung adhering kana prinsip garing.

Bagan perpustakaan dinyatakeun dina bagian dependencies dina file Chart.yaml. Masang sareng ngatur éta henteu béda ti bagan anu sanés.

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

Kami bungah ngeunaan kasus pamakean komponén ieu bakal dibuka pikeun pamekar bagan, ogé prakték pangsaéna anu tiasa muncul tina bagan perpustakaan.

Naon saterusna?

Helm 3.0.0-alpha.1 mangrupikeun pondasi dimana urang ngawitan ngawangun versi Helm énggal. Dina artikel I digambarkeun sababaraha fitur metot Helm 3. Loba di antarana kénéh dina tahap awal ngembangkeun sarta ieu normal; Maksud tina sékrési alfa nyaéta pikeun nguji ide, ngumpulkeun tanggapan ti pangguna awal, sareng mastikeun asumsi urang.

Pas versi alfa dileupaskeun (inget yén ieu geus kajadian - kira-kira. tarjamah.), urang bakal ngawitan nampi patch pikeun Helm 3 ti masarakat. Anjeun kedah nyiptakeun yayasan anu kuat anu ngamungkinkeun fungsionalitas énggal dikembangkeun sareng diadopsi, sareng pikeun pangguna ngaraos aub dina prosés ku muka tiket sareng ngadamel perbaikan.

Kuring parantos nyobian nyorot sababaraha perbaikan utama anu datang ka Helm 3, tapi daptar ieu sanés lengkep. The roadmap pinuh pikeun Helm 3 ngawengku fitur kayaning ningkat strategi update, integrasi deeper kalawan OCI registries, sarta pamakéan JSON schemas mun sangkan méré konfirmasi nilai bagan. Kami ogé ngarencanakeun pikeun ngabersihan basis kode sareng ngapdet bagian-bagian anu parantos diabaikan salami tilu taun ka pengker.

Upami anjeun ngarasa aya anu sono, kami bakal resep ngupingkeun pikiran anjeun!

Miluan diskusi dina kami Saluran slack:

  • #helm-users pikeun patarosan sareng komunikasi sederhana sareng masarakat;
  • #helm-dev pikeun ngabahas requests tarikan, kode jeung bug.

Anjeun ogé tiasa ngobrol dina Telepon Pangembang Umum mingguan kami dina Kemis jam 19:30 MSK. Rapat dikhususkeun pikeun ngabahas masalah anu dikembangkeun ku pamekar konci sareng komunitas, ogé topik diskusi pikeun saminggu. Saha waé tiasa ngiringan sareng ngiringan rapat. Link sayogi dina saluran Slack #helm-dev.

PS ti penerjemah

Baca ogé dina blog urang:

sumber: www.habr.com

Tambahkeun komentar