پکیج‌ منیجر کوبرنتیز Helm (قسمت پانزدهم)

توی این قسمت میریم به سراغ هلم (Helm) که یکی از پراستفاده‌ترین و کاربردی‌ترین ابزارهایی هست که در کنار کوبرنتیز میاد و ازش برای راه‌اندازی برنامه‌های مختلف استفاده می‌کنند. کلا با استفاده از Helm به راحتی می‌تونیم ابزارها و سرویس‌‌هایی که می‌خواهیم رو روی کوبرنتیز راه‌اندازی و مدیریت کنیم.

خب یه مروری کنیم پست‌های قبلی رو:

توصیه می‌کنم که حتما این پست‌ها رو هم مطالعه کنید. بریم که ادامه بدیم.

Helm
Helm

هلم (Helm):

در دنیای پویا و مقیاس‌پذیر ارکستراسیون کانتینرها، Kubernetes به عنوان یک فناوری اساسی برای استقرار و مدیریت برنامه‌های کانتینری در مقیاس بزرگ ظهور کرده است. با این حال، مدیریت منابع Kubernetes با رشد اندازه و پیچیدگی برنامه‌ها می‌تواند چالش‌برانگیز شود. اینجاست که هلم (Helm)، مدیر بسته Kubernetes، با آوردن سادگی و کارایی به مدیریت برنامه‌های Kubernetes وارد عمل می‌شود. یکی از ویژگی‌های قدرتمند هلم، استفاده از چارت‌ها است. در این بخش به بررسی چارت‌های هلم، دلیل نیاز به آن‌ها در Kubernetes و نحوه استفاده موثر از آن‌ها می‌پردازیم.

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

هلم (Helm) یک پکیج منیجر برای Kubernetes است که مدیریت، استقرار و به‌روزرسانی برنامه‌های اجراشده روی کلاستر Kubernetes شما را ساده‌تر می‌کند.

هلم به شما کمک می‌کند برنامه‌های Kubernetes را با ارائه روشی برای تعریف، نصب و به‌روزرسانی برنامه‌های پیچیده Kubernetes مدیریت کنید. اگر بخوام یه مثال بزنم که به ذهن نزدیک بشه می‌تونیم پکیج‌ منیجر لینوکس رو مثال بزنیم. شما با استفاده از پکیج منیجر می‌تونید سرچ، نصب، کانفیگ و دیلیت کنید هر پکیجی رو که می‌خواهید اینجا هم با استفاده از Helm می‌تونید در مورد اپلیکیشن‌ها و سرویس‌های خودتون به این صورت رفتار کنید.

Helm
Helm

در هسته‌ی اصلی، هلم از چارت‌ها استفاده می‌کند که بسته‌هایی از منابع از پیش پیکربندی‌شده Kubernetes هستند. این چارت‌ها برای تعریف، نصب و مدیریت برنامه‌های پیچیده Kubernetes استفاده می‌شوند.

چارت‌های هلم می‌توانند هر چیزی را از یک برنامه وب ساده تا یک سیستم توزیع‌شده پیچیده تعریف کنند.

هلم مدیریت برنامه‌های Kubernetes را با استفاده از چارت‌ها ساده می‌کند. چارت‌ها بسته‌هایی از منابع از پیش پیکربندی‌شده Kubernetes هستند. می‌توانید چارت‌های هلم را شبیه به قالب‌هایی برای برنامه‌های Kubernetes در نظر بگیرید که قابلیت سفارشی‌سازی بر اساس نیاز شما را دارند.

Helm Workflow
Helm Workflow

ساختار چارت هلم

  • مدیریت بسته‌ها: نصب، به‌روزرسانی و مدیریت برنامه‌های Kubernetes.
  • مدیریت نسخه‌ها: مدیریت نسخه‌های مختلف از برنامه‌ها.
  • مدیریت پیکربندی‌ها: سفارشی‌سازی برنامه‌ها با فایل‌های مقادیر (Values Files).

یک چارت هلم شامل چند فایل است که منابع Kubernetes را تعریف می‌کنند. این فایل‌ها شامل موارد زیر هستند:

  • Chart.yaml:

شامل متادیتا درباره‌ی چارت، مانند نام و نسخه آن.

  • values.yaml:

شامل مقادیر پیکربندی برای چارت. این مقادیر به ازای دیپلویمنت‌های مختلف می‌تواند متفاوت باشد که به ما این امکان رو می‌دهد که به راحتی سرویس‌ها و اپلیکیشن‌های خودمون رو در محیط‌های مختلف متفاوت راه‌اندازی و مدیریت کنیم.

  • templates/:

