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! 🎉