Kubit logoکوبیت

اتصال مخزن گیت و مدیریت پک‌ها با GitOps

با GitOps می‌توانید مانیفست هر پک را در یک مخزن GitLab نگه دارید. تغییرهای تأییدشده پنل در همان فایل کامیت می‌شوند. تغییرهایی که در گیت انجام شده‌اند نیز پس از همگام‌سازی و اعتبارسنجی به پک می‌رسند. اتصال GitOps اختیاری است و نصب یا مدیریت عادی پک‌ها به مخزن گیت نیاز ندارد.

کوبچی از طریق نشانی HTTP یا HTTPS به مخزن پروژه GitLab متصل می‌شود. هر اتصال به یک مخزن و شاخه مشخص مربوط است و هر پک به یک فایل مانیفست در همان شاخه نگاشت می‌شود.

پیش‌نیازها

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

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

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

آماده‌کردن دسترسی GitLab

کوبچی دو روش دسترسی دارد:

  • توکن: گزینه پیشنهادی برای اتصال سرویس؛ از توکن اختصاصی پروژه یا یک حساب فنی استفاده کنید.
  • نام کاربری و رمز عبور: فقط زمانی استفاده کنید که سیاست GitLab شما این روش را برای API و گیت مجاز کرده باشد.

برای توکن پروژه در GitLab، وارد پروژه شوید و از Settings به Access tokens بروید. یک نام قابل تشخیص و تاریخ انقضای مناسب تعیین کنید. توکن باید بتواند مخزن و شاخه را بخواند، فایل را کامیت کند و وب‌هوک پروژه را بسازد یا حذف کند. در تنظیم رایج GitLab، نقش Maintainer و scope برابر api این نیاز را پوشش می‌دهند.

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

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

افزودن مخزن گیت

  1. در سایدبار کوبچی، مخزن گیت را انتخاب کنید.
  2. روی افزودن مخزن گیت کلیک کنید.
  3. در نشانی، URL پروژه GitLab را وارد کنید؛ مانند https://gitlab.example.com/team/app-config.
  4. یک نام برای تشخیص اتصال در کوبچی وارد کنید. اگر نشانی استاندارد باشد، پنل می‌تواند نام پروژه را پیشنهاد کند.
  5. نام دقیق شاخه موجود را وارد کنید؛ مانند main.
  6. در روش دسترسی، توکن یا نام کاربری و رمز عبور را انتخاب و اطلاعات لازم را وارد کنید.
  7. سطح دسترسی خصوصی یا سازمانی را تعیین کنید.
  8. روی ذخیره کلیک کنید.

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

فهرست مخازن گیت، دکمه افزودن و منوی عملیات GitOps

فرم افزودن مخزن گیت و انتخاب روش و سطح دسترسی

انتخاب سطح دسترسی

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

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

بررسی و ویرایش اتصال

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

برای دیدن جزئیات، نام مخزن را انتخاب کنید. نمای کلی مشخصات اتصال و آخرین کامیت‌ها را نشان می‌دهد. از تنظیمات مخزن یا تغییر اطلاعات دسترسی می‌توانید نشانی، نام، شاخه، روش ورود و سطح دسترسی را ویرایش کنید.

نمای کلی مخزن GitOps، مشخصات اتصال و آخرین کامیت‌ها

فرم ویرایش تنظیمات و اطلاعات دسترسی مخزن GitOps

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

اتصال یک پک به GitOps

  1. پک مورد نظر را باز کنید.
  2. در سایدبار داخل صفحه پک، GitOps را انتخاب کنید.
  3. یک مخزن در دسترس را از مخزن انتخاب کنید.
  4. مسیر فایل را از ریشه مخزن وارد کنید؛ برای نمونه packs/apps/my-app.pack.yaml.
  5. روی اتصال کلیک کنید.

انتخاب مخزن و مسیر فایل برای اتصال یک پک به GitOps

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

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

برای قطع اتصال، در همین صفحه روی قطع اتصال کلیک و پیام تأیید را بررسی کنید. قطع اتصال پک یا فایل داخل گیت را حذف نمی‌کند؛ فقط رابطه میان آن دو را برمی‌دارد.

مدیریت تناظر فایل‌ها و پک‌ها

در جزئیات مخزن، تناظر را انتخاب کنید. این جدول پک‌ها و فایل‌های مانیفست پیداشده در شاخه را کنار هم نشان می‌دهد:

  • متصل: فایل و پک به همین مخزن و مسیر متصل‌اند.
  • بدون اتصال: پک وجود دارد، اما هنوز فایل GitOps ندارد.
  • فایل بدون پک: یک مانیفست پک معتبر در مخزن پیدا شده، اما پک متناظر در پروژه ساخته نشده است.
  • مخزن یا مسیر متفاوت: پک به اتصال دیگری یا مسیر دیگری وصل است و عملیات همان ردیف محدود می‌شود.

جدول تناظر فایل‌های مخزن با پک‌ها و عملیات هر وضعیت

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

