هذا المشروع هو مكون إضافي kubectl لإنشاء وتطبيق Cubernetes Exhivesters باستخدام Openai GPT.
دافعي الرئيسي هو تجنب إيجاد وجمع البيان العشوائية عند DEV/اختبار الأشياء.
أضف إلى brew Tap والتثبيت مع:
brew tap sozercan/kubectl-ai https://github.com/sozercan/kubectl-ai
brew install kubectl-ai أضف إلى فهرس krew وتثبيت مع:
kubectl krew index add kubectl-ai https://github.com/sozercan/kubectl-ai
kubectl krew install kubectl-ai/kubectl-aiقم بتنزيل الثنائي من إصدارات Github.
إذا كنت ترغب في استخدام هذا كمكون إضافي kubectl ، فقم بنسخ kubectl-ai إلى PATH . إذا لم يكن الأمر كذلك ، يمكنك أيضًا استخدام المستقل الثنائي.
يتطلب kubectl-ai تكوين Kubernetes صالح وواحد مما يلي:
بالنسبة لـ Openai أو Azure Openai أو Openai API نقطة النهاية ، يمكنك استخدام متغيرات البيئة التالية:
export OPENAI_API_KEY= < your OpenAI key >
export OPENAI_DEPLOYMENT_NAME= < your OpenAI deployment/model name. defaults to " gpt-3.5-turbo-0301 " >
export OPENAI_ENDPOINT= < your OpenAI endpoint, like " https://my-aoi-endpoint.openai.azure.com " or " http://localhost:8080/v1 " > إذا تم تعيين متغير OPENAI_ENDPOINT ، فسيستخدم نقطة النهاية. خلاف ذلك ، سوف يستخدم Openai API.
خدمة Azure Openai لا تسمح ببعض الشخصيات ، مثل . ، في اسم النشر. وبالتالي ، ستحل kubectl-ai تلقائيًا محل gpt-3.5-turbo إلى gpt-35-turbo لـ Azure. ومع ذلك ، إذا كنت تستخدم اسم النشر Azure Openai مختلف تمامًا عن اسم النموذج ، فيمكنك تعيين متغير AZURE_OPENAI_MAP للبيئة لتعيين اسم النموذج إلى اسم نشر Azure Openai. على سبيل المثال:
export AZURE_OPENAI_MAP= " gpt-3.5-turbo=my-deployment "إذا لم يكن لديك وصول Openai API ، فيمكنك إعداد نقطة نهاية متوافقة مع API Openai المحلية باستخدام Aikit على جهازك المحلي دون أي وحدات معالجة الرسومات! لمزيد من المعلومات ، راجع Aikit Documentaton.
docker run -d --rm -p 8080:8080 ghcr.io/sozercan/llama3.1:8b
export OPENAI_ENDPOINT= " http://localhost:8080/v1 "
export OPENAI_DEPLOYMENT_NAME= " llama-3.1-8b-instruct "
export OPENAI_API_KEY= " n/a " بعد إعداد البيئة كما هو مذكور أعلاه ، يمكنك استخدام kubectl-ai كالمعتاد.
-يمكن تعيين علامة --require-confirmation أو متغير البيئة REQUIRE_CONFIRMATION للمطالبة بالمستخدم للتأكيد قبل تطبيق البيان. الافتراضات إلى صواب.
-يمكن ضبط العلم في --temperature أو متغير بيئة TEMPERATURE بين 0 و 1. درجة الحرارة الأعلى ستؤدي إلى المزيد من الإكمال الإبداعي. انخفاض درجة الحرارة سوف يؤدي إلى مزيد من الانتهاء الحتمية. الافتراضات إلى 0.
--use-k8s-api flag أو USE_K8S_API يمكن تعيين متغير البيئة لاستخدام مواصفات kubernetes openapi لإنشاء البيان. سيؤدي ذلك إلى إكمال دقيقة للغاية بما في ذلك CRD (إذا كانت موجودة في الكتلة المكونة). سيستخدم هذا الإعداد المزيد من مكالمات API Openai ويتطلب استدعاء الوظائف المتوفرة في النماذج 0613 أو الأحدث فقط. الإعدادات الافتراضية إلى خطأ. ومع ذلك ، ينصح هذا بالدقة والاكتمال.
-العلم --k8s-openapi-url أو K8S_OPENAPI_URL ، يمكن ضبط متغير البيئة لاستخدام عنوان URL OpenAPI Openapi المخصص. يتم استخدام هذا فقط إذا تم تعيين- --use-k8s-api . بشكل افتراضي ، ستستخدم kubectl-ai خادم API Kubernetes الذي تم تكوينه للحصول على المواصفات ما لم يتم تكوين هذا الإعداد. يمكنك استخدام مواصفات Kubernetes Openapi الافتراضية أو إنشاء مواصفات مخصصة للإكمال التي تتضمن تعريفات الموارد المخصصة (CRDs). يمكنك إنشاء مواصفات OpenAPI مخصصة باستخدام kubectl get --raw /openapi/v2 > swagger.json .
يمكن استخدام KUBECTL AI مع إدخال الأنابيب والإخراج. على سبيل المثال:
$ cat foo-deployment.yaml | kubectl ai " change replicas to 5 " --raw | kubectl apply -f -$ cat foo-deployment.yaml | kubectl ai " change replicas to 5 " --raw > my-deployment-updated.yaml إذا كنت ترغب في استخدام محرر خارجي لتحرير البيان الذي تم إنشاؤه ، فيمكنك ضبط علامة --raw والأنبوب على المحرر الذي تختاره. على سبيل المثال:
# Visual Studio Code
$ kubectl ai " create a foo namespace " --raw | code -
# Vim
$ kubectl ai " create a foo namespace " --raw | vim -$ kubectl ai " create an nginx deployment with 3 replicas "
Attempting to apply the following manifest:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Use the arrow keys to navigate: ↓ ↑ → ←
? Would you like to apply this ? [Reprompt/Apply/Don ' t Apply]:
+ Reprompt
▸ Apply
Don ' t Apply...
Reprompt: update to 5 replicas and port 8080
Attempting to apply the following manifest:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 5
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 8080
Use the arrow keys to navigate: ↓ ↑ → ←
? Would you like to apply this ? [Reprompt/Apply/Don ' t Apply]:
+ Reprompt
▸ Apply
Don ' t Apply$ kubectl ai " create a foo namespace then create nginx pod in that namespace "
Attempting to apply the following manifest:
apiVersion: v1
kind: Namespace
metadata:
name: foo
---
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: foo
spec:
containers:
- name: nginx
image: nginx:latest
Use the arrow keys to navigate: ↓ ↑ → ←
? Would you like to apply this ? [Reprompt/Apply/Don ' t Apply]:
+ Reprompt
▸ Apply
Don ' t Apply--require-confirmation $ kubectl ai " create a service with type LoadBalancer with selector as 'app:nginx' " --require-confirmation=false
Attempting to apply the following manifest:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: LoadBalancerيرجى ملاحظة أن المكون الإضافي لا يعرف الحالة الحالية للمجموعة (حتى الآن؟) ، لذلك سوف يولد دائمًا البيان الكامل.