Salta ai contenuti

k8sgpt offline

Finestra del terminale
helm show values oci://registry.internal/ai/charts/k8sgpt-operator > k8sgpt-operator-values.yaml

Individua le chiavi dell’immagine dell’operator e i pull secret:

Finestra del terminale
grep -n -A3 -E 'image:|repository:|imagePullSecrets' k8sgpt-operator-values.yaml
Finestra del terminale
kubectl create namespace k8sgpt-operator-system
Finestra del terminale
kubectl -n k8sgpt-operator-system create secret docker-registry registry-internal --docker-server=registry.internal --docker-username=<user> --docker-password=<token>
Finestra del terminale
helm upgrade --install k8sgpt-operator oci://registry.internal/ai/charts/k8sgpt-operator -n k8sgpt-operator-system --set controllerManager.manager.image.repository=registry.internal/ai/k8sgpt-operator --set serviceMonitor.enabled=true

Se il nome della chiave è diverso nella tua versione, usa quello trovato con il grep sopra. Su OpenShift con IDMS applicato non serve cambiare repository.

Finestra del terminale
cat > k8sgpt-offline.yaml <<'EOF2'
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
name: k8sgpt-offline
namespace: k8sgpt-operator-system
spec:
ai:
enabled: true
backend: localai
model: qwen2.5:14b-instruct
baseUrl: http://ollama.ai-llm.svc:11434/v1
noCache: false
repository: registry.internal/ai/k8sgpt
version: v0.4.1
filters:
- Pod
- Service
- PersistentVolumeClaim
- Deployment
- StatefulSet
- CronJob
- Ingress
- Node
EOF2

Con vLLM: baseUrl: http://vllm.ai-llm.svc:8000/v1 e model: qwen2.5-14b-instruct.

Finestra del terminale
kubectl explain k8sgpt.spec
Finestra del terminale
kubectl apply -f k8sgpt-offline.yaml

Etichetta il namespace per la NetworkPolicy di ai-llm (vedi RBAC e sicurezza):

Finestra del terminale
kubectl label namespace k8sgpt-operator-system ai-llm-access=true
Finestra del terminale
kubectl -n k8sgpt-operator-system get pods
Finestra del terminale
kubectl -n k8sgpt-operator-system logs deploy/k8sgpt-offline --tail=50
Finestra del terminale
kubectl -n k8sgpt-operator-system get results -o custom-columns=KIND:.spec.kind,NAME:.spec.name,PARENT:.spec.parentObject

Su cluster grandi i Result possono essere centinaia. Riduci i filtri ai tipi utili al tuo team e usa l’analisi CLI mirata per i namespace applicativi:

Finestra del terminale
k8sgpt analyze --namespace <app-namespace> --filter Pod,Service --explain

Dal bastion, la CLI punta allo stesso LLM interno tramite port-forward:

Finestra del terminale
kubectl -n ai-llm port-forward svc/ollama 11434:11434
Finestra del terminale
k8sgpt auth add --backend localai --model qwen2.5:14b-instruct --baseurl http://localhost:11434/v1