K8sGPT Operator
Prerequisites
- To begin you will require a Kubernetes cluster available and
KUBECONFIG
set. - You will also need to install helm v3. See the Helm documentation for more information.
Operator Installation
To install the operator, run the following command:
helm repo add k8sgpt https://charts.k8sgpt.ai/
helm repo update
helm install release k8sgpt/k8sgpt-operator -n k8sgpt-operator-system --create-namespace
This will install the Operator into the cluster, which will await a K8sGPT
resource before anything happens.
Deploying an OpenAI secret
Whilst there are multiple backends supported ( OpenAI, Azure OpenAI and Local ), in this example we'll use OpenAI. Whatever backend you are using, you need to make sure to have a secret that works with the backend.
For instance, this means you will need to install your OpenAI token as a secret into the cluster:
kubectl create secret generic k8sgpt-sample-secret --from-literal=openai-api-key=$OPENAI_TOKEN -n k8sgpt-operator-system
Deploying a K8sGPT resource
To deploy a K8sGPT resource, you will need to create a YAML file with the following contents:
kubectl apply -f - << EOF
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
name: k8sgpt-sample
namespace: k8sgpt-operator-system
spec:
ai:
enabled: true
model: gpt-3.5-turbo
backend: openai
secret:
name: k8sgpt-sample-secret
key: openai-api-key
# anonymized: false
# language: english
noCache: false
version: v0.3.17
# filters:
# - Ingress
# sink:
# type: slack
# webhook: <webhook-url>
# extraOptions:
# backstage:
# enabled: true
EOF
Please replace the <VERSION>
field with the current release of K8sGPT. At the time of writing this is v0.3.17
.
Regarding out-of-cluster traffic to AI backends
In the above example enableAI
is set to true
.
This option allows the cluster deployment to use the backend
to filter and improve the responses to the user.
Those responses will appear as details
within the Result
custom resources that are created.
The default backend in this example is OpenAI and allows for additional details to be generated and solutions provided for issues.
If you wish to disable out-of-cluster communication and any Artificial Intelligence processing through models, simply set enableAI
to false
.
It should also be noted that localai
and azureopenai
are supported and in-cluster models will be supported in the near future
Viewing the results
Once the initial scans have been completed after several minutes, you will be presented with results custom resources.
❯ kubectl get results -o json | jq .
{
"apiVersion": "v1",
"items": [
{
"apiVersion": "core.k8sgpt.ai/v1alpha1",
"kind": "Result",
"metadata": {
"creationTimestamp": "2023-04-26T09:45:02Z",
"generation": 1,
"name": "placementoperatorsystemplacementoperatorcontrollermanagermetricsservice",
"namespace": "default",
"resourceVersion": "108371",
"uid": "f0edd4de-92b6-4de2-ac86-5bb2b2da9736"
},
"spec": {
"details": "The error message means that the service in Kubernetes doesn't have any associated endpoints, which should have been labeled with \"control-plane=controller-manager\". \n\nTo solve this issue, you need to add the \"control-plane=controller-manager\" label to the endpoint that matches the service. Once the endpoint is labeled correctly, Kubernetes can associate it with the service, and the error should be resolved.",
...