OpenClaw على Kubernetes
نقطة بداية دنيا لتشغيل OpenClaw على Kubernetes — وليست نشرًا جاهزًا للإنتاج. وهي تغطي الموارد الأساسية والمقصود أن تُكيَّف مع بيئتك.لماذا ليس Helm؟
OpenClaw عبارة عن حاوية واحدة مع بعض ملفات التكوين. أما التخصيص المثير للاهتمام فهو في محتوى الوكيل (ملفات markdown وSkills وتجاوزات التكوين)، وليس في templating البنية التحتية. يتعامل Kustomize مع overlays من دون الحمل الزائد لمخطط Helm. وإذا أصبح النشر لديك أكثر تعقيدًا، فيمكن إضافة مخطط Helm فوق هذه manifests.ما الذي تحتاجه
- عنقود Kubernetes يعمل (AKS أو EKS أو GKE أو k3s أو kind أو OpenShift أو غيرها)
kubectlمتصل بالعنقود لديك- مفتاح API لمزوّد نماذج واحد على الأقل
بدء سريع
./scripts/k8s/deploy.sh --show-token الرمز بعد النشر.
الاختبار المحلي باستخدام Kind
إذا لم يكن لديك عنقود، فأنشئ واحدًا محليًا باستخدام Kind:./scripts/k8s/deploy.sh.
خطوة بخطوة
1) النشر
الخيار A — مفتاح API في البيئة (خطوة واحدة):--show-token مع أي من الأمرين إذا كنت تريد طباعة الرمز إلى stdout للاختبار المحلي.
2) الوصول إلى gateway
ما الذي يتم نشره
التخصيص
تعليمات الوكيل
حرّرAGENTS.md في scripts/k8s/manifests/configmap.yaml ثم أعد النشر:
تكوين gateway
حرّرopenclaw.json في scripts/k8s/manifests/configmap.yaml. راجع Gateway configuration للحصول على المرجع الكامل.
إضافة مزوّدين
أعد التشغيل مع تصدير مفاتيح إضافية:مساحة أسماء مخصصة
صورة مخصصة
حرّر الحقلimage في scripts/k8s/manifests/deployment.yaml:
الكشف خارج port-forward
تربط manifests الافتراضية gateway بعنوان loopback داخل pod. وهذا يعمل معkubectl port-forward، لكنه لا يعمل مع مسار Kubernetes Service أو Ingress يحتاج إلى الوصول إلى IP الخاص بالـ pod.
إذا كنت تريد كشف gateway عبر Ingress أو موازن حمل:
- غيّر ربط gateway في
scripts/k8s/manifests/configmap.yamlمنloopbackإلى ربط غير loopback يطابق نموذج النشر لديك - أبقِ مصادقة gateway مفعلة واستخدم نقطة دخول صحيحة مع إنهاء TLS
- اضبط Control UI للوصول البعيد باستخدام نموذج أمان الويب المدعوم (مثل HTTPS/Tailscale Serve وقوائم allowed origins صريحة عند الحاجة)
إعادة النشر
الإزالة
ملاحظات معمارية
- ترتبط gateway بعنوان loopback داخل pod افتراضيًا، لذا فإن الإعداد المضمّن مخصص لـ
kubectl port-forward - لا توجد موارد على مستوى العنقود — كل شيء يعيش داخل مساحة أسماء واحدة
- الأمان:
readOnlyRootFilesystem، وإسقاط قدراتdrop: ALL، ومستخدم غير root (UID 1000) - يبقي التكوين الافتراضي Control UI على مسار الوصول المحلي الأكثر أمانًا: ربط loopback بالإضافة إلى
kubectl port-forwardإلىhttp://127.0.0.1:18789 - إذا تجاوزت الوصول من localhost، فاستخدم النموذج البعيد المدعوم: HTTPS/Tailscale مع ربط gateway المناسب وإعدادات origin الخاصة بـ Control UI
- تُولَّد الأسرار في دليل مؤقت وتُطبّق مباشرةً على العنقود — ولا تُكتب أي مواد سرية إلى نسخة المستودع المحلية