لینک گیت هاب مرتبط با این مطالب که تمام دستورها رو قرار میدم و خوشحال میشم در صورتی که تمایل داشتین PR بفرستین که تکمیل بشه
حالا که Helm رو نصب کردیم آماده هستیم که اولین چارت خودمون رو بسازیم
helm create hello-world
با اجرای دستور create در دایرکتوری که قرار دارین و با اسمی که در ادامه اون تایپ میکنید (اینجا hello-world) دایرکتوری جدیدی ساخته میشه که ده فایل داخلش قرار گرفته که در ادامه توضیح میدیم هرکدوم چیه و کدوم هارو در ابتدا کاور میکنیم:
در ابتدا فایل هایی که قرار نیست الان ازشون استفاده کنیم و برای راحتی شروع به کار با Helm حذف میکنم:
rm -rf app/templates/tests/ app/charts/ app/templates/hpa.yaml app/templates/ingress.yaml app/templates/serviceaccount.yaml
حالا خیلی سادهتر شد از اولین فایل شروع میکنیم به اسم
Chart.yaml
داخل این فایل اطلاعات کلی (متا) پکیج مثل اسم، توضیحات، ورژن ایمیج و ورژن چارت مشخص میشه
بهتره داخلش رو نگاه کنید و خودتون مقادیر دیفالت رو تغییر بدین
دومین فایلی که الان داخل روت چارت ما وجود داره
values.yaml
که همونطور که از اسمش مشخصه کل متغیر ها قرار هست اینجا مشخص بشه
نگران نباشید که کلی متغیر داخلش نوشته شده به صورت دیفایلت... میتونید دست نزنید یا کلش رو پاک کنید اختلالی ایجاد نمیکنه
حالا قبل اینکه با تمپلیتینگ Helm درگیر بشیم بیاید خروجی این چارت رو نگاه کنیم
helm template ./hello-world
# will lint and verify syntax
helm lint ./hello-world
با اجرای این دستور template خروجی مانیفست رو میتونید ببنید
و اگر جایی رو تغییر دادین و میخواین مطمئن بشین که سینتکس خطا نداره و چارت valid هست با دستور lint میتونید مطمئن بشید که خطایی وجود نداره وگرنه بهتون اخطار میده که کجا خطا به وجود اومده
به صورت پیشفرض ایمیج nginx رو Helm بهتون داخل چارت میده و بدون نگرانی اگر کلاستر آماده ای دارین (اگر که نه پیشنهاد میدم Kind نصب کنید) و namespace مجزا داخل کلاستر تعریف کنید و چارت رو نصب کنید که متوجه بشید چقدر کار با Helm راحت هست
kubectl create namespace dev
helm install -f hello-world/values.yaml -n dev hello-world ./hello-world
helm ls -n dev
با اجرای دستور install مانیفست های رندر شده روی کلاستر apply میشن و لیست چارت های خودتون رو با دستور ls میتونید نگاه کنید
اگر خواستین صفحه پیشفرض nginx هم روی مروگر خودتون داشته باشین که مطمئن بشین درست دیپلوی شده میتونید پورت فروارد کنید که دستورش رو پایینتر گذاشتم که راحت باشین
kubectl get pods -n dev -o wide
kubectl --namespace dev port-forward $POD_NAME 8080:$CONTAINER_PORT
در ادامه باهم یکسری فلگ های install رو بررسی میکنیم که چطور شخصی سازی بیشتری روی چارت خودمون داشته باشیم و چند دستور جدید رو میبینیم