شامل قالب‌های منابع Kubernetes که برای ایجاد منابع واقعی در کلاستر استفاده می‌شوند. این مانیفست‌ها طوری ایجاد شدند که مقادیر آنها با استفاده از Value فایل‌ها تغییر می‌کنند.

Helm
Helm

چرا به چارت‌های هلم در Kubernetes نیاز داریم؟

ساده‌سازی فرایند استقرار

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

کنترل نسخه و بازگشت به نسخه قبلی

چارت‌های هلم از نسخه‌بندی پشتیبانی می‌کنند، که به توسعه‌دهندگان اجازه می‌دهد نسخه‌های مختلف استقرار برنامه‌ها و تغییرات پیکربندی را مدیریت کنند. این ویژگی امکان بازگشت آسان به نسخه‌های قبلی را در صورت بروز مشکل فراهم می‌کند و قابلیت اطمینان استقرار را افزایش می‌دهد. کلا قابلیت نسخه‌بندی خیلی به ما تو مدیریت سرویس‌ها و اپلیکیشن‌هامون کمک می‌کنه.

قابلیت استفاده مجدد و اشتراک‌گذاری

با استفاده از چارت‌های هلم، پیکربندی‌های استقرار برنامه‌ها می‌توانند در پروژه‌ها یا تیم‌های مختلف مجدداً استفاده شوند، که این امر بهبود بهترین روش‌ها و صرفه‌جویی در زمان را ممکن می‌سازد. همچنین چارت‌ها را می‌توان از طریق مخازن چارت هلم به اشتراک گذاشت و همکاری و کارایی را افزایش داد.

سفارشی‌سازی از طریق فایل values.yaml

چارت‌های هلم از یک فایل values.yaml استفاده می‌کنند که امکان سفارشی‌سازی آسان استقرار را بدون تغییر در خود چارت فراهم می‌سازد. به این ترتیب، می‌توان از یک چارت برای استقرار برنامه‌ها در محیط‌های مختلف (develop و test و production) تنها با تغییر مقادیر استفاده کرد.

Helm
Helm

ویژگی‌های هلم

استقرار سریع و آسان

با استفاده از چارت‌های هلم، می‌توانید به سرعت برنامه‌های پیچیده Kubernetes را مستقر کنید و خیلی خوب این کار رو تکرار، قابل انتقال و بهبود بدید.

مدیریت به‌روزرسانی‌ها و بازگشت‌ها

  • به‌روزرسانی یک برنامه به نسخه جدید تنها با به‌روزرسانی چارت و اجرای دستور helm upgrade امکان‌پذیر است.
  • اگر مشکلی پیش بیاید، می‌توانید به راحتی به نسخه قبلی با دستور helm rollback بازگردید.

سفارشی‌سازی بالا

  • می‌توانید مقادیر پیکربندی خود را در فایل values.yaml تعریف کنید.
  • همچنین می‌توانید این مقادیر را در زمان نصب با دستور helm install بازنویسی کنید.

مخزن چارت‌های از پیش ساخته‌شده

  • هلم دارای مخزن مرکزی از چارت‌های آماده است که می‌توانید از آن‌ها برای استقرار سریع برنامه‌های محبوب مانند WordPress، MySQL و Prometheus استفاده کنید. artifacthub.io جایی هست که مخزن پابلیک برای helm chart هاست و می‌تونید چارت‌های پابلیک رو از اونجا بردارید و استفاده کنید. البته معمولا شرکت‌ها و سازمان‌ها برای خودشون ریپوزیتوری helm به صورت خصوصی و عمومی دارند.
Helm
Helm

کار با هلم

گام ۱: نصب هلم

ابتدا باید هلم را روی سیستم خود نصب کنید. فایل‌های باینری هلم برای macOS، لینوکس و ویندوز در دسترس هستند.

روی macOS:

				
					brew install helm
				
			

روی لینوکس:

				
					curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
				
			

روی ویندوز:

فایل باینری هلم را از صفحه رسمی انتشارهای GitHub دانلود کرده و آن را به مسیر PATH خود اضافه کنید.

تأیید نصب:

				
					helm version
				
			

گام ۲: اضافه کردن مخزن هلم

