برنامه نویسی

ابزار ابزار: یک اپراتور MCP Kubernetes

مقدمه

با تکیه بر بحث قبلی ما در مورد بنگاه هایی که نیاز به میزبانی اختصاصی برای سرورهای MCP و راه حل مبتنی بر Kubernetes Toolhive دارند ، ما هیجان زده هستیم که اپراتور جدید Kubernetes خود را برای ابزار ابزار اعلام کنیم. این ابزار تخصصی استقرار ایمن سرورهای MCP را به محیط های Kubernetes برای شرکت ها و مهندسان ساده می کند.

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

بیایید درست پرش کنیم! 🚀

استقرار اپراتور

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

برای راه اندازی برنامه ریزی محلی ساده با نوع ، ما از یک IP اساسی با تعادل بار نوع استفاده می کنیم – برای مراحل آسان در مورد نحوه انجام این کار ، راهنمای ما را دنبال کنید. برای ساده نگه داشتن کارها ، ما در این مجموعه از نام میزبان محلی استفاده نخواهیم کرد.

اکنون ، با یک خوشه در حال اجرا ، دستورات زیر را اجرا کنید (به یاد داشته باشید که تنظیم کنید --kubeconfig وت --kube-context پرچم ها در صورت لزوم).

  1. تعاریف منابع سفارشی اپراتور ToolHive (CRD) را اعمال کنید:

    $ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/crds/toolhive.stacklok.dev_mcpservers.yaml
    
  2. فضای نام اپراتور را ایجاد کنید:

    $ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/namespace.yaml
    
  3. منابع کنترل دسترسی مبتنی بر نقش (RBAC) منابع:

    $ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/rbac.yaml
    $ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/toolhive_rbac.yaml
    
  4. استقرار اپراتور:

    $ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/operator.yaml
    

در این مرحله ، اپراتور Toolhive Kubernetes اکنون باید نصب و اجرا شود.

برای تأیید این موضوع ، موارد زیر را اجرا کنید:

$ kubectl get pods -n toolhive-system

NAME                                READY   STATUS    RESTARTS   AGE
toolhive-operator-7f946d9c5-9s8dk   1/1     Running   0          59s
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سرور MCP را مستقر کنید

اکنون برای نصب یک نمونه fetch سرور MCP ، موارد زیر را اجرا کنید:

$ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/samples/mcpserver_fetch.yaml
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

برای تأیید این نصب ، موارد زیر را اجرا کنید:

$ kubectl get pods -n toolhive-system -l toolhive=true

NAME                     READY   STATUS    RESTARTS   AGE
fetch-0                  1/1     Running   0          115s
fetch-649c5b958c-nhjbq   1/1     Running   0          2m1s
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

همانطور که در بالا نشان داده شده است ، 2 غلاف در حال اجرا هستند. سرور Fetch MCP (fetch-0) یک غلاف مرتبط با سرور MCP است StatefulSetبشر دیگری – fetch-xxxxxxxxxx-xxxxx – آیا سرور پروکسی است که با تمام ارتباطات بین fetch سرور MCP و تماس گیرندگان خارجی.

با نگاهی به عقب ، بیایید نحوه ایجاد سرور MCP را مرور کنیم. در اینجا منبع سرور Fetch MCP است که ما برای خوشه استفاده کرده ایم.

apiVersion: toolhive.stacklok.dev/v1alpha1
kind: MCPServer
metadata:
  name: fetch
  namespace: toolhive-system
spec:
  image: docker.io/mcp/fetch
  transport: stdio
  port: 8080
  permissionProfile:
    type: builtin
    name: network
  resources:
    limits:
      cpu: "100m"
      memory: "128Mi"
    requests:
      cpu: "50m"
      memory: "64Mi"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اپراتور Toolhive یک منبع سفارشی جدید به نام: مک پیروربشر در اینجا تجزیه و تحلیل پیکربندی MCPSERVER آورده شده است:

  1. transport: stdio – این باعث ایجاد سرور MCP می شود که فقط ترافیک stdin و stdout را فراهم می کند. در Kubernetes این منجر به اتصال سرور پروکسی از طریق API Kubernetes می شود. دسترسی دیگری به تماس گیرنده داده نمی شود.
  2. permissionProfile.type: builtin – این به پروفایل های داخلی با ابزار ابزار اشاره می کند
  3. permissionProfile.name: network – اتصالات شبکه برون مرزی را به هر میزبان در هر درگاه (برای استفاده از تولید توصیه نمی شود) اجازه می دهد.

اکنون برای اتصال یک مشتری مثال مانند مکان نما به سرور MCP ما ، می توانیم این کار را به سادگی با یک رکورد ورود که توسط متعادل کننده بار که قبلاً ذکر شد فعال کنیم.

ما می توانیم ورودی ورود زیر را اعمال کنیم ، اطمینان حاصل کنیم که ingressClassName مطابق آنچه در خوشه ما داریم مطابقت دارد.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mcp-fetch-ingress
  namespace: toolhive-system
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: mcp-fetch-proxy
            port:
              number: 8080
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در این مرحله ما باید بتوانیم با استفاده از آدرس IP خارجی متعادل بار خود ، به سرور MCP در حال اجرا متصل شویم.

توجه: اگر شما نوع دیگری را برای خوشه انتخاب نکرده اید و یک تنظیم متعادل بار متفاوت از آنچه در این پست دنبال می شود ، باید تغییرات مربوط به پیکربندی خود را ایجاد کنید تا ترافیک Ingress را به سرویس پروکسی Fetch Server ارسال کنید.

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

برای مکان نما ، ما به آنجا می رویم Users/$USERNAME/.cursor/mcp.json، اطمینان از جایگزینی $USERNAME با نام کاربری دایرکتوری خانه ما و موارد زیر را اضافه می کنیم:

{
    "mcpServers": {
        "fetch": {"url": "http://localhost:8080/sse#fetch"}
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حال ، اگر وارد چت مکان نما شویم ، و از آن می خواهیم که محتوای یک صفحه وب را واگذار کند ، باید از ما بخواهد که برای استفاده از آنها تأیید کند fetch سرور MCP و سپس محتوا را برگردانید.

مکان نما MCP

اکنون اگر سیاهههای مربوط را برای fetch سرور MCP.

$ {"jsonrpc": "2.0" ، "id": 2 ، "نتیجه": {"محتوا":[{"type":"text","text":"Contents of https://chrisjburns.com/:\n\n\nchrisjburns\n\n# Chris Burns\n\n## Software engineer\n\n"}]، "iserror": false}} $ "jsonrpc": "2.0" ، "id": 2 ، "نتیجه": {"محتوا":[{"type":"text","text":"Content type text/html; charset=utf-8 cannot be simplified to markdown, but here is the raw content:\nContents of https://chrisjburns.com/:\nchrisjburns
avatar

Software engineer

\"Chris
"}]، "iserror": false}}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در آنجا ما آن را داریم ، یک سرور MCP ، با استفاده از اپراتور جدید Toolhive که در Kubernetes ایجاد شده است.

خلاصه

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

آن را امتحان کنید و به ما بگویید که چه فکر می کنید!

پیوندهای اساسی:

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا