โครงการนี้เป็นปลั๊กอิน kubectl ที่จะสร้างและใช้ Kubernetes ปรากฏโดยใช้ 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 Binary ไปยัง PATH ของคุณ ถ้าไม่คุณสามารถใช้แบบสแตนด์อโลนไบนารีได้
kubectl-ai ต้องการการกำหนดค่า Kubernetes ที่ถูกต้องและหนึ่งในสิ่งต่อไปนี้:
สำหรับ OpenAI, Azure OpenAI หรือ OpenAI API Endpoint คุณสามารถใช้ตัวแปรสภาพแวดล้อมต่อไปนี้:
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 คุณสามารถตั้งค่าจุดสิ้นสุดที่เข้ากันได้กับ OpenAI API ในพื้นที่โดยใช้ Aikit บนเครื่องในเครื่องของคุณโดยไม่ต้อง GPU! สำหรับข้อมูลเพิ่มเติมดู 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 Spec เพื่อสร้างรายการ ซึ่งจะส่งผลให้เกิดความสำเร็จที่แม่นยำมากรวมถึง CRDs (ถ้ามีอยู่ในคลัสเตอร์ที่กำหนดค่า) การตั้งค่านี้จะใช้การโทร OpenAI API มากขึ้นและต้องมีการเรียกใช้ฟังก์ชันซึ่งมีอยู่ในรุ่น 0613 หรือใหม่กว่าเท่านั้น ค่าเริ่มต้นเป็นเท็จ อย่างไรก็ตามนี่เป็นคำแนะนำเพื่อความแม่นยำและความสมบูรณ์
--k8s-openapi-url flag หรือตัวแปรสภาพแวดล้อม K8S_OPENAPI_URL สามารถตั้งค่าให้ใช้ URL Spec Kubernetes ที่กำหนดเองได้ สิ่งนี้จะใช้เฉพาะในกรณีที่ --use-k8s-api โดยค่าเริ่มต้น kubectl-ai จะใช้เซิร์ฟเวอร์ Kubernetes API ที่กำหนดค่าไว้เพื่อรับข้อมูลจำเพาะเว้นแต่ว่าการตั้งค่านี้จะถูกกำหนดค่า คุณสามารถใช้ข้อมูลจำเพาะ 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 FLAG และ PIPE ไปยังตัวเลือกที่คุณเลือก ตัวอย่างเช่น:
# 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โปรดทราบว่าปลั๊กอินไม่ทราบสถานะปัจจุบันของคลัสเตอร์ (ยัง?) ดังนั้นมันจะสร้างรายการทั้งหมดเสมอ