برنامه نویسی

Helm vs Kustomize: یک راهنمای جامع با مثال

مقدمه

وقتی صحبت از مدیریت برنامه Kubernetes می شود ، دو ابزار محبوب برجسته است: سرپرست وت باسج دادنبشر هر دو ابزار با هدف ساده سازی استقرار Kubernetes ، اما رویکردهای مختلفی دارند. کلاهبرداری اغلب با یک مدیر بسته برای Kubernetes مقایسه می شود ، در حالی که Kustomize یک روش اعلامی برای مدیریت تنظیمات Kubernetes بدون قالب ارائه می دهد. این ابزارها سازمانها و افراد را قادر می سازد تا برنامه ها را به طور مؤثر مستقر کنند و از مدیریت یکپارچه اطمینان حاصل کنند.

در این راهنما ، تفاوت های بین Helm و Kustomize ، موارد استفاده در دنیای واقعی آنها و نحوه کار با آنها را با استفاده از تنظیمات مثال بررسی خواهیم کرد.

هلم چیست؟

Helm یک مدیر بسته برای Kubernetes است که به توسعه دهندگان اجازه می دهد برنامه ها را با استفاده از نمودارهای HELM تعریف ، نصب و به روز کنند. بوها نمودار کلاه مجموعه ای از پرونده های پیکربندی YAML است که منابع Kubernetes را تعریف می کند و استقرار و مدیریت برنامه های پیچیده را آسان می کند.

هلم چه چیزی را ارائه می دهد؟

  • سیستم قالب بندی: پیکربندی پویا را با استفاده از مکان های موجود در پرونده های YAML امکان پذیر می کند.
  • مدیریت وابستگی: اجازه تعریف وابستگی بین برنامه ها را می دهد.
  • کنترل نسخه: استقرار برنامه های نسخه را فراهم می کند.
  • مدیریت آزادی: بازپرداخت ، به روزرسانی ها و روال ها را ساده می کند.

Kustomize چیست؟

Kustomize یک ابزار مدیریت پیکربندی است که به شما امکان می دهد بدون تغییر پرونده های اصلی ، kubernetes yaml را به صورت سفارشی کنید. بر خلاف HELM ، Kustomize از الگوهای استفاده نمی کند. در عوض ، این تغییرات را در بالای تنظیمات موجود لایه بندی می کند.

Kustomize چه پیشنهادی دارد؟

  • مدیریت پیکربندی مبتنی بر روکش: وصله ها و اصلاحات را بدون تغییر پرونده های پایه YAML اعمال کنید.
  • بدون قالب: از یک رویکرد صرفاً اعلامی و بدون متغیرها یا متغیرها استفاده می کند.
  • حمایت بومی در کوبکتل: از آنجا که Kubernetes 1.14 ، Kustomize در یکپارچه است kubectlبشر
  • ساختار پایه و پوشش: امکان تنظیمات خاص محیط را فراهم می کند.

Helm در مقابل Kustomize: تفاوت های کلیدی

نشان سرپرست باسج دادن
رویکرد قالب بندی با الگوهای GO سفارشی سازی مبتنی بر پچ
مدیر بسته بندی بله هیچ
وابستگی mgmt از وابستگی ها پشتیبانی می کند بدون مدیریت وابستگی
نسخه سازی نسخه های نسخه شده را پشتیبانی می کند بدون نسخه داخلی
منحنی یادگیری معتاد آسان
ادغام کلاه ایمنی kubectl داخلی

مثال: ایجاد نمودار HELM

بیایید یک نمودار کلاه ساده برای a ایجاد کنیم چیز کوچک استقرار

مرحله 1: HELM را نصب کنید

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 2: یک نمودار کلاه جدید ایجاد کنید

helm create my-nginx
cd my-nginx
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 3: اصلاح کنید values.yaml

replicaCount: 2
image:
  repository: nginx
  tag: latest
service:
  type: ClusterIP
  port: 80
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 4: نمودار HELM را نصب کنید

helm install my-release ./my-nginx
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال: استفاده از Kustomize برای nginx

مرحله 1: استقرار پایه ایجاد کنید

# base/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 2: برای مرحله بندی یک پوشش ایجاد کنید

# overlays/staging/kustomization.yaml
resources:
  - ../../base
patches:
  - target:
      kind: Deployment
      name: nginx
    patch: |-
      - op: replace
        path: "/spec/replicas"
        value: 5
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 3: kustomization را اعمال کنید

kubectl apply -k overlays/staging/
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Helm در مقابل Kustomize با نمونه های دنیای واقعی

سناریو ابزار توصیه شده
استقرار برنامه های بسته بندی شده سرپرست
سفارشی کردن پرونده های YAML موجود باسج دادن
مدیریت نسخه های برنامه سرپرست
استفاده از تکه ها برای محیط های مختلف باسج دادن

ویژگی های پیشرفته Helm و Kustomize

سرپرست

  • مخازن نمودار: نمودارها را با آن ذخیره و به اشتراک بگذارید helm repoبشر
  • قلاب: اسکریپت ها را در نقاط مختلف استقرار اجرا کنید.
  • بازپرداخت: به راحتی به نسخه های قبلی برگردید.

باسج دادن

  • ترانسفورماتور: برچسب ها ، حاشیه نویسی ها و تصاویر را اصلاح کنید.
  • ژنراتور: پیکربندی ها و اسرار را به صورت پویا ایجاد کنید.
  • تکه های ادغام استراتژیک: YAML را به صورت انتخابی به روز کنید.

مقایسه عملکرد

  • سرپرست: از الگوهای سمت مشتری استفاده می کند و ممکن است به دلیل ارائه ، عملکرد سربار داشته باشد.
  • باسج دادن: به طور مستقیم تحولات YAML را اعمال می کند و به طور کلی برای اصلاح تنظیمات موجود سریعتر است.

چالش های هلم و کوستومیز

چالش سرپرست باسج دادن
پیچیدگی می تواند با قالب بندی پیچیده باشد به روکش های ساختاری نیاز دارد
منحنی یادگیری معتاد ساده تر
تکثیر یال حداقل می تواند تکثیر در پوشش ها داشته باشد

فواید کلاه و کوستومیز

سود سرپرست باسج دادن
قابلیت استفاده مجدد عالی معتاد
سفارشی سازی مبتنی بر انسجام مبتنی بر
تصویب به طور گسترده در جامعه Kubernetes استفاده می شود ساخته شده از kubectl

پایان

Helm و Kustomize هر دو نقش ارزشمند در مدیریت پیکربندی Kubernetes را ارائه می دهند. Helm برای استقرار برنامه های بسته بندی شده با کنترل نسخه و وابستگی ها به بهترین وجه مناسب است ، در حالی که در اصلاح مانیفست های YAML موجود برای محیط های مختلف ، عالی است. انتخاب ابزار مناسب به مورد استفاده شما ، گردش کار تیم و پیچیدگی کاربرد بستگی دارد.

آیا از Helm ، Kustomize یا ترکیبی از هر دو استفاده می کنید؟ در نظرات به من اطلاع دهید!

تا پست بعدی وبلاگ

Happy Helming و Kustming! 🎉

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا