{
  "title": "تصمیم معماری: انتقال به K3s بومی (Model B) برای توسعه فاقد داکر",
  "slug": "team/platform/ADR/ADR-Platform-002",
  "url": "/docs/team/platform/ADR/ADR-Platform-002",
  "frontmatter": {
    "layout": "doc",
    "title": "'ADR-Platform-002: Transition to Native K3s (Model B) for Zero-Docker Development'",
    "description": "Architecture Decision Record for shifting from K3d to native K3s to eliminate Docker dependency in local development.",
    "version": "1.0.0",
    "status": "APPROVED",
    "author": "Antigravity",
    "owner": "DevOps Team",
    "created_at": "2026-06-15",
    "updated_at": "2026-06-15",
    "tags": "",
    "reviewers": ""
  },
  "sections": [
    {
      "level": 1,
      "heading": "تصمیم معماری: انتقال به K3s بومی (Model B) برای توسعه فاقد داکر",
      "content": "**Architectural Decision Record — Shifting to Native K3s (Model B) for Docker-Free Development**\n\n> **ADR-Platform-002 — Approved**\n\n---"
    },
    {
      "level": 2,
      "heading": "وضعیت (Status)",
      "content": "APPROVED (تایید شده)\n\n---"
    },
    {
      "level": 2,
      "heading": "تاریخ (Date)",
      "content": "2026-06-15\n\n---"
    },
    {
      "level": 2,
      "heading": "زمینه (Context)",
      "content": "در تصمیم معماری پیشین (ADR-DevOps-001)، پلتفرم از داکر کامپوز به **K3d** و **Helm** مهاجرت کرد تا فرآیند استقرار محلی و پروداکشن یکپارچه شود. با این حال:\n- ابزار **K3d** ذاتا یک لایه‌پیچ (Wrapper) برای اجرای K3s در داخل کانتینرهای داکر است. این امر باعث می‌شود توسعه‌دهندگان همچنان وابستگی سختی به داکر (Docker Desktop / Docker Daemon) داشته باشند.\n- در معماری جدید درگاه (Traefik Gateway)، نیاز به سوکت داکر (`docker.sock`) به طور کامل مرتفع شده و مسیریابی از طریق Kubernetes IngressRoute انجام می‌شود.\n- بسترهای مدرن کلاستر کوبرنتیز نظیر K3s از ران‌تایم استاندارد **containerd** به صورت توکار استفاده می‌کنند که هیچ وابستگی به موتور داکر ندارد.\n\nجهت برآورده‌سازی هدف حذف کامل داکر از زنجیره توسعه و عملیات، باید بین ادامه کار با K3d (Model A) و انتقال به K3s بومی (Model B) تصمیم‌گیری شود.\n\n---"
    },
    {
      "level": 2,
      "heading": "گزینه‌های بررسی شده (Options Considered)",
      "content": ""
    },
    {
      "level": 3,
      "heading": "Model A: Local Development = K3d, Production = K3s",
      "content": "- **مزایا:** راه‌اندازی بسیار آسان روی سیستم‌عامل‌های ویندوز و مک از طریق Docker Desktop.\n- **معایب:** وابستگی سخت به داکر دیمون؛ عدم شبیه‌سازی دقیق ران‌تایم containerd خالص؛ نیاز به نصب داکر دسکتاپ."
    },
    {
      "level": 3,
      "heading": "Model B: Local Development = K3s, Production = K3s (انتخاب شده)",
      "content": "- **مزایا:** حذف ۱۰۰ درصدی وابستگی به داکر؛ یکپارچگی کامل موتورهای توسعه و عملیات بر پایه K3s بومی؛ اجرای مستقیم روی WSL2 (با فعال‌سازی systemd) یا لینوکس خام با ران‌تایم containerd؛ مصرف بهینه منابع سیستم.\n- **معایب:** نیاز به پیکربندی اولیه systemd در WSL2 برای توسعه‌دهندگان ویندوز.\n\n---"
    },
    {
      "level": 2,
      "heading": "تصمیم (Decision)",
      "content": "تصویب شد که پلتفرم NONS به صورت رسمی به **Model B** منتقل شود:\n1.  **حذف داکر دیمون:** در توسعه محلی و عملیات، کلاستر K3s به صورت مستقیم و بدون نیاز به موتور داکر اجرا می‌شود.\n2.  **ران‌تایم کانتینر:** ابزار **containerd** توکار K3s وظیفه اجرا و مدیریت کانتینرها را بر عهده دارد. برای تعامل مستقیم از ابزار `ctr` یا `nerdctl` به جای دستورات داکر استفاده می‌شود.\n3.  **یکپارچه‌سازی کامل:** هیچ‌کدام از ابزارهای اتوماسیون استقرار یا عیب‌یابی نباید به ابزارها یا فایل‌های داکر (docker-compose یا docker client) متکی باشند.\n\n---"
    },
    {
      "level": 2,
      "heading": "پیامدها (Consequences)",
      "content": ""
    },
    {
      "level": 3,
      "heading": "پیامدهای مثبت (Positive)",
      "content": "- **پایداری صد در صدی:** حذف داکر دسکتاپ به عنوان یک لایه اضافی و سنگین، سرعت بالا آمدن کلاستر محلی را تا ۳ برابر افزایش داده و مصرف رم را به شدت کاهش می‌دهد.\n- **امنیت بیشتر:** عدم نصب داکر دیمون و عدم اشتراک‌گذاری سوکت مخرب `docker.sock` ریسک امنیتی نشت دسترسی روت را به صفر می‌رساند.\n- **همسویی کامل با پروداکشن:** توسعه‌دهندگان دقیقاً روی همان نسخه‌ای از K3s با containerd کار می‌کنند که در محیط پروداکشن نهایی مستقر است."
    },
    {
      "level": 3,
      "heading": "پیامدهای منفی (Negative)",
      "content": "- توسعه‌دهندگانی که روی ویندوز بدون WSL2 یا مک فاقد شبیه‌ساز لینوکس کار می‌کنند، باید از ابزارهایی مانند Rancher Desktop با موتور containerd (به جای Docker Daemon) استفاده کنند."
    }
  ]
}