جریان تغییر و رفع اختلاف

پس از اتصال، تغییرها از دو جهت حرکت می‌کنند:

  • از پنل به گیت: هنگام اعمال پیکربندی پک، گزینه کامیت در مخزن گیت نمایش داده می‌شود. با فعال‌بودن آن، مانیفست تازه هم‌زمان در شاخه کامیت می‌شود.
  • از گیت به پک: وب‌هوک پس از تغییر مخزن، همگام‌سازی را آغاز می‌کند. نسخه تازه اعتبارسنجی می‌شود و اگر پک تغییر محلی حل‌نشده نداشته باشد، روی پک اعمال می‌شود.

اگر تغییر پنل را بدون کامیت ذخیره کنید، پک با فایل گیت اختلاف پیدا می‌کند. تغییر بعدی گیت، تغییر محلی را بی‌اطلاع شما بازنویسی نمی‌کند و اختلاف برای تصمیم‌گیری باقی می‌ماند. در بخش رفع اختلاف پک و GitOps نسخه درست را انتخاب کنید.

دیدن کامیت‌ها

در نمای کلی پنج کامیت اخیر مخزن دیده می‌شوند. صفحه لاگ کامیت‌ها فهرست کامل‌تری از عنوان، تاریخ، نویسنده و پیوند جزئیات هر کامیت را نشان می‌دهد.

فهرست کامیت‌های مخزن GitOps در کوبچی

این فهرست فقط کامیت‌های شاخه تنظیم‌شده را نشان می‌دهد. برای بررسی تفاوت دقیق یا خط لوله مرتبط، مشاهده جزئیات را انتخاب کنید تا صفحه کامیت در GitLab باز شود.

مدیریت وب‌هوک

کوبچی هنگام ساخت اتصال، یک وب‌هوک با اعتبار یک‌ساله در پروژه GitLab ثبت می‌کند. صفحه وب‌هوک‌ها تاریخ انقضا و موجودبودن وب‌هوک در GitLab را نشان می‌دهد.

URL وب‌هوک شامل یک توکن فراخوانی است. آن را مانند اطلاعات محرمانه نگه دارید، در تیکت یا لاگ عمومی قرار ندهید و فقط در صورت نیاز با مدیر مخزن به اشتراک بگذارید.

گزینه تمدید وب‌هوک تاریخ اعتبار را یک سال افزایش می‌دهد؛ اگر بیش از ۹۰ روز تا انقضا مانده باشد، تاریخ تغییر نمی‌کند. تمدید تاریخ داخلی به‌تنهایی وب‌هوک حذف‌شده از GitLab را دوباره ایجاد نمی‌کند. اگر ستون موجود در گیت غیرفعال است، ابتدا اطلاعات دسترسی و مجوز مدیریت وب‌هوک را بررسی کنید.

حذف مخزن GitOps

از منوی سه‌نقطه مخزنی که متعلق به پروژه فعلی است، حذف GitOps را انتخاب کنید. حذف عادی این کارها را انجام می‌دهد:

  • اتصال همه پک‌ها به این مخزن را قطع می‌کند؛
  • وب‌هوک کوبچی را از GitLab حذف می‌کند؛
  • رکورد اتصال را از پنل حذف می‌کند.

پک‌ها، ورک‌لودهای در حال اجرا و فایل‌های مانیفست داخل مخزن گیت حذف نمی‌شوند.

پنجره تأیید حذف مخزن GitOps و گزینه حذف اجباری

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

مشکلات رایج

اتصال ساخته نمی‌شود

نشانی باید URL پروژه GitLab با HTTP یا HTTPS باشد. وجود شاخه، اعتبار توکن یا نام کاربری و رمز، و امکان خواندن مخزن را بررسی کنید. اگر خطا به scope اشاره دارد، توکن فقط‌خواندنی است یا اجازه API و نوشتن فایل را ندارد.

وضعیت مخزن خطا است

ممکن است توکن منقضی یا لغو شده، شاخه حذف شده یا نشانی مخزن تغییر کرده باشد. از تنظیمات مخزن اطلاعات را اصلاح و سپس بررسی دوباره وضعیت را اجرا کنید.

تغییر گیت روی پک اعمال نشده است

در صفحه وب‌هوک‌ها موجودبودن و منقضی‌نشدن وب‌هوک را بررسی کنید. سپس در لاگ کامیت‌ها مطمئن شوید تغییر روی شاخه تنظیم‌شده انجام شده است. اگر پک تغییر محلی دارد، اختلاف با گیت را حل کنید.

فایل یا پک در جدول تناظر نیست

فایل باید YAML متنی، تک‌سندی و دارای مانیفست معتبر Pack باشد. فضای نام آن نیز باید به پروژه فعلی تعلق داشته باشد. فایل‌های نامعتبر یا خارج از محدوده پروژه در تناظر قابل استفاده نیستند.

عملیات ویرایش یا حذف غیرفعال است

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

GitOps | مستندات | کوبیت