Helm chart — Kubernetes resurslarini parametrli shablonlar va metadata bilan bitta tarqatiladigan paketga birlashtiruvchi tuzilmadir. Chart Deployment, Service, ConfigMap, RBAC va boshqa manifestlarni birgalikda versiyalash imkonini beradi. Helm chartni render qilib Kubernetes APIga yuboradi va o‘rnatilgan nusxani release sifatida kuzatadi.
Papka tuzilishi
Chart ildizidagi Chart.yaml nom, chart versiyasi, ilova versiyasi va dependency metadata sini saqlaydi. values.yaml standart konfiguratsiyani beradi. templates katalogida Go template sintaksisi qo‘llangan Kubernetes manifestlari turadi. charts katalogi paketlangan dependencylarni, crds katalogi esa asosiy templatingdan oldin o‘rnatiladigan CRD fayllarini saqlashi mumkin.
Chart version paketning o‘zgarishini, appVersion esa joylashtirilayotgan dastur versiyasini ifodalaydi. Ular bir xil bo‘lishi shart emas. Dependency versiyasi va repository manzili lock fayli orqali qayta tiklanadigan buildga bog‘lanadi.
Render jarayoni
Helm values, release nomi, namespace va cluster imkoniyatlarini template kontekstiga qo‘shadi. Shablondagi if, range, include va named template konstruksiyalari yakuniy YAMLni hosil qiladi. Kubernetes template tilini bilmaydi; u faqat Helm render qilgan oddiy manifestlarni qabul qiladi.
Render natijasini oldindan ko‘rish muhim:
helm template payments ./chart -f values-prod.yaml
helm lint ./chart
Lint sintaktik va ayrim strukturaviy xatolarni topadi, ammo API server validationi, admission policy yoki runtime xatti-harakatini to‘liq takrorlamaydi. Render qilingan manifest schema validator va policy tekshiruvdan ham o‘tkazilishi mumkin.
Release boshqaruvi
helm install yangi release yaratadi; helm upgrade mavjud release manifestlarini yangilaydi. Helm har revision metadata sini clusterda saqlaydi. Upgrade muvaffaqiyatsiz bo‘lsa rollback oldingi revision manifestlarini qayta qo‘llaydi. Bu database migration yoki tashqi side effectni avtomatik orqaga qaytarmaydi.
Atomic rejim muvaffaqiyatsiz install yoki upgraddan so‘ng cleanup yoki rollback bajarishga urinadi. Timeout readiness va hook ishlariga chegarani belgilaydi. Release statusining deployed bo‘lishi ilovaning barcha biznes operatsiyalari sog‘lomligini anglatmaydi; kuzatuv alohida kerak.
Qayta foydalanish va chegaralar
Yaxshi chart majburiy parametrlarni schema orqali tekshiradi, barqaror label va selectorlar yaratadi hamda namespace yoki cluster-scope resurslarni aniq ajratadi. Haddan tashqari ko‘p shart va dinamik nom shablonni dasturga aylantirib, render natijasini tushunishni qiyinlashtiradi. Takrorlanadigan kichik helperlar foydali, lekin manifestning asosiy ma’nosi yashirinmasligi lozim.
Chart repository yoki OCI registry orqali tarqatiladi. Package checksum, provenance signature va dependency manbasi supply-chain nazoratining qismidir. Chartga secret qiymatini qo‘shish paket tarixida maxfiy ma’lumot qoldirishi mumkin; secret tashqi boshqaruv tizimidan olinadi.
Test va yangilanish
Chart unit testi turli values to‘plamida render qilingan obyekt nomi, label, port va securityContextni tekshirishi mumkin. Integration testi vaqtinchalik clusterda install, upgrade hamda uninstall jarayonini bajaradi. Faqat yangi installni sinash yetarli emas, chunki mavjud release eski value yoki immutable fieldga ega bo‘lishi mumkin. Chart paketlangach uning dependency locki va digesti CI natijasiga bog‘lanadi. Upgrade hujjatida olib tashlangan qiymat, talab qilinadigan Kubernetes versiyasi va migration bosqichi aniq ko‘rsatiladi.
CRD lifecycle alohida e’tibor talab qiladi. Helm crds katalogidagi resursni dastlab o‘rnatadi, ammo odatda upgrade yoki delete paytida uni oddiy template kabi boshqarmaydi. Bu custom resource ma’lumotining tasodifiy yo‘qolishini kamaytiradi, lekin schema yangilanishini operator zimmasiga qoldiradi. Version conversion va storage migration chart releaseidan mustaqil rejalashtiriladi.
Bog‘liq tushunchalar
Helm, Kubernetes, Values, Template, Release, Chart dependency, OCI registry