هلم از مخازن برای توزیع چارت‌ها استفاده می‌کند. مخزن پیش‌فرض هلم https://charts.helm.sh/stable است.

اضافه کردن مخزن Stable:

				
					helm repo add stable https://charts.helm.sh/stable
helm repo update
				
			

لیست مخازن موجود:

				
					helm repo list
				
			

گام ۳: جستجو برای چارت‌های هلم

می‌توانید با استفاده از دستور helm search چارت‌های موجود در مخزن آرتی‌فک‌هاب را جستجو کنید.

مثال: جستجوی چارت MySQL:

				
					helm search repo mysql
				
			

گام ۴: نصب یک چارت هلم

برای نصب یک چارت هلم از دستور helm install استفاده کنید. مثال:

				
					helm install [RELEASE_NAME] [CHART_NAME]
				
			
  • [RELEASE_NAME]:

نام یکتایی که برای استقرار خود تعیین می‌کنید.

  • [CHART_NAME]:

نام چارت، می‌تواند از یک مخزن یا یک دایرکتوری محلی باشد.

مثال: نصب چارت MySQL:

				
					helm install my-mysql stable/mysql
				
			

بررسی وضعیت انتشار:

				
					helm status my-mysql
				
			

لیست تمام انتشارها:

				
					helm list
				
			

گام ۵: سفارشی‌سازی چارت‌های هلم

هلم امکان سفارشی‌سازی چارت‌ها را با استفاده از فایل‌های مقادیر فراهم می‌کند. می‌توانید مقادیر پیش‌فرض یک چارت را تغییر دهید.

دریافت مقادیر پیش‌فرض:

				
					helm show values stable/mysql > my-values.yaml
				
			

ویرایش فایل my-values.yaml برای سفارشی‌سازی تنظیمات.

نصب چارت با استفاده از فایل مقادیر سفارشی:

				
					helm install my-mysql -f my-values.yaml stable/mysql
				
			

گام ۶: به‌روزرسانی انتشار

برای به‌روزرسانی یک انتشار، فایل مقادیر را تغییر داده و از دستور helm upgrade استفاده کنید.

مثال:

  1. ویرایش فایل my-values.yaml.
  2. به‌روزرسانی انتشار:
				
					helm upgrade my-mysql -f my-values.yaml stable/mysql
				
			

گام ۷: حذف یک انتشار

برای حذف یک انتشار از دستور helm uninstall استفاده کنید.

مثال: حذف انتشار MySQL:

				
					helm uninstall my-mysql
				
			

گام ۸: ایجاد چارت سفارشی هلم

برای ایجاد یک چارت سفارشی، از دستور helm create استفاده کنید. این دستور ساختار اولیه یک چارت را ایجاد می‌کند.

ایجاد چارت جدید:

				
					helm create my-chart
				
			

ساختار ایجاد شده:

				
					my-chart/
├── Chart.yaml
├── values.yaml
├── charts/
├── templates/
└── templates/tests/
				
			

اضافه کردن مانیفست‌های Kubernetes به پوشه templates/.

گام ۹: استقرار چارت سفارشی

بسته‌بندی چارت:

				
					helm package my-chart
				
			

نصب چارت:

				
					helm install my-release my-chart-0.1.0.tgz
				
			

گام ۱۰: هوک‌های هلم

هوک‌های هلم امکان اجرای کارها در نقاط مشخصی از چرخه عمر انتشار را فراهم می‌کنند. به عنوان مثال، می‌توانید یک Job پیش از نصب ایجاد کنید.

مثال هوک:

				
					apiVersion: batch/v1
kind: Job
metadata:
  name: &quot{{ .Release.Name }}-pre-install&quot
  labels:
    app: &quot{{ .Release.Name }}&quot
  annotations:
    &quothelm.sh/hook&quot: pre-install
spec:
  template:
    spec:
      containers:
      - name: pre-install-job
        image: busybox
        command: ['sh', '-c', 'echo Hello from the pre-install hook!']
      restartPolicy: Never
				
			

هلم ابزاری قدرتمند است که مدیریت برنامه‌های Kubernetes را ساده می‌کند. با استفاده از چارت‌های هلم می‌توانید به راحتی برنامه‌ها را مستقر، مدیریت و به‌روزرسانی کنید. این راهنما اصول پایه‌ای هلم را پوشش داد و شما را برای استفاده از قابلیت‌های پیشرفته‌تر آن آماده می‌کند.

Helm Chart

مثالی از یک چارت ساده هلم برای یک برنامه وب

۱. ایجاد چارت جدید

ابتدا یک دایرکتوری جدید برای چارت خود ایجاد کنید:

				
					mkdir my-web-app-chart
cd my-web-app-chart
				
			

۲. ایجاد فایل Chart.yaml

یک فایل به نام Chart.yaml ایجاد کنید و محتویات زیر را اضافه کنید:

				
					apiVersion: v2
name: my-web-app
description: A Helm chart for a simple web application
version: 1.0.0
				
			

این فایل متادیتای پایه‌ای درباره‌ی چارت، مانند نام، توضیحات و نسخه آن را تعریف می‌کند.

۳. ایجاد فایل values.yaml

یک فایل به نام values.yaml با محتویات زیر ایجاد کنید:

				
					replicaCount: 3
image:
  repository: my-web-app
  tag: latest
  pullPolicy: IfNotPresent
service:
  name: my-web-app
  type: ClusterIP
  port: 80
ingress:
  enabled: false
				
			

این فایل مقادیر پیکربندی برای چارت را تعریف می‌کند، از جمله تعداد نسخه‌ها (replicas)، تصویر Docker و تنظیمات سرویس.

۴. تعریف Deployment

یک دایرکتوری به نام templates ایجاد کرده و یک فایل deployment.yaml در آن با محتویات زیر ایجاد کنید:

				
					apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Chart.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ .Chart.Name }}
  template:
    metadata:
      labels:
        app: {{ .Chart.Name }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: &quot{{ .Values.image.repository }}:{{ .Values.image.tag }}&quot
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - name: http
              containerPort: 80
				
			

این فایل استقرار Kubernetes برای برنامه وب شما را تعریف می‌کند.

۵. تعریف Service

یک فایل دیگر به نام service.yaml در دایرکتوری templates ایجاد کنید و محتویات زیر را اضافه کنید:

				
					apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.service.name }}
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: http
  selector:
    app: {{ .Chart.Name }}
				
			

این فایل سرویس Kubernetes برای برنامه وب شما را تعریف می‌کند.

۶. بسته‌بندی چارت

چارت خود را با اجرای دستور زیر بسته‌بندی کنید:

				
					bashCopy codehelm package .
				
			

این دستور فایل my-web-app-1.0.0.tgz را ایجاد می‌کند.

۷. نصب چارت

چارت را روی یک کلاستر Kubernetes با دستور زیر نصب کنید:

				
					bashCopy codehelm install my-release my-web-app-1.0.0.tgz
				
			

توی این بلاگ پست سعی کردیم یه مقدار به Helm آشنا بشیم و ویژگی‌های اون رو بشناسیم و کار باهاش رو یاد بگیریم.

اگر هنوز از هلم استفاده نمی‌کنید، حتماً اونو امتحان کنید!

تو ادامه‌ی مسیرمون بیشتر با موارد مربوط به کوبرنتیز آشنا میشیم.

مراقب خودتون باشید. 🌹🐳🌹

دیدگاه‌ خود را بنویسید

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

Kubernetes

نصب کلاستر با rancher (قسمت نوزدهم)

توی این قسمت میریم به سراغ اینکه بررسی کنیم چطوری می‌تونیم یه کلاستر کوبرنتیز رو با استفاده از rancher ستاپ کنیم و بیاریم بالا. خب یه مروری کنیم پست‌های قبلی رو: دواپس چیه و چرا لازمه؟ اینجا در مورد دواپس و

توضیحات بیشتر »
Kubernetes

نصب کلاستر با kubespray (قسمت هجدهم)

توی این قسمت میریم سراغ اینکه بررسی کنیم چطوری می‌تونیم یه کلاستر کوبرنتیز رو با استفاده از kubespray ستاپ کنیم و بیاریم بالا. روشی که می‌تونیم باهاش کلاستر پروداکش رو ستاپ و نگهداری کنیم. خب یه مروری کنیم پست‌های قبلی

توضیحات بیشتر »
Kubernetes

نصب کلاستر با kubeadm (قسمت هفدهم)

توی این قسمت میریم به سراغ اینکه بررسی کنیم چطوری می‌تونیم یه کلاستر کوبرنتیز رو با استفاده از kubeadm ستاپ کنیم و بیاریم بالا. خب یه مروری کنیم پست‌های قبلی رو: دواپس چیه و چرا لازمه؟ اینجا در مورد دواپس و

توضیحات بیشتر »
پیمایش به بالا