Note OpenShift
| Componente | SCC | Nota |
|---|---|---|
| k8sgpt operator e runtime | restricted-v2 |
nessuna modifica |
| Ollama | restricted-v2 |
rimuovi runAsUser/fsGroup dal manifest; HOME=/data scrivibile |
| vLLM | restricted-v2 |
HOME=/tmp; GPU via device plugin, nessun privilegio |
| HolmesGPT | restricted-v2 |
nessuna modifica |
Verifica quale SCC è stata assegnata:
oc -n ai-llm get pod -l app=ollama -o jsonpath='{.items[0].metadata.annotations.openshift\.io/scc}{"\n"}'oc -n ai-llm get events --field-selector reason=FailedCreatePrometheus di piattaforma (Thanos Querier)
Sezione intitolata “Prometheus di piattaforma (Thanos Querier)”In OpenShift non serve kube-prometheus-stack: si usa Thanos Querier, che richiede un token con ruolo cluster-monitoring-view.
oc adm policy add-cluster-role-to-user cluster-monitoring-view -z ai-readonly -n ai-toolsoc adm policy add-cluster-role-to-user cluster-monitoring-view -z <holmes-sa> -n holmesURL interno:
https://thanos-querier.openshift-monitoring.svc:9091Test dal bastion:
TOKEN=$(oc -n ai-tools create token ai-readonly --duration=1h)HOST=$(oc -n openshift-monitoring get route thanos-querier -o jsonpath='{.spec.host}')curl -sk -H "Authorization: Bearer $TOKEN" "https://$HOST/api/v1/query?query=up" | jq '.data.result | length'Nella configurazione del toolset Prometheus di HolmesGPT servono l’URL https e l’header Authorization: Bearer <token>: controlla nella documentazione del toolset come passare header e CA (service-ca). Il token del SA montato nel pod si trova in /var/run/secrets/kubernetes.io/serviceaccount/token.
Alertmanager di piattaforma
Sezione intitolata “Alertmanager di piattaforma”https://alertmanager-main.openshift-monitoring.svc:9094Richiede lo stesso token. Per gli alert dei workload utente (UWM):
oc -n openshift-user-workload-monitoring get svcImmagini mirrorate e IDMS
Sezione intitolata “Immagini mirrorate e IDMS”Con gli IDMS generati da oc-mirror i manifest possono mantenere i nomi originali (docker.io/ollama/ollama): il pull viene rediretto al registry interno.
oc get imagedigestmirrorset,imagetagmirrorsetoc debug node/<worker> -- chroot /host cat /etc/containers/registries.conf.d/*.conf | head -40Attenzione: IDMS funziona solo per pull by digest; per pull by tag serve ITMS.
Pull secret
Sezione intitolata “Pull secret”oc -n ai-llm create secret docker-registry registry-internal --docker-server=registry.internal --docker-username=<user> --docker-password=<token>oc -n ai-llm secrets link default registry-internal --for=pullDa OperatorHub mirrorato: Node Feature Discovery e NVIDIA GPU Operator.
oc get csv -n nvidia-gpu-operatoroc get nodes -l nvidia.com/gpu.present=trueoc describe node <gpu-node> | grep -A2 nvidia.com/gpuNamespace e label
Sezione intitolata “Namespace e label”oc new-project ai-llmoc label namespace k8sgpt-operator-system holmes ai-tools ai-llm-access=true --overwrite